ソースを参照

Merge remote-tracking branch 'origin/xodud1202' into xodud1202

xodud lee 5 年 前
コミット
b59043678c
96 ファイル変更7583 行追加1156 行削除
  1. 246 0
      src/main/java/com/style24/front/biz/thirdparty/EigeneaiApi.java
  2. 1 0
      src/main/java/com/style24/front/biz/web/TsfCommonController.java
  3. 7 1
      src/main/java/com/style24/front/biz/web/TsfCustomerController.java
  4. 23 5
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  5. 18 0
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  6. 5 0
      src/main/java/com/style24/front/biz/web/TsfIndexController.java
  7. 1 1
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  8. 126 8
      src/main/java/com/style24/front/biz/web/TsfNoMemberController.java
  9. 1 2
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  10. 62 0
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  11. 7 0
      src/main/java/com/style24/persistence/domain/Plan.java
  12. 46 0
      src/main/java/com/style24/persistence/domain/eigene/Eigeneai.java
  13. 52 28
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  14. 11 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  15. 43 9
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  16. 2 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  17. 2 2
      src/main/webapp/WEB-INF/views/mob/SigninFormMob.html
  18. 1 1
      src/main/webapp/WEB-INF/views/mob/SnsCallBackFormMob.html
  19. 2 2
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  20. 4 0
      src/main/webapp/WEB-INF/views/mob/common/layout/NoMemberLayoutMob.html
  21. 144 0
      src/main/webapp/WEB-INF/views/mob/customer/ConsentUseInfoFormMob.html
  22. 1 1
      src/main/webapp/WEB-INF/views/mob/customer/JoinFormMob.html
  23. 15 1
      src/main/webapp/WEB-INF/views/mob/customer/PrivacyPolicyLayerFormMob.html
  24. 14 0
      src/main/webapp/WEB-INF/views/mob/customer/PrivacyTrustLayerFormMob.html
  25. 14 1
      src/main/webapp/WEB-INF/views/mob/customer/UseTermsLayerFormMob.html
  26. 330 189
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  27. 164 26
      src/main/webapp/WEB-INF/views/mob/display/LookbookMainFormMob.html
  28. 7 8
      src/main/webapp/WEB-INF/views/mob/goods/GoodsCouponFormMob.html
  29. 14 12
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  30. 21 7
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  31. 2 3
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewDetailFormMob.html
  32. 8 4
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewPhotoFormMob.html
  33. 21 21
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html
  34. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  35. 27 41
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListFormMob.html
  36. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListInfoMob.html
  37. 5 5
      src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html
  38. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  39. 296 37
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  40. 20 43
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html
  41. 96 41
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  42. 27 28
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html
  43. 660 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCancelFormMob.html
  44. 223 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html
  45. 316 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreExchangeDetailFormMob.html
  46. 20 14
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListFormMob.html
  47. 3 3
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListInfoMob.html
  48. 335 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html
  49. 368 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberDeliveryInfoFormMob.html
  50. 769 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html
  51. 784 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html
  52. 26 15
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderListFormMob.html
  53. 6 6
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderListInfoMob.html
  54. 890 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberReturnFormMob.html
  55. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentFormMob.html
  56. 7 2
      src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html
  57. 8 2
      src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html
  58. 106 42
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  59. 7 2
      src/main/webapp/WEB-INF/views/mob/order/OrderNoMemberMob.html
  60. 225 242
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  61. 157 0
      src/main/webapp/WEB-INF/views/mob/planning/PlanningReplyPhotoFormMob.html
  62. 7 5
      src/main/webapp/WEB-INF/views/mob/popup/DelvAddrAddPopMob.html
  63. 12 10
      src/main/webapp/WEB-INF/views/mob/popup/DelvAddrModifyPopMob.html
  64. 2 2
      src/main/webapp/WEB-INF/views/web/SigninFormWeb.html
  65. 2 2
      src/main/webapp/WEB-INF/views/web/customer/ConsentUseInfoFormWeb.html
  66. 1 1
      src/main/webapp/WEB-INF/views/web/customer/JoinTypeFormWeb.html
  67. 8 8
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  68. 125 69
      src/main/webapp/WEB-INF/views/web/display/LookbookMainFormWeb.html
  69. 8 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  70. 17 8
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html
  71. 3 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsReviewPhotoFormWeb.html
  72. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreExchangeDetailFormWeb.html
  73. 2 9
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreListFormWeb.html
  74. 6 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageDeliveryInfoFormWeb.html
  75. 6 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  76. 10 10
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  77. 0 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCancelFormWeb.html
  78. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreExchangeDetailFormWeb.html
  79. 2 9
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreListFormWeb.html
  80. 254 0
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberDeliveryInfoFormWeb.html
  81. 5 5
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html
  82. 1 10
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html
  83. 1 1
      src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentCompleteWeb.html
  84. 0 10
      src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html
  85. 22 10
      src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html
  86. 16 0
      src/main/webapp/WEB-INF/views/web/order/OrderCouponApplyPopWeb.html
  87. 17 40
      src/main/webapp/WEB-INF/views/web/order/OrderDeliveryAddrInfoWeb.html
  88. 86 22
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  89. 5 0
      src/main/webapp/WEB-INF/views/web/order/OrderNoMemberWeb.html
  90. 1 3
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  91. 7 5
      src/main/webapp/WEB-INF/views/web/popup/DelvAddrAddPopWeb.html
  92. 12 10
      src/main/webapp/WEB-INF/views/web/popup/DelvAddrModifyPopWeb.html
  93. 97 11
      src/main/webapp/biz/goods.js
  94. 9 6
      src/main/webapp/biz/mypage.js
  95. 1 1
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollLayer.js
  96. 36 6
      src/main/webapp/ux/style24_link.js

+ 246 - 0
src/main/java/com/style24/front/biz/thirdparty/EigeneaiApi.java

@@ -0,0 +1,246 @@
+package com.style24.front.biz.thirdparty;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.annotation.PostConstruct;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import com.google.gson.Gson;
+import com.style24.persistence.domain.eigene.Eigeneai;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 추천솔루션 - Eigene.ai
+ *
+ * @author gagamel
+ * @since 2021. 5. 14
+ */
+@Component
+@Slf4j
+public class EigeneaiApi {
+
+	private String apiUrl = "http://api.eigene.io/rec";
+	private String cuid = "1252aed4-78dc-46e8-b784-94ac42e86dd4";
+
+	@Autowired
+	private RestTemplate restTemplate;
+
+	@PostConstruct
+	public void init() {
+		log.debug("\n\n---- Eigene.ai initialization started ----");
+		log.debug("apiUrl: [{}]", apiUrl);
+		log.debug("cuid: [{}]", cuid);
+		log.debug("\n--- Eigene.ai initialization completed ----\n");
+	}
+
+	/**
+	 * 주간베스트추천상품 목록
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getWeeklyBestGoodsList(int size) {
+		String requestUrl = apiUrl + "/m008?cuid=" + cuid + "&size=" + size;
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 카테고리별 주간베스트추천상품 목록
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getCategoryWeeklyBestGoodsList(int size) {
+		// TODO: 카테고리ID는 어떻게 조회? 아이겐 미개발
+		String requestUrl = apiUrl + "/m008?cuid=" + cuid + "&cids=" + "" + "&size=" + size;
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 월간클릭베스트추천상품 목록
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getMonthlyClickBestGoodsList(int size) {
+		// TODO: 아이겐 미개발
+		String requestUrl = apiUrl + "/m008?cuid=" + cuid + "&cids=" + "" + "&size=" + size;
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 실시간베스트상품 목록
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getRealtimeBestGoodsList(int size) {
+		String requestUrl = apiUrl + "/stats-transition?cuid=" + cuid + "&size=" + size;
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 매출급상승 카테고리별 상품 목록
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getSalesSoaringGoodsList() {
+		// TODO: 매출급상승 카테고리 5개 조회 후 카테고리별 상품 7개 조회
+		String requestUrl = apiUrl + "/m010?cuid=" + cuid + "&size=5";
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 고객의 최근검색어별 상품 목록
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Collection<Eigeneai> getCustomerKeywordGoodsList() {
+		Collection<Eigeneai> dataList = new ArrayList<>();
+
+		// 고객별 최근검색어 목록. TODO: 아이겐에서 미개발
+		String requestUrl = apiUrl + "/m010?cuid=" + cuid + "&size=5";
+		Eigeneai eigeneai = this.getRecommendationGoodsList(requestUrl);
+
+		Collection<Eigeneai.Result> resultList = eigeneai.getResults();
+		if (resultList == null || resultList.isEmpty()) {
+			return dataList;
+		}
+
+		// 고객별 최근검색어 기준 검색어연관상품 목록 조회
+		for (Eigeneai.Result result : resultList) {
+			dataList.add(this.getKeywordGoodsList(result.getCategoryId(), 10));
+		}
+
+		return dataList;
+	}
+
+	/**
+	 * 검색어연관상품 목록
+	 * @param keyword - 키워드
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getKeywordGoodsList(String keyword, int size) {
+		String requestUrl = apiUrl + "/s001?cuid=" + cuid + "&size=" + size;
+		try {
+			requestUrl += "&st=" + URLEncoder.encode(keyword, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 실시간 많이 조회되고 있는 상품 목록
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getRealtimeGoodsList(int size) {
+		String requestUrl = apiUrl + "/stream?cuid=" + cuid + "&size=" + size; //iids
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 연관상품 목록
+	 * @param goodsCd - 상품코드
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getRelatedGoodsList(String goodsCd, int size) {
+		String requestUrl = apiUrl + "/a003?cuid=" + cuid + "&iids=" + goodsCd + "&size=" + size;
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 브랜드 연관상품 목록
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getBrandRelatedGoodsList(int size) {
+		// TODO: 아이겐 미개발 (a004&cids=category3 or a002&inbids=brandId)
+		String requestUrl = apiUrl + "/a004?cuid=" + cuid + "&cids=" + "" + "&size=" + size;
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 동일 카테고리 연관상품 목록
+	 * @param goodsCd - 상품코드
+	 * @param size - 결과에 포함할 상품수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getSameCategoryRelatedGoodsList(String goodsCd, int size) {
+		String requestUrl = apiUrl + "/a002?cuid=" + cuid + "&iids=" + goodsCd + "&size=" + size;
+		return this.getRecommendationGoodsList(requestUrl);
+	}
+
+	/**
+	 * 상품의 실시간 조회수
+	 * @param goodsCd - 상품코드
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	public Eigeneai getRealtimeViewCount(String goodsCd) {
+		// TODO: 아이겐 미개발 (건수를 가져오는 걸로 해야하지 않을까?)
+		String requestUrl = apiUrl + "/stat?cuid=" + cuid + "&cids=" + goodsCd;
+		Eigeneai eigeneai = this.getRecommendationGoodsList(requestUrl);
+		return eigeneai;
+	}
+
+	/**
+	 * 추천상품 목록
+	 * @param requestUrl - Reqeust URL
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	private Eigeneai getRecommendationGoodsList(String requestUrl) {
+		log.info("requestUrl: {}", requestUrl);
+		URI url = URI.create(requestUrl);
+
+		// GET방식으로 호출
+		ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
+		log.info("responseEntity.getStatusCode(): {} ", responseEntity.getStatusCode());
+
+		String responseJson = responseEntity.getBody();
+		log.info("responseEntity.getBody(): {}", responseJson);
+
+		if (!responseEntity.getStatusCode().equals(HttpStatus.OK)) {
+			return null;
+		}
+
+		Gson gson = new Gson();
+		return gson.fromJson(responseJson, Eigeneai.class);
+	}
+
+}

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

@@ -275,6 +275,7 @@ public class TsfCommonController extends TsfBaseController {
 		
 		//deliveryAddrInfo.getRecipPhnno();
 		
+		mav.addObject("isLogin"			, TsfSession.isLogin());					// 로그인여부
 		mav.addObject("deliveryAddrInfo", deliveryAddrInfo);						// 배송지정보
 		mav.setViewName(super.getDeviceViewName("popup/DelvAddrModifyPop"));
 		

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

@@ -2,6 +2,7 @@ package com.style24.front.biz.web;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
+import javax.websocket.server.PathParam;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -878,6 +879,10 @@ public class TsfCustomerController extends TsfBaseController {
 		CustSnsInfo custSnsInfo = (CustSnsInfo)session.getAttribute("custSnsInfo");
 		session.removeAttribute("custSnsInfo"); // YES24 세션 지움
 
+		if (custSnsInfo == null) {
+			throw new IllegalStateException("연계정보 값이 없습니다. 고객센터에 문의하시기 바랍니다.");
+		}
+
 		// 1. SNS처리
 		GagaMap resultMap = customerService.customerSnsProcessing(custSnsInfo);
 		String custStat = resultMap.getString("custStat");
@@ -916,9 +921,10 @@ public class TsfCustomerController extends TsfBaseController {
 	 * @since 2021. 04. 01
 	 */
 	@PostMapping("/privacy/policy/layer")
-	public ModelAndView getPrivacyPolicyLayer() {
+	public ModelAndView getPrivacyPolicyLayer(HttpServletRequest request) {
 		ModelAndView mav = new ModelAndView();
 		mav.addObject("clause", clauseService.getClause(TscConstants.Site.STYLE24.value(), "G057_11"));
+		mav.addObject("mallGb", request.getParameter("mallGb"));
 		mav.setViewName(super.getDeviceViewName("customer/PrivacyPolicyLayerForm"));
 		return mav;
 	}

+ 23 - 5
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -470,12 +470,30 @@ public class TsfDisplayController extends TsfBaseController {
 	 * @author bin2107
 	 * @since 2021. 3. 30
 	 */
-	@GetMapping("/lookbook/main/list")
+//	@GetMapping("/lookbook/main/list")
+//	@ResponseBody
+//	public Collection<Lookbook> lookbooklist(Lookbook lookbook) {
+//		lookbook.setFrontGb(TsfSession.getFrontGb());
+//		lookbook.setFrontYn("Y");
+//		return coreLookbookService.getLookbookList(lookbook);
+//	}
+	@PostMapping("/lookbook/main/list")
 	@ResponseBody
-	public Collection<Lookbook> lookbooklist(Lookbook lookbook) {
-		lookbook.setFrontGb(TsfSession.getFrontGb());
-		lookbook.setFrontYn("Y");
-		return coreLookbookService.getLookbookList(lookbook);
+	public GagaMap lookbooklist(@RequestBody Lookbook params){
+		GagaMap result = new GagaMap();
+		TscPageRequest pageable = new TscPageRequest((params.getPageNo() > 0 ? params.getPageNo() - 1 : 0), params.getPageSize(), params.getPageUnit());
+		pageable.setTotalCount(coreLookbookService.getLookbookListCount(params));
+
+		params.setPageable(pageable);
+		result.set("paging", pageable);
+		result.set("dataList", coreLookbookService.getLookbookList(params));
+		return result;
+	}
+
+	@GetMapping("/lookbook/main/brand/list")
+	@ResponseBody
+	public Collection<Lookbook> lookbookBrandList(Lookbook lookbook){
+		return coreLookbookService.lookbookBrandList(lookbook);
 	}
 
 	/**

+ 18 - 0
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -30,6 +30,7 @@ import com.style24.front.biz.service.TsfRecentlyGoodsService;
 import com.style24.front.biz.service.TsfRendererService;
 import com.style24.front.biz.service.TsfReviewService;
 import com.style24.front.biz.service.TsfWishlistService;
+import com.style24.front.biz.thirdparty.EigeneaiApi;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.env.TsfConstants;
 import com.style24.front.support.security.session.TsfSession;
@@ -49,6 +50,7 @@ import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.Review;
 import com.style24.persistence.domain.SizeInfo;
 import com.style24.persistence.domain.WishList;
+import com.style24.persistence.domain.eigene.Eigeneai;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -104,6 +106,9 @@ public class TsfGoodsController extends TsfBaseController {
 	@Autowired
 	private TsfRecentlyGoodsService recentlyGoodsService;
 
+	@Autowired
+	private EigeneaiApi eigeneaiApi;
+
 	/**
 	 * 상품상세
 	 *
@@ -1575,4 +1580,17 @@ public class TsfGoodsController extends TsfBaseController {
 		return result;
 	}
 
+	/**
+	 * 상품상세 > 이 상품과 비슷한 상품
+	 * @param goodsCd - 상품코드
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 14
+	 */
+	@GetMapping("/same/category/goods/list/{goodsCd}")
+	@ResponseBody
+	public Eigeneai getSameCategoryGoodsList(@PathVariable String goodsCd) {
+		return eigeneaiApi.getSameCategoryRelatedGoodsList(goodsCd, 10);
+	}
+
 }

+ 5 - 0
src/main/java/com/style24/front/biz/web/TsfIndexController.java

@@ -360,6 +360,11 @@ public class TsfIndexController extends TsfBaseController {
 		GagaMap userInfo = new GagaMap();
 		log.info("ipn {}", ipn);
 		log.info("ipin {}", ipin);
+
+//		if (StringUtils.isBlank(ipn)) {
+//			ipin = "TQnw8ltThGlTy5cDnD0GW6ZgQ/OEH5FBFhjI5NFmCsZ+dmk3DHCFFcRSBT5+sLSIiReYKFUYnwfYGbW31Asj8picaODc8OHNxKjKwcl1hVEmZOeI5PT709zuMBUCR89sV6w3jpgX0QeAJPGdr+Lfmg==";
+//		}
+
 		if (StringUtils.isNotBlank(ipin)) {
 			userInfo = yes24Login.getUserInfo(ipin);
 			userInfo.setString("snsType", TscConstants.SnsType.YES24.value());

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

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

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

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

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

@@ -885,6 +885,7 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("goodsSumAmt"			, resultMap.get("goodsSumAmt"));		// 상품금액합계(판매가)
 		mav.addObject("goodsDcSumAmt"		, resultMap.get("goodsDcSumAmt"));		// 상품금액합계(정상가 - 판매가)
 		mav.addObject("delvFeeSumAmt"		, resultMap.get("delvFeeSumAmt"));		// 배송비합계
+		mav.addObject("realDelvSumAmt"		, resultMap.get("realDelvSumAmt"));		// 실제배송비합계
 		mav.addObject("cpn1DcSumAmt"		, resultMap.get("cpn1DcSumAmt"));		// 즉시할인합계
 		mav.addObject("tmtbSumAmt"			, resultMap.get("tmtbSumAmt"));			// 다다익선합계
 		mav.addObject("cpnDcSumAmt"			, resultMap.get("cpnDcSumAmt"));		// 쿠폰할인합계
@@ -1282,8 +1283,6 @@ public class TsfOrderController extends TsfBaseController {
 		param.setPayGb(TscConstants.PaymentGb.DELIVERY.value());
 		param.setUpdNo(param.getCustNo());
 		
-		log.info("CHECK CHG_SQ ::: {}", param.getOrdChgSq());
-		
 		// 2. 결재정보등록(TB_PAYMENT)
 		param = orderService.orderPgPayResult(param, request, response);
 		order.setOrdNo(param.getOrdNo());		

+ 62 - 0
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -39,6 +39,7 @@ import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.CustCoupon;
 import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Point;
 import com.style24.persistence.domain.Poll;
@@ -207,6 +208,13 @@ public class TsfPlanningController extends TsfBaseController {
 
 		// 상품2열 전시
 		plan.setTmplType("G082_51");
+		/*
+		 * if (TsfSession.getFrontGb().equals("M")) { TscPageRequest pageable = new
+		 * TscPageRequest((plan.getPageNo2() > 0 ? plan.getPageNo2() - 1 : 0),
+		 * plan.getPageSize2(), plan.getPageUnit2()); int totalCnt =
+		 * planningService.getPlanGoodsDisplayList(plan).size();
+		 * pageable.setTotalCount(totalCnt); plan.setPageable2(pageable); }
+		 */
 		mav.addObject("goods2Info", planningService.getPlanGoodsDisplayList(plan));
 
 		// 상품4열 전시
@@ -254,6 +262,41 @@ public class TsfPlanningController extends TsfBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 모바일 상품 2열 전시 더보기
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 05. 14
+	 */
+	@PostMapping("/goods/list")
+	@ResponseBody
+	public GagaMap getPlanningGoodsList(@RequestBody Plan plan) {
+		
+		plan.setSiteCd(TscConstants.Site.STYLE24.value());
+		if (TsfSession.isLogin()) {
+			plan.setCustNo(TsfSession.getInfo().getCustNo());
+		}
+		plan.setFrontGb(TsfSession.getFrontGb());
+		GagaMap result = new GagaMap();
+		plan.setTmplType("G082_51");
+		plan.setPlanStat("Y");
+		result.set("planGoods2List", planningService.getPlanGoodsDisplayList(plan).size());
+		
+		TscPageRequest pageable = new TscPageRequest((plan.getPageNo2() > 0 ? plan.getPageNo2() - 1 : 0), plan.getPageSize2(), plan.getPageUnit2());
+		int totalCnt = planningService.getPlanGoodsDisplayList(plan).size();
+		
+		pageable.setTotalCount(totalCnt);
+		plan.setPageable2(pageable);
+		result.set("paging1", plan);
+		result.set("totalCnt", totalCnt);
+		result.set("endRow", pageable.getEndRow());
+		result.set("dataList", planningService.getPlanGoodsDisplayList(plan));
+
+		return result;
+	}
+
+	
 	/**
 	 * 기획전 쿠폰 상세보기 팝업
 	 *
@@ -272,6 +315,25 @@ public class TsfPlanningController extends TsfBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 댓글이미지상세 -  댓글 상세 레이어
+	 * @return
+	 * @author sowon
+	 * @since 2021. 5. 15
+	 */
+	@PostMapping("/reply/detail/layer")
+	public ModelAndView planReplyDetailForm(Plan plan) {
+		ModelAndView mav = new ModelAndView();
+
+		// 상품 기본정보
+		mav.addObject("plan",plan);
+
+		mav.addObject("replyAttachList",planningService.getEntryReplyAttachList(plan));
+		mav.addObject("replyList",planningService.getReplyList(plan));
+		mav.setViewName(super.getDeviceViewName("planning/PlanningReplyPhotoForm"));
+		return mav;
+	}
+	
 	/**
 	 * 기획전/이벤트 댓글 리스트
 	 *

+ 7 - 0
src/main/java/com/style24/persistence/domain/Plan.java

@@ -210,6 +210,7 @@ public class Plan extends TscBaseDomain {
 	private String reDispYn;			//리뷰전시여부
 	private String reItemNm;			//리뷰상품이름
 	private Integer rePlanContSq;		//리뷰 컨텐츠일련번호
+	private String planStat;
 
 	private String cuTitle;				//쿠폰타이틀
 	private long cuDispOrd;				//쿠폰전시순서
@@ -271,6 +272,7 @@ public class Plan extends TscBaseDomain {
 	private String entryVal7;			//참여값7
 	private String entryVal8;			//참여값8
 	private Integer planEntrySq;		//참여일련번호
+	private Integer planEntryAtSq;
 	private String orgFileNm;
 	private String sysFileNm;
 	private String entryAllYn;
@@ -293,6 +295,11 @@ public class Plan extends TscBaseDomain {
 	private int pageNo = 1;
 	private int pageSize = 10;
 	private int pageUnit = 10;
+	
+	private TscPageRequest pageable2;
+	private int pageNo2 = 1;
+	private int pageSize2 = 6;
+	private int pageUnit2 = 10;
 
 	private String condition; // 키워드 종류
 	private String search; // 검색어

+ 46 - 0
src/main/java/com/style24/persistence/domain/eigene/Eigeneai.java

@@ -0,0 +1,46 @@
+package com.style24.persistence.domain.eigene;
+
+import java.io.Serializable;
+import java.util.Collection;
+
+import lombok.Data;
+
+/**
+ * 추천솔루션 - Eigene 도메인
+ * 
+ * @author gagamel
+ * @since 2021. 5. 14
+ */
+@SuppressWarnings("serial")
+@Data
+public class Eigeneai implements Serializable {
+
+	private String recType;					// 추천영역코드
+	private Collection<Product> products;	// 인풋상품정보
+	private Collection<Result> results;		// 결과상품정보
+
+	// 인풋상품정보
+	@Data
+	public class Product {
+		private String itemId;			// 상품코드
+		private String itemImage;		// 상품이미지URL
+		private String itemName;		// 상품명
+		private String itemUrl;			// 상품상세페이지URL
+		private String category1;		// 1레벨카테고리
+		private String category2;		// 2레벨카테고리
+		private String category3;		// 3레벨카테고리
+		private double originalPrice;	// 정상가
+		private double salePrice;		// 판매가
+	}
+
+	// 결과상품정보
+	@Data
+	public class Result {
+		private int rank;			// 결과순위
+		private String logicType;	// 사용된추천로직종류
+		private String categoryId;	// 카테고리ID
+		private String itemId;		// 결과상품코드
+		private Product product;	// 상품정보
+	}
+
+}

+ 52 - 28
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1896,7 +1896,7 @@
 		            , G.PARALLEL_IMPORT_YN /*병행수입여부*/
 		            , G.ORDER_MADE_YN      /*주문제작여부*/
 		            , G.GOODS_TNM          /*상품타이틀명*/
-		            , G.MAIN_COLOR_CD      /*대표색상코드*/
+		            , IFNULL(O.OPT_CD1,G.MAIN_COLOR_CD) AS MAIN_COLOR_CD      /*대표색상코드*/
 		            , G.LIST_PRICE         /*정상가(최초판매가)*/
 		            , G.CURR_PRICE         /*현재판매가*/
 		            , G.FORMAL_GB          /*정상이월구분*/
@@ -2022,34 +2022,46 @@
 		                            </foreach>
 		            )
 		         </if>
-				<if test="priceFrom != null and priceFrom != ''">
-					AND    G.CURR_PRICE <![CDATA[>=]]> #{priceFrom}
-				</if>
-				<if test="priceTo != null and priceTo != ''">
-					AND    G.CURR_PRICE <![CDATA[<=]]> #{priceTo}
-				</if>
-				<if test="dcRateFrom != null and dcRateFrom != ''">
-					AND    ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[>=]]> #{dcRateFrom}
-				</if>
-				<if test="dcRateTo != null and dcRateTo != ''">
-					AND    ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
-				</if>
+		        <if test="priceFrom != null and priceFrom != ''">
+		            AND    G.CURR_PRICE <![CDATA[>=]]> #{priceFrom}
+		        </if>
+		        <if test="priceTo != null and priceTo != ''">
+		            AND    G.CURR_PRICE <![CDATA[<=]]> #{priceTo}
+		        </if>
+		        <if test="dcRateFrom != null and dcRateFrom != ''">
+		            AND    ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[>=]]> #{dcRateFrom}
+		        </if>
+		        <if test="dcRateTo != null and dcRateTo != ''">
+		            AND    ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
+		        </if>
 		       ) G
-				LEFT OUTER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/ AND    O.DISP_YN = 'Y'
-				<if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
-					AND    O.OPT_CD1 IN (SELECT COLOR_CD
-					FROM   TB_COLOR
-					WHERE  1 = 1
-					AND    COLOR_GRP_CD IN
-					<foreach collection="colorArr" item="item" index="index"  open="(" close=")" separator=",">
-						#{item}
-					</foreach>
-					AND    USE_YN = 'Y' /*사용하는색상*/
-					)
-				</if>
+		        LEFT OUTER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/ AND    O.DISP_YN = 'Y'
+		        <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
+		            AND    O.OPT_CD1 IN (SELECT COLOR_CD
+		            FROM   TB_COLOR
+		            WHERE  1 = 1
+		            AND    COLOR_GRP_CD IN
+		            <foreach collection="colorArr" item="item" index="index"  open="(" close=")" separator=",">
+		                #{item}
+		            </foreach>
+		            AND    USE_YN = 'Y' /*사용하는색상*/
+		            )
+		        </if>
 		)
 		SELECT COUNT(*)
 		FROM   TAB_GOODS G
+		WHERE 1=1
+		<if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
+		  AND    G.MAIN_COLOR_CD IN (SELECT COLOR_CD
+		                               FROM   TB_COLOR
+		                               WHERE  1 = 1
+		                               AND    COLOR_GRP_CD IN
+		                               <foreach collection="colorArr" item="item" index="index"  open="(" close=")" separator=",">
+		                               	#{item}
+		                               </foreach>
+		                               AND    USE_YN = 'Y' /*사용하는색상*/
+		                              )
+		</if>
 	</select>
 
 	<!-- 카테고리별 상품 목록 -->
@@ -2065,7 +2077,7 @@
 		           , G.PARALLEL_IMPORT_YN /*병행수입여부*/
 		           , G.ORDER_MADE_YN      /*주문제작여부*/
 		           , G.GOODS_TNM          /*상품타이틀명*/
-		           , G.MAIN_COLOR_CD      /*대표색상코드*/
+		           , IFNULL(O.OPT_CD1,G.MAIN_COLOR_CD) AS MAIN_COLOR_CD      /*대표색상코드*/
 		           , G.LIST_PRICE         /*정상가(최초판매가)*/
 		           , G.CURR_PRICE         /*현재판매가*/
 		           , G.FORMAL_GB          /*정상이월구분*/
@@ -2240,8 +2252,8 @@
 		      , G.MAIN_COLOR_CD
 		      , G.LIST_PRICE
 		      , G.CURR_PRICE
-			  , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND G.MAIN_COLOR_CD = X.COLOR_CD AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
-			  , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND G.MAIN_COLOR_CD = X.COLOR_CD AND MOUSEOVER_IMG_YN = 'Y') AS SYS_IMG_NM2
+			  , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND G.MAIN_COLOR_CD = X.COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM
+			  , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND G.MAIN_COLOR_CD = X.COLOR_CD AND MOUSEOVER_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM2
 		      , (
 		      SELECT GROUP_CONCAT(CONCAT(VIDEO_GB,':',KMC_KEY) ORDER BY NUMB SEPARATOR ',')
 		      FROM   (
@@ -2306,6 +2318,18 @@
 		    LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
 		    AND    W.CUST_NO = #{custNo}
 		</if>
+		WHERE 1=1
+		<if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
+		  AND    G.MAIN_COLOR_CD IN (SELECT COLOR_CD
+		        FROM   TB_COLOR
+		        WHERE  1 = 1
+		        AND    COLOR_GRP_CD IN
+		        <foreach collection="colorArr" item="item" index="index"  open="(" close=")" separator=",">
+		            #{item}
+		        </foreach>
+		        AND    USE_YN = 'Y' /*사용하는색상*/
+		  )
+		</if>
 	</select>
 	
 	<!-- 검색상품 총건수 -->

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

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

+ 43 - 9
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -10,8 +10,27 @@
 
 	<!-- 페이징을 위한 select절 하단 -->
 	<sql id="selectForPagingFooter">
-		       ) ORIGINAL
-		WHERE  NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		<choose>
+			<when test="pageable != null">
+			    ) ORIGINAL
+			WHERE RNUM BETWEEN  #{pageable.startRow} AND #{pageable.endRow}
+			</when>
+			<otherwise>
+			    ) ORIGINAL
+			</otherwise>
+		</choose>
+	</sql>
+	
+	<sql id="selectForPagingFooter2">
+		<choose>
+			<when test="pageable2 != null">
+			    ) ORIGINAL
+			WHERE RNUM BETWEEN  #{pageable2.startRow} AND #{pageable2.endRow}
+			</when>
+			<otherwise>
+			    ) ORIGINAL
+			</otherwise>
+		</choose>
 	</sql>
 	
 	<!-- 기획전 카테고리 목록 -->
@@ -590,11 +609,11 @@
 		SELECT TMPL_TYPE 
 		     , DISP_ORD
 		     , PLAN_CONT_SQ
-		     ,TITLE 
-		     ,LINK_URL
-		     ,LINK_OPEN_GB
-		     ,NOTE 
-		     ,DISP_YN 
+		     , TITLE 
+		     , LINK_URL
+		     , LINK_OPEN_GB
+		     , NOTE 
+		     , DISP_YN 
 		FROM TB_PLAN_CONTENTS TPC 
 		WHERE 1=1 
 			AND TPC.PLAN_SQ = #{planSq}
@@ -854,6 +873,7 @@
 	<!-- 기획전 상품  전시 -->
 	<select id="getPlanGoodsDisplayList" parameterType="Plan" resultType="Plan">
 		/* TsfPlanning.getPlanGoodsDisplayList */
+		<include refid="selectForPagingHeader"/>
 		SELECT Z.*
 		      ,(CASE WHEN Z.LIST_PRICE > 0 THEN 100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) ELSE 0 END ) AS DC_RATE
 		FROM
@@ -884,6 +904,7 @@
 		         , G.MAIN_COLOR_CD                                          /*대표색상코드*/
 		         , G.LIST_PRICE                                             /*정상가(최초판매가)*/
 		         , G.CURR_PRICE                                             /*현재판매가*/
+		         , PCI.REG_DT 
 		    FROM   TB_PLAN P
 		    	 , TB_PLAN_CONTENTS PC
 		    	 , TB_PLAN_CONTENTS_ITEM PCI
@@ -897,7 +918,11 @@
 		    AND    G.GOODS_CD = GS.GOODS_CD
 		    AND    G.BRAND_CD = B.BRAND_CD
 		    AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-		    AND    P.PLAN_SQ =  #{planSq} /**P*/
+		    AND    P.PLAN_SQ =  #{planSq} 
+		    <if test='planStat == "Y"'>
+		         AND PC.PLAN_CONT_SQ = #{planContSq}
+		         AND PC.TMPL_TYPE = #{tmplType}
+		    </if>
 		    -- AND    P.PLAN_GB = 'P' /*기획전*/
 		    AND    P.SITE_CD =  #{siteCd} /**P*/
 		    <if test="frontGb != null and frontGb != ''">
@@ -945,9 +970,11 @@
 		     , FN_GET_BENEFIT_PRICE(#{frontGb},PG.GOODS_CD,PG.CURR_PRICE,#{custGb})                     AS CURR_PRICE    /*현재판매가*/
 		     , GI.SYS_IMG_NM
 		     , GI.SYS_IMG_NM2
+		     , ROW_NUMBER() OVER(ORDER BY PG.REG_DT DESC) AS RNUM
 		FROM   TAB_PLAN_GOODS PG
 		INNER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD
 		)Z
+		<include refid="selectForPagingFooter2"/>
 	</select>
 	
 	<!-- 기획전 코너 목록 -->
@@ -1509,10 +1536,13 @@
 			     , PE.REG_DT
 			     , PE.UPD_NO
 			     , PE.UPD_DT
-			     , RANK() OVER(ORDER BY REG_DT DESC) AS NUMB
+			     , RANK() OVER(ORDER BY REG_DT DESC) AS RNUM
 			FROM TB_PLAN_ENTRY PE
 			WHERE 1=1
 		    AND PE.PLAN_SQ = #{planSq}
+		    <if test="planEntrySq != null and planEntrySq != ''">
+		    AND PE.PLAN_ENTRY_SQ = #{planEntrySq}
+		    </if>
 		    ORDER BY REG_DT DESC
 		)Z
 		<include refid="selectForPagingFooter"/>
@@ -1595,12 +1625,16 @@
 	<select id="getEntryReplyAttachList" resultType="Plan" parameterType="Plan">
 		/* TsfPlanning.getEntryReplyAttach */	
 		SELECT PEA.PLAN_ENTRY_SQ
+		      ,PEA.PLAN_ENTRY_AT_SQ
 		      ,PEA.ORG_FILE_NM 
 		      ,PEA.SYS_FILE_NM 
 		FROM TB_PLAN_ENTRY PE INNER JOIN TB_PLAN_ENTRY_ATTACH PEA 
 		                                    ON PE.PLAN_ENTRY_SQ = PEA.PLAN_ENTRY_SQ 
 		WHERE 1=1
 		   AND PE.PLAN_SQ = #{planSq}
+		   <if test="planEntrySq != null and planEntrySq != ''">
+		   AND PE.PLAN_ENTRY_SQ = #{planEntrySq}
+		   </if>
 	</select>
 	
 	<delete id="deleteEntryReplyAttach" parameterType="Plan">

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

@@ -48,6 +48,7 @@
 		INNER JOIN TB_GOODS_COMPOSE GC ON R.GOODS_CD  = GC.COMPS_GOODS_CD
 		</if>
 		WHERE 1 = 1
+		AND R.CONFIRM_YN = 'Y'  -- 승인된 상품평만 조회
 		<choose>
 		    <when test="goodsType != null and goodsType == 'G056_D'">
 		AND    R.GOODS_CD = GC.COMPS_GOODS_CD
@@ -214,6 +215,7 @@
 		INNER JOIN TB_CUSTOMER C ON R.REG_NO  = C.CUST_NO
 		WHERE 1 = 1
 		AND R.GOODS_CD = #{goodsCd}
+		AND R.CONFIRM_YN = 'Y'  -- 승인된 상품평만 조회
 		<if test="reviewSq != null and reviewSq != ''" >
 		AND R.REVIEW_SQ = #{reviewSq}
 		</if>

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

@@ -34,7 +34,7 @@
 						<h3 class="title sr-only">로그인</h3>
 					</div>
 					<div class="form_field mt0">
-						<input type="text" name="loginId" placeholder="아이디" class="form_control"minlength="4" maxlength="12" required="required" data-valid-type="alphaNumeric" data-valid-name="아이디"/>
+						<input type="text" name="loginId" placeholder="아이디" class="form_control"minlength="4" maxlength="12" required="required" data-valid-name="아이디"/>
 					</div>
 					<div class="form_field">
 						<input type="password" name="passwd" placeholder="비밀번호 8자~20자 입력" class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="비밀번호"/>
@@ -275,7 +275,7 @@
 		}
 		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
 		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
-			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN);
 		}
 		// 5. YES24 첫 로그인 시도 시 정보동의 페이지 이동
 		if (userInfo.custStat === 'NEED_AGREE_CUST') {

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

@@ -52,7 +52,7 @@
 		}
 		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
 		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
-			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN);
 		}
 		// 5. YES24 첫 로그인 시도 시 정보동의 페이지 이동
 		if (userInfo.custStat === 'NEED_AGREE_CUST') {

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

@@ -29,8 +29,8 @@
 			<div class="inner">
 				<ul class="link wider">
 					<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_FAQ);">고객센터</a></li>
-					<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_USE_TERMS);">이용약관</a></li>
-					<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_PRIVACY_POLICY);">개인정보취급방침</a></li>
+					<li><a href="javascript:void(0);" onclick="cfnUseTermsLayer();">이용약관</a></li>
+					<li><a href="javascript:void(0);" onclick="cfnPrivacyPolicyLayer();">개인정보취급방침</a></li>
 				</ul>
 	
 				<div class="collapse">

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

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

+ 144 - 0
src/main/webapp/WEB-INF/views/mob/customer/ConsentUseInfoFormMob.html

@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : ConsentUseInfoFormMob.html
+ * @desc    : 정보이용동의팝업
+ *            Yes24 간편가입에 사용됨
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.14   jsshin       최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header sr-only">
+			<h5 class="modal-title" id="mbAgreeLabel">YES24 로그인 정보 이용동의</h5>
+		</div>
+		<div class="modal-body">
+			<div class="pop_cont">
+				<div class="agree_info">
+					<h5 class="title">YES24 로그인 정보 이용동의</h5>
+					<p>계정연동의 경우, STYLE24 휴면계정이면<br>휴면해제 후 이용 가능합니다</p>
+					<div class="info_txt">
+						<ul>
+							<li>“<span class="mb_name" th:text="${custNm}">회원명</span>” 님의 <em>CI, 이름, 성별, 생년월일, 핸드폰번호, 이메일 정보</em>를 로그인 연동을 위해 아이스타일24에 제공합니다.</li>
+							<li>정보제공 동의 시 YES24 계정으로 로그인 가능하며, 간편하게 회원가입이 가능합니다.</li>
+						</ul>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="modal-footer">
+			<div class="btn_group_flex">
+				<div>
+					<button type="button" id="btnAgree" class="btn btn_primary">
+						<span>동의하기</span>
+					</button>
+				</div>
+				<div>
+					<button type="button" id="btnClose" class="btn btn_dark">
+						<span>닫기</span>
+					</button>
+				</div>
+			</div>
+		</div>
+	</div>
+	<a href="#close-modal" rel="modal:close" id="mbAgreePop_close" class="close-modal">Close</a>
+</div>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	$('#btnAgree').on('click', function () {
+		let jsonData = JSON.stringify({});
+		gagajf.ajaxJsonSubmit('/customer/peristalsis/yes24', jsonData, fnPeristalsisCallback)
+	});
+
+
+	var fnPeristalsisCallback = function (userInfo) {
+		// 1. CI 정보로 사용자가 없어서 회원가입 프로세스 처리 중 이메일, 휴대전화 중복
+		if (userInfo.custStat === 'DUP_PHONE_CUST') {
+			mcxDialog.alert("이미 사용 중인 휴대전화번호 입니다.");
+			$.modal.close();
+			return;
+		}
+		if (userInfo.custStat === 'DUP_EMAIL_CUST') {
+			mcxDialog.alert("이미 사용 중인 이메일 입니다.");
+			$.modal.close();
+			return;
+		}
+		// 2. SNS 로그인 정보로 탈퇴확인
+		if (userInfo.custStat === 'SECEDE_CUST') {
+			mcxDialog.alert("탈퇴 회원 입니다.");
+			$.modal.close();
+			return;
+		}
+		// 3. SNS 로그인 정보로 휴면확인
+		if (userInfo.custStat === 'DORMANT_CUST') {
+			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
+					$.modal.close();
+				}
+			});
+			return;
+		}
+		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
+		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN);
+			$.modal.close();
+			return;
+		}
+		// 5. SNS 정보로 가입 성공시 가입완료 페이지 이동
+		if (userInfo.custStat === 'NEW_CUST') {
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN_COMPLETE);
+			$.modal.close();
+			return;
+		}
+		// 6.SNS 정보로 가입 실패시 안내 창 알림
+		if (userInfo.custStat === 'FAIL_CUST') {
+			mcxDialog.alert("회원가입에 실패 했습니다.<br> 고객센터에 문의 하시기 바랍니다.");
+			$.modal.close();
+			return;
+		}
+		// 7. SNS 로그인 연동 성공 및 기존 SNS 연동된 회원 로그인 시도
+		if (userInfo.custStat === 'SUCC_CUST') {
+			let params = {};
+			params.snsType = userInfo.snsType;
+			params.snsId = [[${snsLoginPrefix}]] + userInfo.snsId;
+			$.post(_frontUrl + '/login'
+				, $.param(params)
+				, fnReloadAfterLogin
+				, "json");
+		}
+	}
+	var fnReloadAfterLogin = function(result) {
+		if (result.status === 'OK') {
+			document.location.href = result.returnUrl;
+		} else {
+			mcxDialog.alert("로그인 실패 하였습니다.<br> 고객센터에 문의 하시기 바랍니다.");
+		}
+		$.modal.close();
+	};
+
+	$("#btnClose").click(function() {
+		cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);
+		$.modal.close();
+	});
+
+	$(document).ready(function () {
+		$('.close-modal').on('click', function () {
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);
+		});
+	});
+
+
+
+	/*]]>*/
+</script>
+</html>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/customer/JoinFormMob.html

@@ -168,7 +168,7 @@
 				<div class="desc_wrap t_c mt20">
 					<p>
 						본인은&nbsp;만 14세 이상이며&nbsp;<a href="javascript:void(0)" onclick="cfnUseTermsLayer();">STYLE24이용약관<i class="ico ico_blank ml5"></i></a>,<br>
-						<a href="javascript:void(0)" onclick="cfnPrivacyPolicyLayer();">개인정보 수집 및 이용<i class="ico ico_blank ml5"></i></a>,
+						<a href="javascript:void(0)" onclick="cfnPrivacyPolicyLayer('join');">개인정보 수집 및 이용<i class="ico ico_blank ml5"></i></a>,
 						<a href="javascript:void(0)" onclick="cfnPrivacyTrustLayer();">개인정보 취급 위탁<i class="ico ico_blank ml5"></i></a><br>
 						내용을 확인 하였으며,동의합니다.
 					</p>

+ 15 - 1
src/main/webapp/WEB-INF/views/mob/customer/PrivacyPolicyLayerFormMob.html

@@ -17,7 +17,7 @@
 <div class="modal-dialog" role="document">
 	<div class="modal-content">
 		<div class="modal-header">
-			<h5 class="modal-title" id="exampleFullLabel">개인정보 수집 및 이용</h5>
+			<h5 class="modal-title" id="exampleFullLabel" th:text="${mallGb=='join'? '개인정보 수집 및 이용': '개인정보취급방침'}">개인정보 수집 및 이용</h5>
 		</div>
 		<div class="modal-body">
 			<div class="pop_cont">
@@ -30,4 +30,18 @@
 		</div>
 	</div>
 </div>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	//약관내부링크
+	$(function(){
+		$(".hook_list ul li a").on("click", function(){
+			var hookHeader = $(".modal-header").outerHeight() + 3000;
+			var hookHref = $(this).attr("href");
+			var hookPot = $(hookHref == "#" || hookHref == "" ? "body" : hookHref);
+			var hookPos = hookPot.offset().top - hookHeader;
+			$("html, body").animate({ scrollTop: hookPos }, 3000);
+		});
+	});
+/*]]>*/
+</script>
 </html>

+ 14 - 0
src/main/webapp/WEB-INF/views/mob/customer/PrivacyTrustLayerFormMob.html

@@ -30,4 +30,18 @@
 		</div>
 	</div>
 </div>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	//약관내부링크
+	$(function(){
+		$(".hook_list ul li a").on("click", function(){
+			var hookHeader = $(".modal-header").outerHeight() + 3000;
+			var hookHref = $(this).attr("href");
+			var hookPot = $(hookHref == "#" || hookHref == "" ? "body" : hookHref);
+			var hookPos = hookPot.offset().top - hookHeader;
+			$("html, body").animate({ scrollTop: hookPos }, 3000);
+		});
+	});
+/*]]>*/
+</script>
 </html>

+ 14 - 1
src/main/webapp/WEB-INF/views/mob/customer/UseTermsLayerFormMob.html

@@ -29,5 +29,18 @@
 			</div>
 		</div>
 	</div>
-</div>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	//약관내부링크
+	$(function(){
+		$(".hook_list ul li a").on("click", function(){
+			var hookHeader = $(".modal-header").outerHeight() + 3000;
+			var hookHref = $(this).attr("href");
+			var hookPot = $(hookHref == "#" || hookHref == "" ? "body" : hookHref);
+			var hookPos = hookPot.offset().top - hookHeader;
+			$("html, body").animate({ scrollTop: hookPos }, 3000);
+		});
+	});
+/*]]>*/
+</script>
 </html>

+ 330 - 189
src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html

@@ -93,77 +93,31 @@
 						<div class="filter_header">
 							<div class="form_field">
 								<div>
-									<input id="price" type="checkbox"><label for="price"> <span>남여 공용만 보기</span> </label>
+									<input id="unisex" type="checkbox" onclick="fnFilterOption(this,'on');"><label for="unisex"> <span>남여 공용만 보기</span> </label>
 								</div>
-								<div>
-									<input id="chk-2" type="checkbox"><label for="chk-2"> <span>신상품만 보기</span> </label>
+								<div th:unless="${cateInfo.formalGb=='G009_20'}">
+									<input id="newGoods" type="checkbox" checked="checked" onclick="fnFilterOption(this,'off');"><label for="newGoods"> <span>신상품만 보기</span> </label>
 								</div>
 							</div>
 						</div>
 						<div class="filter_body">
 							<!-- 필터메뉴 -->
-							<ul>
-								<li class="categori" id="categoryFilterDiv">
-									<a href="javascript:void(0)" class="daps1">카테고리<!--<span class="pic">셔츠/블라우스</span>--></a>
-									<ul class="daps2" id="categoryArea">
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">여성</a>-->
-<!--											<ul class="daps3">-->
-<!--												<li>-->
-<!--													<a href="javascript:void(0)">티셔츠/셔츠</a>-->
-<!--													<ul class="daps4">-->
-<!--														<li>-->
-<!--															<a href="javascript:void(0)">셔츠/블라우스</a>-->
-<!--															<ul class="daps5">-->
-<!--																<li><a href="javascript:void(0)">셔츠</a></li>-->
-<!--																<li><a href="javascript:void(0)">블라우스</a></li>-->
-<!--															</ul>-->
-<!--														</li>-->
-<!--														<li>-->
-<!--															<a href="javascript:void(0)">맨투맨/모자티</a>-->
-<!--															<ul class="daps5">-->
-<!--																<li><a href="javascript:void(0)">맨투맨</a></li>-->
-<!--																<li><a href="javascript:void(0)">모자티</a></li>-->
-<!--															</ul>-->
-<!--														</li>-->
-<!--													</ul>-->
-<!--												</li>-->
-<!--											</ul>-->
-<!--										</li>-->
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">남성</a>-->
-<!--											<ul class="daps3">-->
-<!--												<li>-->
-<!--													<a href="javascript:void(0)">티셔츠/셔츠</a>-->
-<!--													<ul class="daps4">-->
-<!--														<li>-->
-<!--															<a href="javascript:void(0)">셔츠/블라우스</a>-->
-<!--															<ul class="daps5">-->
-<!--																<li><a href="javascript:void(0)">셔츠</a></li>-->
-<!--																<li><a href="javascript:void(0)">블라우스</a></li>-->
-<!--															</ul>-->
-<!--														</li>-->
-<!--													</ul>-->
-<!--												</li>-->
-<!--											</ul>-->
-<!--										</li>-->
-									</ul>
-								</li>
-								<li class="brand" th:if="${filterBrandList != null and !filterBrandList.empty}" id="brandGroupFilterDiv">
+							<ul class="allFilter">
+								<li class="brand chkFilter" th:if="${filterBrandList != null and !filterBrandList.empty}" id="brandGroupFilterDiv">
 									<a href="javascript:void(0)" class="daps1">브랜드</a>
 									<ul class="daps2">
 										<li th:each="oneData, status : ${filterBrandList}">
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input th:id="${'chkFilterBrand' + status.index}" name="brandGroup" type="checkbox" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="filterSel(this,'brandGroup','off','','Mob');"><label th:for="${'chkFilterBrand' + status.index}"><span th:text="${oneData.filterNm}"></span></label>
+														<input th:id="${'chkFilterBrand' + status.index}" name="brandGroup" type="checkbox" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="fnSelectFilerMob(this,'brandGroup','off','');"><label th:for="${'chkFilterBrand' + status.index}"><span th:text="${oneData.filterNm}"></span></label>
 													</div>
 												</div>
 											</a>
 										</li>
 									</ul>
 								</li>
-								<li calss="size" th:if="${filterSizeList != null and !filterSizeList.empty}" id="sizeFilterDiv">
+								<li class="size chkFilter" th:if="${filterSizeList != null and !filterSizeList.empty}" id="sizeFilterDiv">
 									<a href="javascript:void(0)" class="daps1">사이즈</a>
 									<div class="daps2">
 										<ul class="sizebox">
@@ -171,7 +125,7 @@
 												<strong>상의</strong>
 												<th:block th:each="oneData, status : ${filterSizeList}" th:if="${#strings.startsWith(oneData.filterCd,'T')}">
 													<label class="size_btn">
-														<input type="checkbox" group="filterValue" th:id="${'chkFilterTSize' + status.index}" name="size" th:vale="${oneData.filterNm}" th:data-id="${oneData.filterNm}" data-idx="1" onclick="filterSel(this,'size','off','1','Mob');"><span th:text="${oneData.filterNm}">80</span>
+														<input type="checkbox" group="filterValue" th:id="${'chkFilterTSize' + status.index}" name="size" th:vale="${oneData.filterNm}" th:data-id="${oneData.filterNm}" data-idx="1" onclick="fnSelectFilerMob(this,'size','off','1');"><span th:text="${oneData.filterNm}">80</span>
 													</label>
 												</th:block>
 											</li>
@@ -179,7 +133,7 @@
 												<strong>하의</strong>
 												<th:block th:each="oneData, status : ${filterSizeList}" th:if="${#strings.startsWith(oneData.filterCd,'B')}">
 													<label class="size_btn">
-														<input type="checkbox" group="filterValue" th:id="${'chkFilterBSize' + status.index}" name="size" th:vale="${oneData.filterNm}" th:data-id="${oneData.filterNm}" data-idx="2" onclick="filterSel(this,'size','off','2','Mob');"><span th:text="${oneData.filterNm}">44</span>
+														<input type="checkbox" group="filterValue" th:id="${'chkFilterBSize' + status.index}" name="size" th:vale="${oneData.filterNm}" th:data-id="${oneData.filterNm}" data-idx="2" onclick="fnSelectFilerMob(this,'size','off','2');"><span th:text="${oneData.filterNm}">44</span>
 													</label>
 												</th:block>
 											</li>
@@ -187,82 +141,19 @@
 												<strong>신발</strong>
 												<th:block th:each="oneData, status : ${filterSizeList}" th:if="${#strings.startsWith(oneData.filterCd,'S')}">
 													<label class="size_btn">
-														<input type="checkbox" group="filterValue" th:id="${'chkFilterSSize' + status.index}" name="size" th:vale="${oneData.filterNm}" th:data-id="${oneData.filterNm}" data-idx="3" onclick="filterSel(this,'size','off','3','Mob');"><span th:text="${oneData.filterNm}">120</span>
+														<input type="checkbox" group="filterValue" th:id="${'chkFilterSSize' + status.index}" name="size" th:vale="${oneData.filterNm}" th:data-id="${oneData.filterNm}" data-idx="3" onclick="fnSelectFilerMob(this,'size','off','3');"><span th:text="${oneData.filterNm}">120</span>
 													</label>
 												</th:block>
 											</li>
 										</ul>
 									</div>
 								</li>
-								<li class="price" id="priceFilterDiv">
+								<li class="price chkFilter" id="priceFilterDiv">
 									<a href="javascript:void(0)" class="daps1">가격<!--<span class="pic">230,000원~487,000원, 700,000원~990,000원</span>--></a>
 									<ul class="daps2" id="priceArea">
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">-->
-<!--												<div class="form_field">-->
-<!--													<div>-->
-<!--														<input id="price1" type="checkbox"><label for="price1"> <span>9천원 이하</span> </label>-->
-<!--													</div>-->
-<!--												</div>-->
-<!--											</a>-->
-<!--										</li>-->
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">-->
-<!--												<div class="form_field">-->
-<!--													<div>-->
-<!--														<input id="price2" type="checkbox"><label for="price2"> <span>9천원 ~ 23만원</span> </label>-->
-<!--													</div>-->
-<!--												</div>-->
-<!--											</a>-->
-<!--										</li>-->
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">-->
-<!--												<div class="form_field">-->
-<!--													<div>-->
-<!--														<input id="price3" type="checkbox" checked><label for="price3"> <span>23만원 ~ 48만원 7천원</span> </label>-->
-<!--													</div>-->
-<!--												</div>-->
-<!--											</a>-->
-<!--										</li>-->
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">-->
-<!--												<div class="form_field">-->
-<!--													<div>-->
-<!--														<input id="price4" type="checkbox" ><label for="price4"> <span>48만원 7천원 ~ 79만원</span> </label>-->
-<!--													</div>-->
-<!--												</div>-->
-<!--											</a>-->
-<!--										</li>-->
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">-->
-<!--												<div class="form_field">-->
-<!--													<div>-->
-<!--														<input id="price5" type="checkbox" checked><label for="price5"> <span>70만원 ~ 99만원</span> </label>-->
-<!--													</div>-->
-<!--												</div>-->
-<!--											</a>-->
-<!--										</li>-->
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">-->
-<!--												<div class="form_field">-->
-<!--													<div>-->
-<!--														<input id="price6" type="checkbox"><label for="price6"> <span>99만원 ~ 136만원</span> </label>-->
-<!--													</div>-->
-<!--												</div>-->
-<!--											</a>-->
-<!--										</li>-->
-<!--										<li>-->
-<!--											<a href="javascript:void(0)">-->
-<!--												<div class="form_field">-->
-<!--													<div>-->
-<!--														<input id="price7" type="checkbox"><label for="price7"> <span>136만원 ~ 179만원 9천원</span> </label>-->
-<!--													</div>-->
-<!--												</div>-->
-<!--											</a>-->
-<!--										</li>-->
 									</ul>
 								</li>
-								<li class="discount" id="dcRateFilterDiv">
+								<li class="discount chkFilter" id="dcRateFilterDiv">
 									<a href="javascript:void(0)" class="daps1">할인율</a>
 									<ul class="daps2">
 										<li>
@@ -357,35 +248,35 @@
 										</li>
 									</ul>
 								</li>
-								<li class="age" th:if="${filterAgeList != null and !filterAgeList.empty}" id="ageFilterDiv">
+								<li class="age chkFilter" th:if="${filterAgeList != null and !filterAgeList.empty}" id="ageFilterDiv">
 									<a href="javascript:void(0)" class="daps1">연령</a>
 									<ul class="daps2">
 										<li th:each="oneData, status : ${filterAgeList}">
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input th:id="${'chkFilterAge' + status.index}" name="age" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="filterSel(this,'age','off','','Mob');" type="checkbox"><label th:for="${'chkFilterAge' + status.index}"> <span th:text="${oneData.filterNm}"></span> </label>
+														<input th:id="${'chkFilterAge' + status.index}" name="age" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="fnSelectFilerMob(this,'age','off','');" type="checkbox"><label th:for="${'chkFilterAge' + status.index}"> <span th:text="${oneData.filterNm}"></span> </label>
 													</div>
 												</div>
 											</a>
 										</li>
 									</ul>
 								</li>
-								<li class="season" th:if="${filterSeasonList != null and !filterSeasonList.empty}" id="seasonFilterDiv">
+								<li class="season chkFilter" th:if="${filterSeasonList != null and !filterSeasonList.empty}" id="seasonFilterDiv">
 									<a href="javascript:void(0)" class="daps1">시즌</a>
 									<ul class="daps2">
 										<li th:each="oneData, status : ${filterSeasonList}">
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input th:id="${'chkFilterSeason' + status.index}" name="season" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="filterSel(this,'season','off','','Mob');" type="checkbox"><label th:for="${'chkFilterSeason' + status.index}"> <span th:text="${oneData.filterNm}">봄</span> </label>
+														<input th:id="${'chkFilterSeason' + status.index}" name="season" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="fnSelectFilerMob(this,'season','off','');" type="checkbox"><label th:for="${'chkFilterSeason' + status.index}"> <span th:text="${oneData.filterNm}">봄</span> </label>
 													</div>
 												</div>
 											</a>
 										</li>
 									</ul>
 								</li>
-								<li class="color" th:if="${filterColorList != null and !filterColorList.empty}" id="colorFilterDiv">
+								<li class="color chkFilter" th:if="${filterColorList != null and !filterColorList.empty}" id="colorFilterDiv">
 									<a href="javascript:void(0)" class="daps1">컬러
 										<span class="pic">
 <!--											<span class="pdColor-color01"></span><span class="pdColor-color02"></span>-->
@@ -395,7 +286,7 @@
 										<ul class="colorbox">
 											<li th:each="oneData, status : ${filterColorList}">
 												<label class="color-check">
-													<input type="checkbox" group="filterValue" th:id="${'chkFilterColor' + status.index}" name="color" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm.replace('#','')}" onclick="filterSel(this,'color','off','','Mob');">
+													<input type="checkbox" group="filterValue" th:id="${'chkFilterColor' + status.index}" name="color" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm.replace('#','')}" onclick="fnSelectFilerMob(this,'color','off','');">
 													<span class="pdColor-color" th:if="${oneData.filterNm=='#FFFFFF'}" th:style="${'background-color:'+oneData.filterNm+';'+' border:1px solid #aaa;'}" th:value="${oneData.filterCd}"></span>
 													<span class="pdColor-color" th:if="${oneData.filterNm!='#FFFFFF'}" th:style="${'background-color:'+oneData.filterNm}" th:value="${oneData.filterCd}"></span>
 												</label>
@@ -403,14 +294,14 @@
 										</ul>
 									</div>
 								</li>
-								<li class="benefit" th:if="${filterBenefitList != null and !filterBenefitList.empty}" id="benefitFilterDiv">
+								<li class="benefit chkFilter" th:if="${filterBenefitList != null and !filterBenefitList.empty}" id="benefitFilterDiv">
 									<a href="javascript:void(0)" class="daps1">혜택</a>
 									<ul class="daps2">
 										<li th:each="oneData, status : ${filterBenefitList}">
 											<a href="javascript:void(0)">
 												<div class="form_field">
 													<div>
-														<input th:id="${'chkFilterBenefits' + status.index}" name="benefit" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="filterSel(this,'benefit','off','','Mob');" type="checkbox"><label th:for="${'chkFilterBenefits' + status.index}"> <span th:text="${oneData.filterNm}"></span> </label>
+														<input th:id="${'chkFilterBenefits' + status.index}" name="benefit" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="fnSelectFilerMob(this,'benefit','off','');" type="checkbox"><label th:for="${'chkFilterBenefits' + status.index}"> <span th:text="${oneData.filterNm}"></span> </label>
 													</div>
 												</div>
 											</a>
@@ -443,6 +334,26 @@
 				</div>
 			</div>
 		</div>
+
+		<div class="nav_box">
+			<div class="lap">
+				<div class="nav_close">네비닫기</div>
+				<div class="nav_list">
+					<!-- 카테고리 선택 -->
+					<div class="nav">
+						<ul>
+							<li class="active">
+<!--								<a href="javascript:void(0)" class="daps1">여성</a>-->
+								<ul class="daps2" id="cateDepth">
+
+								</ul>
+							</li>
+						</ul>
+					</div>
+					<!-- //카테고리 선택 -->
+				</div>
+			</div>
+		</div>
 	</main>
 
 	<form id="searchGoodsForm" name="searchGoodsForm">
@@ -496,6 +407,10 @@
 				$("#priceArea").append(priceHtml);
 			}
 
+			// TOP 동일 카테고리
+			fnCreateDepthList();
+
+			// 상단노출 하위 카테고리
 			fnCreateCategoryList();
 
 			if ($('#sizeLi1').find('label').length == 0) $('#sizeLi1').hide();
@@ -523,8 +438,6 @@
 						$("body").css({"overflow":"hidden"});
 						bodyChk = 0;
 					}
-
-
 				});
 
 				navClose.on("click",function(){
@@ -678,14 +591,107 @@
 				$("body").css({"overflow":"visible"});
 			});
 
+			$(".nav_close").click();
 
 		});
 
+		// TOP 카테고리 노출
+		var fnCreateDepthList = function (){
+			let cateList = [[${cateList}]];
+			var brandGroupNo = [[${cateInfo.brandGroupNo}]];
+			var cateGb =  [[${cateInfo.cateGb}]];
+			var formalGb = [[${cateInfo.formalGb}]];
+			var cate1No = [[${cateInfo.cate1No}]];
+			var cate2No = [[${cateInfo.cate2No}]];
+			var cate3No = [[${cateInfo.cate3No}]];
+			var cate4No = [[${cateInfo.cate4No}]];
+			var cate5No = [[${cateInfo.cate5No}]];
+			var tag = '';
+			$("#cateDepth").html('');
+
+			if(!gagajf.isNull(cate5No)){
+
+			}else if(!gagajf.isNull(cate4No)) {
+				$.each(cateList, function (idx, cate){
+					$.each(cate.cate2List, function (idx2,cate2){
+						if(cate2.leafYn == 'N' && cate2.cate3List != null){
+							$.each(cate2.cate3List, function (idx3, cate3){
+								if(cate3.leafYn == 'N' && cate3.cate4List != null){
+									$.each(cate3.cate4List, function (idx4, cate4){
+										if(cate4.cate4No == cate4No){
+											$("#htopTitle").append(fnDisplayTitle(cate4.cate4Nm));
+										}
+										if(cate4.cate3No==cate3No){
+											tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ' ';
+											if(formalGb=='G009_20'){
+												tag += ' ,\'\',\''+formalGb+'\'';
+											}
+											tag += ');">'+cate4.cate4Nm+'</a></li>';
+										}
+									});
+								}
+							});
+						}
+					});
+				});
+				$("#cateDepth").append(tag);
+			}else if(!gagajf.isNull(cate3No)){
+				$.each(cateList, function (idx, cate){
+					$.each(cate.cate2List, function (idx2,cate2){
+						if(cate2.leafYn == 'N' && cate2.cate3List != null){
+							$.each(cate2.cate3List, function (idx3, cate3){
+								if(cate3.cate3No == cate3No){
+									$("#htopTitle").append(fnDisplayTitle(cate3.cate3Nm));
+								}
+								if(cate3.cate2No==cate2No){
+									tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ' ';
+									if(formalGb=='G009_20'){
+										tag += ' ,\'\',\'\',\''+formalGb+'\'';
+									}
+									tag += ');">'+cate3.cate3Nm+'</a></li>';
+								}
+							});
+						}
+					});
+				});
+				$("#cateDepth").append(tag);
+			}else if(!gagajf.isNull(cate2No)){
+				$.each(cateList, function (idx, cate){
+					$.each(cate.cate2List, function (idx2,cate2){
+						if(cate2.cate2No == cate2No){
+							$("#htopTitle").append(fnDisplayTitle(cate2.cate2Nm));
+						}
+						if(cate2.cate1No==cate1No){
+							tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ' ';
+							if(formalGb=='G009_20'){
+								tag += ' ,\'\',\'\',\'\',\''+formalGb+'\'';
+							}
+							tag += ');">'+cate2.cate2Nm+'</a></li>';
+						}
+					});
+				});
+				$("#cateDepth").append(tag);
+			}else{
+				$.each(cateList, function (idx, cate1){
+					if(cate1.cate1No == cate1No){
+						$("#htopTitle").append(fnDisplayTitle(cate1.cate1Nm));
+					}
+					tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ' ';
+					if(formalGb=='G009_20'){
+						tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
+					}
+					tag += ');">'+cate1.cate1Nm+'</a></li>';
+				});
+				$("#cateDepth").append(tag);
+			}
+		}
+
+		// 상단 하위카테고리 노출
 		var fnCreateCategoryList = function (){
 			let actionUrl = '';
 			let brandGroupNo = [[${cateInfo.brandGroupNo}]];
 			let cate1No = [[${cateInfo.cate1No}]];
-			console.log('cateList brandGroupNo::'+brandGroupNo+'>>cate1No::'+cate1No);
+			// console.log('cateList brandGroupNo::'+brandGroupNo+'>>cate1No::'+cate1No);
 
 			if(gagajf.isNull(brandGroupNo) || brandGroupNo == 0){
 				if( [[${cateInfo.formalGb}]] == 'G009_20'){
@@ -707,17 +713,13 @@
 					$("#leafCateList").html('');
 
 					let allCate = [[${cateList}]];
-					if(brandGroupNo > 0){
-
-					}else{
-						$.each(result, function(idx, item) {
-							$.each(allCate, function(allCateIdx, allCateItem) {
-								if (item.cate1No == allCateItem.cate1No) {
-									$('#leafCateList').append(fnGetCategoryList(item));
-								}
-							});
+					$.each(result, function(idx, item) {
+						$.each(allCate, function(allCateIdx, allCateItem) {
+							if (item.cate1No == allCateItem.cate1No) {
+								$('#leafCateList').append(fnGetCategoryList(item));
+							}
 						});
-					}
+					});
 				}
 			});
 		}
@@ -741,48 +743,92 @@
 			if (cate1 != null) {
 				if(cate1.cate1No == cate1No){
 					if(gagajf.isNull(cate2No)){
-						tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ');">cate1전체(test)</a>';
+						tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ' ';
+						if(formalGb=='G009_20'){
+							tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
+						}
+						tag += ');">전체</a>';
 					}
 					if(cate1.leafYn == 'N' && cate1.cate2List.length > 0){
 						$.each(cate1.cate2List, function (idx2, cate2){
 							if(gagajf.isNull(cate2No)){
-								tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ');">'+cate2.cate2Nm+'</a>';
+								tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ' ';
+								if(formalGb=='G009_20'){
+									tag += ' ,\'\',\'\',\'\',\''+formalGb+'\'';
+								}
+								tag += ');">'+cate2.cate2Nm+'</a>';
 							}else{
 								if(cate2.cate2No == cate2No){
 									if(cate2.leafYn == 'N' && cate2.cate3List.length > 0){
 										if(gagajf.isNull(cate3No)){
-											tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ');">cate2전체(test)</a>';
+											tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ' ';
+											if(formalGb=='G009_20'){
+												tag += ' ,\'\',\'\',\'\',\''+formalGb+'\'';
+											}
+											tag += ');">전체</a>';
 										}
 										$.each(cate2.cate3List, function (idx3, cate3){
 											if(gagajf.isNull(cate3No)){
-												tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ');">'+cate3.cate3Nm+'</a>';
+												tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ' ';
+												if(formalGb=='G009_20'){
+													tag += ' ,\'\',\'\',\''+formalGb+'\'';
+												}
+												tag += ');">'+cate3.cate3Nm+'</a>';
 											}else{
 												if(cate3.cate3No == cate3No){
 													if(cate3.leafYn == 'N' && cate3.cate4List.length > 0){
 														if(gagajf.isNull(cate4No)){
-															tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ');">cate3전체(test)</a>';
+															tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ' ';
+															if(formalGb=='G009_20'){
+																tag += ' ,\'\',\'\',\''+formalGb+'\'';
+															}
+															tag += ');">전체</a>';
 														}
 														$.each(cate3.cate4List, function (idx4, cate4){
 															if(gagajf.isNull(cate4No)){
-																tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ');">'+cate4.cate4Nm+'</a>';
+																tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ' ';
+																if(formalGb=='G009_20'){
+																	tag += ' ,\'\',\''+formalGb+'\'';
+																}
+																tag += ');">'+cate4.cate4Nm+'</a>';
 															}else{
 																if(cate4.cate4No == cate4No){
 																	if(cate4.leafYn == 'N' && cate4.cate5List.length > 0){
 																		if(gagajf.isNull(cate5No)){
-																			tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ');">cate4전체(test)</a>';
+																			tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ' ';
+																			if(formalGb=='G009_20'){
+																				tag += ' ,\'\',\''+formalGb+'\'';
+																			}
+																			tag += ');">전체</a>';
 																		}
 																		$.each(cate4.cate5List, function (idx5, cate5){
 																			if(gagajf.isNull(cate5No)){
-																				tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ',' + cate5.cate5No + ');">'+cate5.cate5Nm+'</a>';
+																				tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ',' + cate5.cate5No + ' ';
+																				if(formalGb=='G009_20'){
+																					tag += ' ,\''+formalGb+'\'';
+																				}
+																				tag += ');">'+cate5.cate5Nm+'</a>';
 																			}else{
 																				if(cate5.cate5No == cate5No){
-																					tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ',' + cate5.cate5No + ');">'+cate5.cate5Nm+'</a>';
+																					tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ',' + cate5.cate5No + ' ';
+																					if(formalGb=='G009_20'){
+																						tag += ' ,\''+formalGb+'\'';
+																					}
+																					tag += ');">'+cate5.cate5Nm+'</a>';
 																				}
 																			}
 																		});
 																	}else{
-																		tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ');">cate4전체</a>';
-																		tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ');">'+cate4.cate4Nm+'</a>';
+																		tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ' ';
+																		if(formalGb=='G009_20'){
+																			tag += ' ,\'\',\''+formalGb+'\'';
+																		}
+																		tag += ');">전체</a>';
+																		tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ' ';
+																		if(formalGb=='G009_20'){
+																			tag += ' ,\'\',\''+formalGb+'\'';
+																		}
+																		tag += ');">'+cate4.cate4Nm+'</a>';
 																	}
 																}
 															}
@@ -797,26 +843,6 @@
 						});
 					}
 				}
-
-				// if(cate1.leafYn == 'N' && cate1.cate2List.length > 0){
-				// 	$.each(cate1.cate2List, function (idx2, cate2){
-				// 		if(cate2No == null){
-				// 			tag += '<a href="javascript:void(0);">cate2전체(test)</a>';
-				// 		}else{
-				// 			if(cate2.leafYn == 'N' && cate2.cate3List.length > 0){
-				// 				$.each(cate2.cate3List, function (idx3, cate3){
-				// 					if(cate3No == null){
-				// 						tag += '<a href="javascript:void(0);">cate3전체(test)</a>';
-				// 					}else{
-				// 						tag += '<a href="javascript:void(0);">3'+cate3.cateNm+'</a>';
-				// 					}
-				// 				});
-				// 			}else{
-				// 				tag += '<a href="javascript:void(0);">2'+cate2.cateNm+'</a>';
-				// 			}
-				// 		}
-				// 	});
-				// }
 			}
 
 			return tag;
@@ -851,7 +877,7 @@
 				if($("#searchGoodsForm input[name=pageNo]").val()==1){
 					// 필터 값으로 조회 데이터 없을때
 					$('.list_content .list_defult').show();
-					$('.list_content .count_wrap').hide();
+					//$('.list_content .count_wrap').hide();
 				}else{
 					// 마지막 페이지 일때
 					$('#endPage').show();
@@ -861,11 +887,60 @@
 			}
 		}
 
+		var fnFilterOption = function (obj, stat){
+			var thisId = $(obj).attr('id');
+			var tag = '';
+
+			if(thisId == 'unisex'){
+				if(stat=='on'){
+					$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+					tag += '<input type="hidden" name="unisex" value="G007_Z"/>\n';
+					$("#searchGoodsForm").append(tag);
+				}else{
+					$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+					$("#searchGoodsForm input:hidden[name=unisex]").remove();
+				}
+			}else{
+				if(stat=='on'){
+					$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+					tag += '<input type="hidden" name="newGoods" value="40"/>\n';
+					$("#searchGoodsForm").append(tag);
+				}else{
+					$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+					$("#searchGoodsForm input:hidden[name=newGoods]").remove();
+				}
+			}
+			fnCategoryGoodsInfiniteScrollInit();
+			fnGoodsListSearch();
+		}
+
 		// 사파리 - event.persisted || 크롬 - window.performance.navigation.type 이 1이면 새로고침, 2면 페이지 이동을 통한 캐쉬페이징
 		$(window).on("pageshow", function(event) {
+			$('#filterForm input[name=brandGroup]:checked').each(function(){
+				$(this).attr('checked', true);
+			});
+			$('#filterForm input[name=size]:checked').each(function(){
+				$(this).attr('checked', true);
+			});
+			$('#filterForm input[name=dcRate]:checked').each(function(){
+				$(this).attr('checked', true);
+			});
+			$('#filterForm input[name=age]:checked').each(function(){
+				$(this).attr('checked', true);
+			});
+			$('#filterForm input[name=season]:checked').each(function(){
+				$(this).attr('checked', true);
+			});
+			$('#filterForm input[name=color]:checked').each(function(){
+				$(this).attr('checked', true);
+			});
+			$('#filterForm input[name=benefit]:checked').each(function(){
+				$(this).attr('checked', true);
+			});
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){
+					//console.log('M historyData>>'+historyData);
 					historyData = JSON.parse(historyData);
 				}else{
 					historyData = {};
@@ -873,36 +948,102 @@
 				if(typeof historyData.filterHtml!='undefined' && historyData.filterHtml!=''){
 					$("#searchGoodsForm").append(historyData.filterHtml);
 					filterHtml = historyData.filterHtml;
+					fnReCheckFilterList();
 				}
 				if(typeof historyData.filterStatHtml!='undefined' && historyData.filterStatHtml!=''){
-					$(".filterstate .filter_div").append(historyData.filterStatHtml);
+					$("#filterForm").append(historyData.filterStatHtml);
 					filterStatHtml = historyData.filterStatHtml;
 				}
 				if(typeof historyData.totalCount!='undefined' && historyData.totalCount!=''){
-					//$("#totalGoodsCnt").text(historyData.totalCount);
+					$("#totCntId").text(historyData.totalCount);
 				}
-				if(typeof historyData.sortGb!='undefined' && historyData.sortGb!=''){
-					$("#sortSelect").val(historyData.sortGb);
-					$("#searchGoodsForm input:hidden[name=sortGb]").val(historyData.sortGb);
+				if(filterPriceList.length > 0){
+					let min = 0;
+					let max = 0;
+					var val = '';
+					if(!gagajf.isNull($("#searchGoodsForm").find("input:hidden[name=priceFrom]").val())){
+						min = $("#searchGoodsForm").find("input:hidden[name=priceFrom]").val();
+					}
+					if(!gagajf.isNull($("#searchGoodsForm").find("input:hidden[name=priceTo]").val())){
+						max = $("#searchGoodsForm").find("input:hidden[name=priceTo]").val();
+					}
+					val = min+','+max;
+
+					$('#filterForm input[name=price]').each(function (){
+						if(val == $(this).val()){
+							$(this).prop("checked",true);
+						}
+					});
+				}
+				if(typeof historyData.sortingType!='undefined' && historyData.sortingType!=''){
+					$("#searchGoodsForm input:hidden[name=sortingType]").val(historyData.sortingType);
+					fnSortingChange(this,historyData.sortingType,'back','Mob');
+				}else{
+					fnCategoryGoodsInfiniteScrollInit();
+					fnGoodsListSearch();
 				}
-				fnGoodsListSearch();
 			}else{
 				fnCategoryGoodsInfiniteScrollInit();
-				// var sortGb = [[${sortGb}]];
-				// if(sortGb=='new' || sortGb=='best'){
-				// 	$("#sortSelect").val(sortGb);
-				// 	$("#sortSelect").parent('div').children('span').text($("#sortSelect option:selected").text())
-				// 	fnSortChange(sortGb);
-				// }else{
-				// 	fnGoodsListSearch();
-				// }
-				fnGoodsListSearch();
+				var sortingType = $("#searchGoodsForm input:hidden[name=sortingType]").val();
+				if(sortingType=='BEST' || sortingType=='REVIEW'){
+					fnSortingChange(this,sortingType,'','Mob');
+				}else{
+					fnGoodsListSearch();
+				}
 			}
 
 		});
 
+		// var iframe= document.createElement('iframe');
+		// iframe.setAttribute('allowFullScreen', '');
+		// iframe.setAttribute('allow', 'fullscreen');
+		// var controller;
+		// var player = document.getElementById('player');
+		//
+		// player.onload = function() {
+		// 	try {
+		// 		var controller = new VgControllerClient({
+		// 			target_window: document.getElementById('pdThumbVideo').contentWindow
+		// 			// target_window: document.getElementsByClassName('pd_mov').contentWindow
+		// 		});
+		// 		var playMov;
+		//
+		// 		controller.on('ready', function(){
+		// 			//플레이어 준비 완료
+		// 			controller.set_ratio('fill');
+		// 			//  contain : 비율에 맞게 채웁니다.
+		// 			//fill : 화면에 꽉 차게 채웁니다.
+		// 			//enlargement : 세로 높이를 꽉 차게 맞춥니다. 좌우로 스크롤이 가능합니다
+		// 			controller.play();
+		// 		});
+		// 		controller.on('done', function(){
+		// 			//플레이어 재생 완료
+		// 			controller.play();
+		// 		});
+		//
+		// 	} catch(e) {
+		// 		// Videogateweay Controller Library는 window.postMessage API를 이용하기 때문에
+		// 		// 해당 기능을 지원하지 않는 웹브라우져에서는 동작하지 않습니다.
+		// 		// 이 부분에 적절한 fail-over 코드를 추가하여 주십시요.
+		// 	}
+		//
+		// }
+
+		var fnDisplayTitle = function (cateNm){
+			$("#htopTitle").html('');
+			var tag = '';
+
+			tag += '<span>'+cateNm+'</span>\n';
+			tag += '<button class="dp_list_btn_gnbs" title="서브타이틀 메뉴 열기/닫기">\n';
+			tag += '	<span><i></i></span>\n';
+			tag += '</button>\n';
+
+			return tag;
+		}
+
 	</script>
 
+
 </th:block>
 </body>
 </html>

+ 164 - 26
src/main/webapp/WEB-INF/views/mob/display/LookbookMainFormMob.html

@@ -27,7 +27,7 @@
 				<div class="list_content"> <!-- 데이터 없을시 클래스 nodata 추가 -->
 					<div class="count_wrap">
 						<div>
-							<p><span id="totCnt"></span>개의 상품</p>
+							<p><span id="lookbookTotCnt"></span>개의 상품</p>
 						</div>
 						<div>
 							<ul class="dp_util">
@@ -54,13 +54,15 @@
 					<div class="lookbookGrp">
 						<div class="swiper_filter brand" id="filterChkArea">
 							<div class="cate_wrap" id="chkBrand">
-								<a href="javascript:void(0);" onclick="fnReset();">전체</a>
+								<a href="javascript:void(0);" onclick="fnLookbookReset();">전체</a>
 							</div>
-							<div class="btnbox"><a href="javascript:void(0);" class="reset" onclick="fnReset();">새로고침</a></div>
+							<div class="btnbox"><a href="javascript:void(0);" class="reset" onclick="fnLookbookReset();">새로고침</a></div>
+						</div>
+						<div class="list_content">
+							<ul class="event_con itemsGrp" id="listBox">
+							</ul>
 						</div>
-						<ul class="event_con" id="lookbookArea">
 
-						</ul>
 					</div>
 					<div class="list_last">마지막페이지 입니다.</div>
 				</div>
@@ -82,7 +84,7 @@
 			</div>
 			<div class="brand_floormenu"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
 				<div class="share_like">
-					<button class="refresh" onclick="fnReset();">초기화</button>
+					<button class="refresh" onclick="fnReset1();">초기화</button>
 					<!--<button class="like">위시리스트</button>-->
 				</div>
 				<div class="prd_buy">
@@ -93,6 +95,18 @@
 		</div>
 	</main>
 
+	<form id="lbMainForm" name="lbMainForm">
+		<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+		<input type="hidden" name="pageSize" value ="30"/>
+		<input type="hidden" name="lookbookGb" th:value="${lbInfo.lookbookGb}"/>
+		<input type="hidden" name="brandCd" th:value="${lbInfo.brandCd}">
+		<input type="hidden" name="frontYn" value="Y"/>
+		<input type="hidden" name="totalCnt" />
+	</form>
+
+<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
+<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
+
 <script th:inline="javascript">
 	/*<![CDATA[*/
 	var currUrl = document.location.href;
@@ -106,7 +120,139 @@
 	}
 	var brandCd = [[${lbInfo.brandCd}]];
 
-	let fnGetLookbookList = function (lookbookGb, brandGroupNo){
+	var fnLookbookListSearch = function (){
+		gagaInfiniteScroll.getHistory();
+	}
+
+	var fnGetInfiniteScrollDataList = function (pageNum){
+		$("#lbMainForm input[name=pageNo]").val(pageNum+1);
+		gagajf.ajaxFormSubmit("/display/lookbook/main/list", document.lbMainForm,  gagaInfiniteScroll.jsonToHtml);
+	}
+
+	var fnDrawInfiniteScrollData = function (result){
+		let totalCnt = result.paging.totalCount;
+		$("#lookbookTotCnt").text(totalCnt);
+		$("#lbMainForm").find("input[name=totalCnt]").val(totalCnt);
+		gagaInfiniteScroll.pageStatus.totalCount = totalCnt;
+
+		if (result.dataList != null && result.dataList.length > 0) {
+			$(".nodata").hide();
+			let lastPage = result.paging.pageNo;
+			let endRow = result.paging.endRow - result.paging.pageSize;
+
+			var htm = fnGetLookbookList(result);
+			gagaInfiniteScroll.draw(htm);
+		}else{
+			if($("#lbMainForm input[name=pageNo]").val()==1){
+				$("#divLookbookNoData").show();
+			}else{
+				$("#divLastPage").show();
+			}
+			gagaInfiniteScroll.draw('not');
+		}
+	}
+
+	let fnGetLookbookList = function (result){
+		var html = '';
+
+		$.each(result.dataList, function (idx, item){
+			html += '<li>\n';
+			html += '	<a href="javascript:void(0);" onclick="cfnGoToLookbookDetail(\''+lookbookGb+'\','+item.lookbookSq+','+item.brandCd+')">\n';
+			html += '		<div class="ev_img">\n';
+			html += '			<img src="' + _imgUrl + item.orgTnfileNm + '" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">\n';
+			html += '		</div>\n';
+			html += '		<div class="ev_txt">\n';
+			if(lookbookGb != 'BL') {
+				html += '			<p class="brand">' + item.brandNm + '</p>\n';
+			}
+			html += '			<p class="tit">'+item.title+'</p>\n';
+			html += '		</div>\n';
+			html += '	</a>\n';
+			html += '</li>\n';
+		});
+		return html;
+	}
+
+	// 브랜드 리스트 가져오기
+	let fnGetBrandList = function (){
+		let actionUrl = '/display/lookbook/main/brand/list?frontYn=Y';
+		$.getJSON(actionUrl, function(result, status){
+			if(result.length > 0){
+				$('#brandArea').html('');
+				let tag = '';
+				tag += '<button type="button" data-name="" id="chkFilterBrand" class="on" onclick="fnAddBrand(\'\');"><span>전체</span></button>\n';
+				$.each(result, function(idx, item) {
+					tag += '<button type="button" id="chkFilterBrand'+idx+'" data-name="'+item.brandCd+'" onclick="fnAddBrand(\''+item.brandCd+'\');"><span>'+item.brandNm+'</span></button>\n';
+				});
+				$('#brandArea').html(tag);
+			}
+		});
+	}
+
+	// 브랜드 선택 적용
+	var fnGetBrandLookbookList = function (){
+		$("#lbMainForm input:hidden[name=multiBrandCd]").remove();
+		var tag = '';
+		var tag2 = '';
+		$('#chkBrand').html('');
+		$(".button_list button").each(function (index) {
+			if($(this).hasClass("on")){
+				if(!gagajf.isNull($(this).attr('data-name'))){
+					tag += '<input type="hidden" name="multiBrandCd" value="'+$(this).attr('data-name')+'" />';
+					$("#lbMainForm").append(tag);
+
+					var brandCd = $(this).attr("data-name");
+					var brandNm = $(this).find('span').text();
+					tag2 += '<a href="javascript:void(0);" onclick="fnDeleteBrandFilter(\''+brandCd+'\');">'+brandNm+'</a>';
+					$('#chkBrand').html(tag2);
+				}else{
+					$(this).addClass("on");
+					tag2 += '<a href="javascript:void(0);" onclick="fnDeleteBrandFilter("");">전체</a>';
+					$('#chkBrand').html(tag2);
+				}
+			}
+		});
+
+		var chkLen = $("#chkBrand").find('a').length;
+		if(chkLen < 1){
+			$('#chkBrand').html('<a href="javascript:void(0);" onclick="fnDeleteBrandFilter("");">전체</a>');
+			$(".button_list button").each(function (index) {
+				if(gagajf.isNull($(this).attr('data-name'))){
+					$(this).addClass("on");
+				}
+			});
+		}
+
+		fnLookbookInfiniteScrollInit();
+		fnLookbookListSearch();
+	}
+
+	// 브랜드 선택 초기화
+	var fnLookbookReset = function (){
+		$("#lbMainForm input:hidden[name=multiBrandCd]").remove();
+
+		var tag2 = '';
+		tag2 += '<a href="javascript:void(0);" onclick="fnDeleteBrandFilter(\'\');">전체</a>';
+		$('#chkBrand').html(tag2);
+
+		$(".button_list button").each(function (index) {
+			$(this).removeClass("on");
+		});
+
+		$("#chkFilterBrand").addClass('on');
+
+		fnLookbookInfiniteScrollInit();
+		fnLookbookListSearch();
+		//fnGetBrandLookbookList();
+	}
+
+	// 인피니티 스크롤 초기화
+	var fnLookbookInfiniteScrollInit = function (){
+		sessionStorage.removeItem(document.location.href);
+		$("#listBox").html("");
+	}
+
+	let fnGetLookbookList2 = function (lookbookGb, brandGroupNo){
 		let actionUrl = '/display/lookbook/main/list?lookbookGb='+lookbookGb;
 		if (!gagajf.isNull(brandGroupNo)) actionUrl += '&multiBrandCd=' + brandGroupNo;
 
@@ -120,7 +266,7 @@
 						let tag = '';
 						let tag3 = '';
 						let brandArr = [];
-						tag += '<button type="button" data-name="" class="on" onclick="fnAddBrand(\'\');"><span>전체</span></button>\n';
+						tag += '<button type="button" data-name="" id="chkFilterBrand" class="on" onclick="fnAddBrand(\'\');"><span>전체</span></button>\n';
 						$.each(result, function(idx, item) {
 							if(!brandArr.includes(item.brandCd)){
 								brandArr.push(item.brandCd);
@@ -197,25 +343,9 @@
 		});
 	}
 
-	// 선택된 브랜드 조회
-	var fnGetBrandLookbookList = function (){
-		var multiBrandCd = [];
-		$(".button_list button").each(function (index) {
-			if($(this).hasClass("on")){
-				multiBrandCd.push($(this).attr('data-name'));
-			}
-		});
-		$('#chkBrand').html('');
-		fnGetLookbookList(lookbookGb,multiBrandCd);
-	}
-
 	// 초기화버튼
 	var fnReset = function (){
-		// var multiBrandCd = [];
-		// $('#chkBrand').html('');
-		// fnGetLookbookList(lookbookGb,multiBrandCd);
-		// $(".popup_close").click();
-		document.location.href = currUrl;
+		$('.reset').click();
 	}
 
 	// 리스트상단 필터 리스트에서 삭제 시
@@ -232,12 +362,19 @@
 	}
 
 	$(document).ready(function(){
-		fnGetLookbookList(lookbookGb,brandCd);
+		// fnGetLookbookList(lookbookGb,brandCd);
+		//fnLookbookListSearch();
+		fnLookbookReset();
 
 		if(lookbookGb=='BL'){
 			$("#btnHome").attr('onclick', 'cfnGoToBrandMain('+brandCd+');');
 		}else{
 			$("#btnHome").attr('href', '/');
+			fnGetBrandList();
+		}
+
+		if(!gagajf.isNull($("#lbMainForm").find("input[name=totalCnt]").val())){
+			$("#lookbookTotCnt").text($("#lbMainForm").find("input[name=totalCnt]").val());
 		}
 
 		$(document).on('click','.sub_category .more_btn',function(){
@@ -274,6 +411,7 @@
 		});
 		$(document).on('click','.brand_floormenu .refresh',function(){
 			$('.popup_box .button_list button').removeClass('on');
+			$('#chkFilterBrand').addClass('on');
 		});
 		$(document).on('click','.popup_box .buying',function(){
 			$(this).parents('.popup_box').hide().removeClass('active');

+ 7 - 8
src/main/webapp/WEB-INF/views/mob/goods/GoodsCouponFormMob.html

@@ -41,7 +41,7 @@
 							</div>
 							<div class="btn_group_flex">
 								<div>
-									<button type="button" class="btn btn_dark" id="btn_result_coupon" 
+									<button type="button" class="btn btn_dark btn_coupon_down" id="btn_result_coupon" 
 											th:disabled="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}"
 											th:attr="cpnId=${goodsCoupon.cpnId}" th:id="${'coupon_'+goodsCoupon.cpnId}" onclick="fnGoodsCouponDown(this);">
 										<span>쿠폰받기</span>
@@ -62,7 +62,8 @@
 		</form>	
 		</div>
 		<div class="modal-footer">
-			<button type="button" class="btn btn_primary btn_all_cpdown" onclick="fnGoodsCouponDownAll();"><span>쿠폰 모두 받기</span></button>
+			<button type="button" id="btn_all_coupon" class="btn btn_primary" onclick="fnGoodsCouponDownAll();">
+			<span>쿠폰 모두 받기</span><span>쿠폰 모두 받기 완료</span></button>
 		</div>
 	</div>
 </div>
@@ -118,11 +119,11 @@
 	
 	
 	// 쿠폰 전체 다운로드
-	var fnGoodsCouponDownAll = function(){
+	var fnGoodsCouponDownAll = function(){debugger;
 		//00개 쿠폰이 발급되었습니다.
 		let couponDownAbleYn = "N";
 		let arrCpnId = [];
-		$('.btn_coupon_down').each(function(){
+		$('.btn_coupon_down').each(function(){debugger;
 			if (!$(this).attr('disabled')){
 				couponDownAbleYn = "Y";
 				arrCpnId.push($(this).attr('cpnId'));
@@ -151,13 +152,13 @@
 						if (coupon.cpnId == cpnId){
 							if (Number(coupon.custPubLimitQty) > 0){
 								if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
-									$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+								//	$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 									$('#coupon_'+ coupon.cpnId).attr('disabled', true);
 								}
 							}
 							if (Number(coupon.TotPubLimitQty) > 0){
 								if (Number(coupon.TotPubLimitQty) <= Number(coupon.CustCouponCnt)){
-									$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+								//	$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 									$('#coupon_'+ coupon.cpnId).attr('disabled', true);
 								}
 							}
@@ -179,9 +180,7 @@
 		});	
 		
 		if(couponDownAbleYn == "N"){
-			$('.btn_all_cpdown').addClass('btn_coupon_done');
 			$('.btn_all_cpdown').attr('disabled', true);
-			$('.btn_all_cpdown').find('span').text('쿠폰 모두 받기 완료');
 		}
 	}	
 	

+ 14 - 12
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -18,8 +18,6 @@
  -->
 <body>
 <th:block layout:fragment="content">
-<main role="" id="" class="container pd" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
-	<!-- ★ 컨텐츠 시작 -->
 	<form name="cartForm" id="cartForm" method="post">
 		<input type="hidden" name="mode">
 		<input type="hidden" name="goodsCd" th:value="${params.goodsCd}" />
@@ -38,6 +36,9 @@
 		<input type="hidden" name="currPrice" th:value="${goodsInfo.currPrice}"/>
 		<input type="hidden" name="goodsType" th:value="${goodsInfo.goodsType}"/>
 		<input type="hidden" name="selfGoodsYn" th:value="${goodsInfo.selfGoodsYn}"/>
+<main role="" id="" class="container pd" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<!-- ★ 컨텐츠 시작 -->
+
 	<section class="pd_detail">
 		<!-- 210409_ 구조변경 : .pd_info, .pd_info1 추가  -->
 		<div class="pd_info">
@@ -278,14 +279,13 @@
 					</th:block>
 					</th:block>
 					</th:block>
+					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
 					
 				</div>
 					
-				<div class="view_outfit_box" >
+				<div class="view_outfit_box" th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}">
 				<!-- 관리자 에디터입력 내용 노출  상단 html -->
-					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
-					
-					<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+					<th:block  th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
 				</div>
 				<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">	
 				<!-- 착용컷 노출 -->
@@ -583,7 +583,7 @@
 				</div>
 				<!-- //상품필수정보 노출 -->
 			</div>
-			<div class="btn_more_box">
+			<div class="btn_more_box covered">
 				<div class="btn_group_flex">
 					<div>
 						<button type="button" class="btn btn_default">
@@ -1003,7 +1003,7 @@
 		<!-- 구매하기팝업 -->
 	</section>
 	<!-- ★ 컨텐츠 종료 -->	
-</form>
+
 	<!-- 바닥메뉴 -->	
 	<div class="product_floormenu"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
 		<div class="share_like">
@@ -1050,9 +1050,9 @@
 			</div>
 		</div>
 	</div>
-		
-</main>
 
+</main>
+</form>
 <!-- 바로구매 및 선물하기 장바구니 등록 정보 저장을 위한 form -->
 <form id="directOrderForm" method="POST" action="/order/noMember"></form>
 <script th:src="@{'/biz/goods.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/goods.js"></script>
@@ -1961,6 +1961,8 @@
 			return false;
 		}); 
 		
+
+		
 		//슬라이드 - 함께하면 할인되는 다다익선 상품
 		var togetherItemSwiper = new Swiper('.pd .pd_together .area_slider .swiper-container', {
 			slidesPerView: 3,
@@ -2164,12 +2166,12 @@
 		fnEpCouponDown([[${afLinkCd}]], [[${params.goodsCd}]], 1);
 		
 		
-		/*  $('.Purchase_pop .btPop_close').click(function(){
+		$('.Purchase_pop .btPop_close').click(function(){
 			$('html, body').css({'overflow': 'visible', 'height': '100%'});
 			$('.container').removeClass('btPop_open');
 			autome.style.top  = 100 + "%";
 			return false;
-		}); */
+		}); 
 		 
 	});
 	

+ 21 - 7
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html

@@ -426,7 +426,12 @@
 									<div class="lap">
 										<div class="pic" th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
 											<th:block th:each="reviewAttach, attachStatus : ${bestReview.reviewAttachList}" th:if="${attachStatus.first}">
-											<span class="thumb " th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}"  th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+												<th:block th:if="${reviewAttach.fileGb == 'M'}">
+											<span class="thumb mov" th:style="${'background-image:url('+kollusMediaUrl+'/poster/'+reviewAttach.kmcKey+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+												</th:block>
+												<th:block th:unless="${reviewAttach.fileGb == 'M'}">
+											<span class="thumb" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span>
+												</th:block>
 											</th:block>
 										</div>
 										<div class="txt_best_review">
@@ -447,12 +452,17 @@
 		<h6>포토/영상 리뷰</h6>
 		<div class="photo_list">
 			<ul>
-				<li  th:each="photoReview, status : ${photoReviewList}" >
+				<li  th:each="photoReview, status : ${photoReviewList}" th:if="${status.count<=7}">
 					<th:block th:if="${photoReview.reviewAttachList != null and !photoReview.reviewAttachList.empty}">
 					<th:block th:each="reviewAttach, attachStatus : ${photoReview.reviewAttachList}" th:if="${attachStatus.first}">
 					<a href="javascript:void(0);" th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]], '', 'Y', [[${photoReview.reviewSq}]])">
 						<div class="pic">
-							<span class="thumb" th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+							<th:block th:if="${reviewAttach.fileGb == 'M'}">
+							<span class="thumb mov" th:style="${'background-image:url('+kollusMediaUrl+'/poster/'+reviewAttach.kmcKey+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+							</th:block>
+							<th:block th:unless="${reviewAttach.fileGb == 'M'}">
+							<span class="thumb" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span>
+							</th:block>
 						</div>
 					</a>
 					</th:block>
@@ -460,7 +470,7 @@
 				</li>
 			</ul>
 			<!-- 포토영상 게시글 최대 7개 & 버튼노출 -->
-			<div th:if="${#lists.size(photoReviewList) >= 1}">
+			<div th:if="${#lists.size(photoReviewList) >= 8}">
 				<div>
 					<button type="button" id="btn_more_photoreview" th:onclick="cfGoodsReviewPhoto([[${goodsInfo.goodsCd}]])"><span>더 보기</span></button>
 				</div>	
@@ -679,12 +689,16 @@
 			if (item.reviewAttachList != null && item.reviewAttachList.length > 0){
 				var fileGbClass = '';
 				$.each(item.reviewAttachList, function(aIdx, reviewAttach){
-					fileGbClass = '';
-					if (reviewAttach == "M") fileGbClass = "mov";
+//					fileGbClass = '';
+//					if (reviewAttach == "M") fileGbClass = "mov";
 			tag += '				<li>\n';
 			tag += '					<a href="javascript:void();" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\');">\n';
 			tag += '						<div class="pic">\n';
-			tag += '							<span class="thumb '+ fileGbClass +'" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+			if (reviewAttach.fileGb == "M") {
+			tag +='								<span class="thumb mov" style="background-image:url('+_kollusMediaUrl +'/poster/'+reviewAttach.kmcKey +');\" ></span>\n';
+				}else{
+			tag +='								<span class="thumb" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');\" ></span>\n';
+				}
 			tag += '						</div>\n';
 			tag += '					</a>\n';
 			tag += '				</li>\n';		

+ 2 - 3
src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewDetailFormMob.html

@@ -38,14 +38,13 @@
 								<div class="swiper-slide">
 									<div class="thumb " th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}">
 										<th:block th:if="${reviewAttach.fileGb == 'M'}">
-											<video poster="http://cdn.011st.com/11dims/resize/1999x1999/quality/75/11src/review/10201202/3121412332/2e66698576d64c5c9977a6fe6606008d.jpg" muted="muted" preload="metadata" controls="controls">
-												<source src="http://snsvideo.11st.co.kr/movie/item/www/675/67518524_06_1_C1.mp4" type="video/mp4">
-											</video>
+											<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+reviewAttach.kmcKey +'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" frameborder="0" allowfullscreen></iframe>
 										</th:block>
 										<th:block th:unless="${reviewAttach.fileGb == 'M'}">
 											<img th:src="${imgUrl+'/'+reviewAttach.sysFileNm}" alt="">
 										</th:block>
 									</div>
+									
 								</div>
 								</th:block>
 								</th:block>

+ 8 - 4
src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewPhotoFormMob.html

@@ -3,15 +3,15 @@
 	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : GoodsReviewPhotoFormMob.html
- * @desc	: 상품평 - 포토/영상 리스트 팝업
+ * @source  : PlanningReplyPhotoFormMob.html
+ * @desc	: 댓글 이미지 팝업
  *============================================================================
  * STYLE24
  * Copyright(C) 2020 TSIT, All rights reserved.
  *============================================================================
  * VER  DATE		 AUTHOR	  DESCRIPTION
  * ===  ===========  ==========  =============================================
- * 1.0  2021.04.008   eskim		최초 작성
+ * 1.0  2021.05.15   sowon		최초 작성
  *******************************************************************************
  -->
 <div class="modal-dialog" role="document">
@@ -70,7 +70,11 @@
 				tag += '				<li>\n';
 				tag += '					<a href="javascript:void();" onclick="fnGoodsReviewDetail(\''+item.reviewSq+'\');">\n';
 				tag += '						<div class="pic">\n';
-				tag += '							<span class="thumb '+ fileGbClass +'" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+				if ("I" ==reviewAttach.fileGb){
+				tag += '							<span class="thumb" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->	
+				}else{
+				tag += '							<span class="thumb mov" style="background-image:url('+_kollusMediaUrl+'/poster/'+reviewAttach.kmcKey+');"></span>\n';
+				}
 				tag += '						</div>\n';
 				tag += '					</a>\n';
 				tag += '				</li>\n';		

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

@@ -187,6 +187,7 @@
 						</table>
 					</div>
 				</div>
+				<div class="desc_txt">카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.</div>
 				<div class="required_group" id="addDeliveryFee" style="display:none">
 					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
 				</div>
@@ -438,32 +439,28 @@ var fnChangeCancelQty = function(param) {
 	let jsonData = JSON.stringify(data);
 
 	gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
-		// 환불포인트, 환불상품권 금액 계산
-		let refundPoint 		= Number(result.spanPntDcAmt);
-		let refundGiftCard 		= Number(result.spanGfcdUseAmt);
-
-		let spanCnclRtnAmt 		= Number(result.spanCnclRtnAmt);
-		let sumDeliveryFee 		= Number(result.sumDeliveryFee);
-		let spanTotDeliveryFee 	= Number(result.spanTotDeliveryFee);
-		let spanCpnDcAmt 		= Number(result.spanCpnDcAmt);
-		let spanTmtbDcAmt 		= Number(result.spanTmtbDcAmt);
-		let spanPrePntDcAmt 	= Number(result.spanPrePntDcAmt);
-		let spanRefundAmt 		= Number(result.spanRefundAmt);
-
-		let goodsCancelAmt 		= spanCnclRtnAmt;											// 상품취소금액
-		let deliveryFee 		= sumDeliveryFee - spanTotDeliveryFee;						// 배송비
-		let deductDcAmt 		= 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;		// 할인금액 차감(쿠폰+다다익선+선포인트)
-		let refundPayAmt 		= spanRefundAmt;											// 결제금액 환불
-		let returnAmt 			= refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
+		let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+		let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+		let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+		let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 쿠폰 할인 차감 금액
+		let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+		let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+		let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비
+		let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+		let spanRefundAmt = Number(result.spanRefundAmt);						// 환불 예정 금액
+		let goodsCancelAmt = spanCnclRtnAmt;									// 상품취소금액
+		let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;					// 배송비 (마지막 취소 시 돌려줘야할 원주문 배송비 - 추가배송비)
+		let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;	// 할인금액 차감 (쿠폰+다다익선+선포인트)
+		let refundPayAmt = spanRefundAmt;										// 결제금액 환불 (환불상품금액 - 할인차감금액 - 배송비)
+		let returnAmt = refundPayAmt + refundPoint + refundGiftCard;			// 환불예정금액
 
 		// 추가배송비 영역 설정
 		if (refundPayAmt < 0) {
-			refundPayAmt = spanRefundAmt;
-			$('#addDeliveryFee').css('display', '');
-			$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
+			//refundPayAmt = spanRefundAmt;
+			//$('#addDeliveryFee').css('display', '');
+			//$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
 			addPayCost = spanTotDeliveryFee;
 		} else {
-			$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
 			addPayCost = 0;
 		}
 
@@ -476,6 +473,9 @@ var fnChangeCancelQty = function(param) {
 		$('#refundPoint').text(refundPoint.addComma());
 		$('#refundGiftCard').text(refundGiftCard.addComma());
 	});
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
 }
 
 let isValid = false;

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

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

+ 27 - 41
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListFormMob.html

@@ -26,24 +26,6 @@
 	<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 변경 -->
@@ -163,20 +145,31 @@ $(document).ready(function() {
 	
 	// 주문상세상태코드 셀렉트박스 변경 이벤트
 	$('#odStatusPop .popup_con .button_list .ordDtlStat').on('click', function() {
-		$('#searchForm input[name=chgStat]').val($(this).attr('code'));
-		jsonObj.chgStat = $(this).attr('code');
-		
-		// 상태값 명칭
-		var ordDtlStatNm = $(this).find("span").text();
-		$(".container .my_return .od_status_btn").text(ordDtlStatNm);
-		
+		let code = $(this).attr('code');
+		$('#searchForm input[name=chgStat]').val(code);
+		jsonObj.chgStat = code;
+
+		$("#odStatusPop .popup_con button").removeClass("on");
+
+		// 상태값설정
+		$("#odStatusPop .popup_con button").each(function() {
+			var tempCode = $(this).attr("code");
+			if (tempCode == code) {
+				$(this).addClass("on");
+
+				// 상태값 명칭
+				var ordDtlStatNm = $(this).find("span").text();
+				$(".container .my_return .od_status_btn").text(ordDtlStatNm);
+			}
+		});
+
 		// 리헷
 		$("#listBox").html("");
-		
+
 		// 초기화설정
 		fnGetInfiniteScrollDataList(0);
 
-		// 팝업 닫기
+		// 팝업닫기
 		$(".popup_close").trigger("click");
 	});
 });
@@ -248,7 +241,7 @@ var fnSetSearchPeriod = function(period) {
 		}
 	});
 
-	// 팝업 닫기
+	// 팝업닫기
 	$(".popup_close").trigger("click");
 }
 
@@ -273,23 +266,16 @@ var fnGoToCreDetail = function(param) {
 
 	cfnGoToPage(_frontUrl + url);
 }
-
-// 취반교 배송조회 버튼 클릭 이벤트
-var fnGoToDeliveryTrack = function(param) {
-	let ordDtlNo = $(param).attr('ordDtlNo');
-	// TODO
-	// 최반교 배송조회 페이지 이동 처리
-}
 /*]]>*/
 </script>
 
 <script>
-	$(document).ready(function(){
-		$(document).on('click','.popup_box .button_list button',function(){
-			$('.popup_box .button_list button').removeClass('on');
-			$(this).addClass('on');
-		})
-	});
+	//$(document).ready(function(){
+	//	$(document).on('click','.popup_box .button_list button',function(){
+	//		$('.popup_box .button_list button').removeClass('on');
+	//		$(this).addClass('on');
+	//	})
+	//});
 
 	//기간 선택 팝업
 	$(document).on("click", ".order_sort .od_date_btn", function(){

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

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

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

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

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

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

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

@@ -150,59 +150,311 @@
 								
 								<!-- 배송중 (교환가능, 반품가능) -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
-									<!-- 교환가능, 반품가능 -->
-									<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
-										<div class="goods_btn_wrap btn_group_flex">
-											<th:block th:if="${ordDtl.changeableYn} == 'Y'">
-												<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
-											</th:block>
-											<th:block th:if="${ordDtl.returnableYn} == 'Y'">
-												<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
-											</th:block>
-										</div>
-									</th:block>
-									<!-- //교환가능, 반품가능 -->
-									
-									<!-- 리뷰사용가능, 리뷰등록전일때 -->
-									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
+									<div class="goods_btn_wrap btn_group_flex btn_count">
+										<!-- 교환불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+													<span>1:1 문의</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //교환불가 -->
+										<!-- 교환가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
+													<span>교환 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //교환가능 -->
+										<!-- 반품가능 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
+													<span>반품 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- 반품가능 -->
+										<!-- 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+											<div>
+												<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+													<span>1:1 문의</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //반품불가 -->
+
+										<!-- 교환불가, 반품불가 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'N' and ${ordDtl.changeableYn} == 'N'">
+											<div>
+												<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+													<span>1:1 문의</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //교환불가, 반품불가 -->
+
+										<div><button type="button" class="btn btn_default btn_delv_sch" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, shipCompCd=${ordDtl.shipCompCd}, invoiceNo=${ordDtl.invoiceNo}" onclick="fnGoToDelivery(this);"><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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
 										</th:block>
 										<!-- //리뷰사용가능, 리뷰등록전일때 -->
 									</div>
-									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+
+
+
+
+
+
+
+
+
+<!--									&lt;!&ndash; 버튼 4개 &ndash;&gt;-->
+<!--									<th:block th:unless="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">-->
+<!--										<div class="goods_btn_wrap btn_group_flex type1">-->
+<!--											&lt;!&ndash; 교환불가 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.changeableYn} == 'N'">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">-->
+<!--														<span>1:1 문의</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //교환불가 &ndash;&gt;-->
+<!--											&lt;!&ndash; 교환가능 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.changeableYn} == 'Y'">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');">-->
+<!--														<span>교환 신청</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //교환가능 &ndash;&gt;-->
+<!--											&lt;!&ndash; 반품가능 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.returnableYn} == 'Y'">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');">-->
+<!--														<span>반품 신청</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; 반품가능 &ndash;&gt;-->
+<!--											&lt;!&ndash; 반품불가 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.returnableYn} == 'N'">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">-->
+<!--														<span>1:1 문의</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //반품불가 &ndash;&gt;-->
+
+<!--											<div><button type="button" class="btn btn_default btn_delv_sch" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, shipCompCd=${ordDtl.shipCompCd}, invoiceNo=${ordDtl.invoiceNo}" onclick="fnGoToDelivery(this);"><span>배송 조회</span></button></div>-->
+
+<!--											&lt;!&ndash; 리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">-->
+<!--												<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--										</div>-->
+<!--										&lt;!&ndash; //리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--									</th:block>-->
+<!--									&lt;!&ndash; //버튼 4개 &ndash;&gt;-->
+<!--									&lt;!&ndash; 버튼 3개 &ndash;&gt;-->
+<!--									<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">-->
+<!--										<div class="goods_btn_wrap btn_group_flex">-->
+<!--											<div>-->
+<!--												<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">-->
+<!--													<span>1:1 문의</span>-->
+<!--												</button>-->
+<!--											</div>-->
+<!--											<div>-->
+<!--												<button type="button" th:id="btn_purchase_confirm" class="btn btn_primary" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);">-->
+<!--													<span>구매 확정</span>-->
+<!--												</button>-->
+<!--											</div>-->
+<!--											&lt;!&ndash; 리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_primary btn_review_write" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:goodsCd="${ordDtl.goodsCd}" onclick="fnCreateReview(this);">-->
+<!--														<span>리뷰 쓰기</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--										</div>-->
+<!--									</th:block>-->
+<!--									&lt;!&ndash; //버튼 3개 &ndash;&gt;-->
 								</th:block>
 								<!-- //배송중 (교환가능, 반품가능) -->
-								
+
 								<!-- 배송완료 (교환가능, 반품가능) -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
-									<div class="goods_btn_wrap btn_group_flex">
-										<!-- 교환가능, 반품가능 -->
+									<div class="goods_btn_wrap btn_group_flex btn_count">
+										<!-- 교환불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+													<span>1:1 문의</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //교환불가 -->
+										<!-- 교환가능 -->
 										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
-											<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+											<div>
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
+													<span>교환 신청</span>
+												</button>
+											</div>
 										</th:block>
+										<!-- //교환가능 -->
+										<!-- 반품가능 -->
 										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
-											<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+											<div>
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
+													<span>반품 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //반품가능 -->
+										<!-- 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+											<div>
+												<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+													<span>1:1 문의</span>
+												</button>
+											</div>
 										</th:block>
-										<!-- //교환가능, 반품가능 -->
-										
+										<!-- //반품불가 -->
 										<!-- 교환불가, 반품불가 -->
-										<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
-											<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										<th:block th:if="${ordDtl.returnableYn} == 'N' and ${ordDtl.changeableYn} == 'N'">
+											<div>
+												<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+													<span>1:1 문의</span>
+												</button>
+											</div>
 										</th:block>
 										<!-- //교환불가, 반품불가 -->
-									</div>
-									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></div>
+
+										<!-- 구매확정 -->
+										<th:block th:if="${ordDtl.ordReqChgQty == 0}">
+											<div>
+												<button type="button" th:id="btn_purchase_confirm" class="btn btn_primary" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);">
+													<span>구매 확정</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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+											<div>
+												<button type="button" class="btn btn_primary btn_review_write" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:goodsCd="${ordDtl.goodsCd}" onclick="fnCreateReview(this);">
+													<span>리뷰 쓰기</span>
+												</button>
+											</div>
 										</th:block>
 										<!-- //리뷰사용가능, 리뷰등록전일때 -->
 									</div>
+
+
+
+
+
+
+
+
+
+
+
+									<!-- 버튼4개 -->
+<!--									<th:block th:unless="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">-->
+<!--										<div class="goods_btn_wrap btn_group_flex type1">-->
+<!--											&lt;!&ndash; 교환불가 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.changeableYn} == 'N'">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">-->
+<!--														<span>1:1 문의</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //교환불가 &ndash;&gt;-->
+<!--											&lt;!&ndash; 교환가능 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.changeableYn} == 'Y'">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');">-->
+<!--														<span>교환 신청</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //교환가능 &ndash;&gt;-->
+<!--											&lt;!&ndash; 반품가능 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.returnableYn} == 'Y'">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');">-->
+<!--														<span>반품 신청</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //반품가능 &ndash;&gt;-->
+<!--											&lt;!&ndash; 반품불가 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.returnableYn} == 'N'">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">-->
+<!--														<span>1:1 문의</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //반품불가 &ndash;&gt;-->
+<!--											<div>-->
+<!--												<button type="button" th:id="btn_purchase_confirm" class="btn btn_primary" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);">-->
+<!--													<span>구매 확정</span>-->
+<!--												</button>-->
+<!--											</div>-->
+<!--											&lt;!&ndash; 리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_primary btn_review_write" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:goodsCd="${ordDtl.goodsCd}" onclick="fnCreateReview(this);">-->
+<!--														<span>리뷰 쓰기</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--										</div>-->
+<!--									</th:block>-->
+									<!-- //버튼 4개 -->
+									<!-- 버튼 3개 -->
+<!--									<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">-->
+<!--										<div class="goods_btn_wrap btn_group_flex">-->
+<!--											<div>-->
+<!--												<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">-->
+<!--													<span>1:1 문의</span>-->
+<!--												</button>-->
+<!--											</div>-->
+<!--											<div>-->
+<!--												<button type="button" th:id="btn_purchase_confirm" class="btn btn_primary" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);">-->
+<!--													<span>구매 확정</span>-->
+<!--												</button>-->
+<!--											</div>-->
+<!--											&lt;!&ndash; 리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--											<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">-->
+<!--												<div>-->
+<!--													<button type="button" class="btn btn_primary btn_review_write" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:goodsCd="${ordDtl.goodsCd}" onclick="fnCreateReview(this);">-->
+<!--														<span>리뷰 쓰기</span>-->
+<!--													</button>-->
+<!--												</div>-->
+<!--											</th:block>-->
+<!--											&lt;!&ndash; //리뷰사용가능, 리뷰등록전일때 &ndash;&gt;-->
+<!--										</div>-->
+<!--									</th:block>-->
+									<!-- //버튼 3개 -->
 								</th:block>
 								<!-- //배송완료 (교환가능, 반품가능) -->
 								
@@ -237,7 +489,7 @@
 								
 								<!-- 배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
-									<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+									<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
 								</th:block>
 								<!-- //배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								
@@ -267,19 +519,19 @@
 											<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
 										</th:block>
 										<!-- //교환불가능, 반품불가능 -->
-										
+
 										<!-- 교환불가능 -->
-										<th:block th:if="${ordDtl.changeableYn} == 'N'">
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
 											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
 										</th:block>
 										<!-- //교환불가능 -->
-										
+
 										<!-- 반품불가능 -->
-										<th:block th:if="${ordDtl.returnableYn} == 'N'">
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
 											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
 										</th:block>
 										<!-- //반품불가능 -->
-										
+
 									</th:block>
 									<!-- //배송중, 배송완료 상태 -->
 								</div>
@@ -502,7 +754,7 @@
 								<div class="ship_info ship_edit">
 									<!--  배송비정보변경가능 -->
 									<th:block th:if="${allCanYn == 'Y'}">
-										<button type="button" id="btn_adrsChange_pop" class="btn_popup">
+										<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeDeliveryAddr();">
 											<span>배송지 변경</span>
 										</button>
 									</th:block>
@@ -751,6 +1003,13 @@
 			}
 		});
 		*/
+
+		// 버튼 클래스 설정
+		$.each($('.btn_count'), function(idx, item) {
+			if ($(item).children().length > 3 && !$(item).hasClass('type1')) {
+				$(item).addClass('type1');
+			}
+		});
 	});
 	
 	// 2.1 회원 배송지변경 팝업열기

+ 20 - 43
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html

@@ -29,30 +29,6 @@
 </form>
 <!-- //주문목록조회 -->
 
-<!-- 교환상세 -->
-<form id="exchangeForm" name="exchangeForm" action="#" th:action="@{'/mypage/exchange/form'}" th:method="post">
-	<input type="hidden" name="ordNo"/>
-	<input type="hidden" name="ordDtlNo"/>
-	<input type="hidden" name="delvFeeCd"/>
-</form>
-<!-- //교환상세 -->
-
-<!-- 반품상세 -->
-<form id="returnForm" name="returnForm" action="#" th:action="@{'/mypage/return/form'}" th:method="post">
-	<input type="hidden" name="ordNo"/>
-	<input type="hidden" name="ordDtlNo"/>
-	<input type="hidden" name="delvFeeCd"/>
-</form>
-<!-- //반품상세 -->
-
-<!-- 취소상세 -->
-<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cancel/form'}" th:method="post">
-	<input type="hidden" name="ordNo"/>
-	<input type="hidden" name="ordDtlNo"/>
-	<input type="hidden" name="delvFeeCd"/>
-</form>
-<!-- //취소상세 -->
-
 <main role="" id="" class="container my">
 	<section class="content my_order">
 		
@@ -275,13 +251,24 @@ $(document).ready(function() {
 	
 	// 주문상세상태코드 셀렉트박스 변경 이벤트
 	$('#odStatusPop .popup_con .button_list .ordDtlStat').on('click', function() {
-		$('#searchForm input[name=ordDtlStat]').val($(this).attr('code'));
-		jsonObj.ordDtlStat = $(this).attr('code');
-		
-		// 상태값 명칭
-		var ordDtlStatNm = $(this).find("span").text();
-		$(".container .my_order .od_status_btn").text(ordDtlStatNm);
-		
+		let code = $(this).attr('code');
+		$('#searchForm input[name=ordDtlStat]').val(code);
+		jsonObj.ordDtlStat = code;
+
+		$("#odStatusPop .popup_con button").removeClass("on");
+
+		// 상태값설정
+		$("#odStatusPop .popup_con button").each(function() {
+			var tempCode = $(this).attr("code");
+			if (tempCode == code) {
+				$(this).addClass("on");
+
+				// 상태값 명칭
+				var ordDtlStatNm = $(this).find("span").text();
+				$(".container .my_order .od_status_btn").text(ordDtlStatNm);
+			}
+		});
+
 		// 리헷
 		$("#listBox").html("");
 		
@@ -332,13 +319,10 @@ var fnGetInfiniteScrollDataList = function(pageNo) {
 				// 인피니티 스크롤 기억기능
 				//gagaInfiniteScroll.draw(result);
 				//gagaInfiniteScroll.draw('not');
-				
+
 			}
 		}
 	});
-	
-	//$("#searchForm input[name=pageNo]").val(pageNo+1);
-	//gagajf.ajaxFormSubmit("/mypage/order/listInfo2", document.searchForm,  gagaInfiniteScroll.jsonToHtml);
 }
 
 //검색기간 버튼 클릭 이벤트 처리
@@ -372,7 +356,7 @@ var fnSetSearchPeriod = function(period) {
 	});
 
 	// 팝업닫기
-		$(".popup_close").trigger("click");
+	$(".popup_close").trigger("click");
 }
 
 // 2021.04.21 인피니티 스크롤 기능 구현전 추후 수정
@@ -409,13 +393,6 @@ $(function() { gagaInfiniteScroll.getHistory(); });
 </script>
 
 <script>
-	$(document).ready(function(){
-		$(document).on('click','.popup_box .button_list button',function(){
-			$('.popup_box .button_list button').removeClass('on');
-			$(this).addClass('on');
-		})
-	});
-
 	//기간 선택 팝업
 	$(document).on("click", ".order_sort .od_date_btn", function(){
 		$('#odDatePop').show().addClass("active");

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

@@ -126,7 +126,7 @@
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
 								<div class="goods_btn_wrap btn_group_flex">
 									<div>
-										<button type="button" class="btn btn_default btn_cncl_complete" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');">
+										<button type="button" class="btn btn_default btn_cncl_complete" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');">
 											<span>주문 취소</span>
 										</button>
 									</div>
@@ -141,61 +141,106 @@
 							
 							<!-- 배송중 (교환가능, 반품가능) -->
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
-								<!-- 교환가능, 반품가능 -->
-								<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
-									<div class="goods_btn_wrap btn_group_flex">
-										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
-											<div>
-												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');">
-													<span>교환 신청</span>
-												</button>
-											</div>
-										</th:block>
-										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
-											<div>
-												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');">
-													<span>반품 신청</span>
-												</button>
-											</div>
-										</th:block>
-									</div>
-								</th:block>
-								<!-- //교환가능, 반품가능 -->
-								
-								<!-- 리뷰사용가능, 리뷰등록전일때 -->
-								<div class="goods_btn_wrap btn_group_flex">
+								<div class="goods_btn_wrap btn_group_flex btn_count">
+									<!-- 교환불가 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+										<div>
+											<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+												<span>1:1 문의</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- //교환불가 -->
+									<!-- 교환가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+										<div>
+											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
+												<span>교환 신청</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- //교환가능 -->
+									<!-- 반품가능 -->
+									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+										<div>
+											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
+												<span>반품 신청</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- 반품가능 -->
+									<!-- 반품불가 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+										<div>
+											<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+												<span>1:1 문의</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- //반품불가 -->
+
+									<!-- 교환불가, 반품불가 -->
+									<th:block th:if="${ordDtl.returnableYn} == 'N' and ${ordDtl.changeableYn} == 'N'">
+										<div>
+											<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+												<span>1:1 문의</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- //교환불가, 반품불가 -->
+
 									<div><button type="button" class="btn btn_default btn_delv_sch" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, shipCompCd=${ordDtl.shipCompCd}, invoiceNo=${ordDtl.invoiceNo}" onclick="fnGoToDelivery(this);"><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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
 									</th:block>
 									<!-- //리뷰사용가능, 리뷰등록전일때 -->
 								</div>
-								<!-- //리뷰사용가능, 리뷰등록전일때 -->
 							</th:block>
 							<!-- //배송중 (교환가능, 반품가능) -->
 								
 							<!-- 배송완료 (교환가능, 반품가능) -->
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
-								<div class="goods_btn_wrap btn_group_flex">
-									<!-- 교환가능, 반품가능 -->
+								<div class="goods_btn_wrap btn_group_flex btn_count">
+									<!-- 교환불가 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+										<div>
+											<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+												<span>1:1 문의</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- //교환불가 -->
+									<!-- 교환가능 -->
 									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
 										<div>
-											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');">
+											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
 												<span>교환 신청</span>
 											</button>
 										</div>
 									</th:block>
+									<!-- //교환가능 -->
+									<!-- 반품가능 -->
 									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
 										<div>
-											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');">
+											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
 												<span>반품 신청</span>
 											</button>
 										</div>
 									</th:block>
-									<!-- //교환가능, 반품가능 -->
+									<!-- //반품가능 -->
+									<!-- 반품불가 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+										<div>
+											<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
+												<span>1:1 문의</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- //반품불가 -->
 									<!-- 교환불가, 반품불가 -->
-									<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
+									<th:block th:if="${ordDtl.returnableYn} == 'N' and ${ordDtl.changeableYn} == 'N'">
 										<div>
 											<button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);">
 												<span>1:1 문의</span>
@@ -203,13 +248,17 @@
 										</div>
 									</th:block>
 									<!-- //교환불가, 반품불가 -->
-								</div>
-								<div class="goods_btn_wrap btn_group_flex">
-									<div>
-										<button type="button" id="btn_purchase_confirm" class="btn btn_primary" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);">
-											<span>구매 확정</span>
-										</button>
-									</div>
+
+									<!-- 구매확정 -->
+									<th:block th:if="${ordDtl.ordReqChgQty == 0}">
+										<div>
+											<button type="button" th:id="btn_purchase_confirm" class="btn btn_primary" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);">
+												<span>구매 확정</span>
+											</button>
+										</div>
+									</th:block>
+									<!-- //구매확정 -->
+
 									<!-- 리뷰사용가능, 리뷰등록전일때 -->
 									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
 										<div>
@@ -263,7 +312,7 @@
 								<!-- 배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
 									<div>
-										<button type="button" class="btn btn_default btn_cncl_complete" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');">
+										<button type="button" class="btn btn_default btn_cncl_complete" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');">
 											<span>주문 취소</span>
 										</button>
 									</div>
@@ -300,13 +349,13 @@
 								<!-- //교환불가능, 반품불가능 -->
 
 								<!-- 교환불가능 -->
-								<th:block th:if="${ordDtl.changeableYn} == 'N'">
+								<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
 									<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
 								</th:block>
 								<!-- //교환불가능 -->
 
 								<!-- 반품불가능 -->
-								<th:block th:if="${ordDtl.returnableYn} == 'N'">
+								<th:block th:if="${ordDtl.returnableYn} == 'N'and ${ordDtl.returnableYn} == 'Y'">
 									<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
 								</th:block>
 								<!-- //반품불가능 -->
@@ -440,6 +489,12 @@
 </div>
 
 <script th:inline="javascript">
+// 버튼 클래스 설정
+$.each($('.btn_count'), function(idx, item) {
+	if ($(item).children().length > 3 && !$(item).hasClass('type1')) {
+		$(item).addClass('type1');
+	}
+});
 </script>
 
 </th:block>

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

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

+ 660 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCancelFormMob.html

@@ -0,0 +1,660 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="mob/common/layout/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberCancelFormMob.html
+ * @desc    : 비회원 > 취소신청 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.14   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+
+<main class="container my">
+	<section class="content my_return">
+		<form id="cancelForm" class="form_wrap">
+			<input type="hidden" name="accountNo" 	th:value="${oneData.accountNo}"/>
+			<input type="hidden" name="accountNm" 	th:value="${oneData.accountNm}"/>
+			<input type="hidden" name="bankCd" 		th:value="${oneData.bankCd}"/>
+					
+			<div class="inner wide bg_beige">
+				<div class="order_number">
+					<dl class="clear">
+						<dt>주문번호</dt>
+						<dd th:text="${oneData.ordNo}"></dd>
+					</dl>
+				</div>
+			</div>
+			<div class="inner">
+				<div class="part_goods">
+					<div class="goods_top">
+						<div class="goods_date">주문일<span class="date" th:text="${oneData.ordDt}"></span></div>
+					</div>
+					
+					<!-- 취소상품목록 -->
+					<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_detail">
+								<a href="">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + cancel.sysImgNm + '?RS=90'}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${cancel.brandNm}"></span>
+												<div class="badge_wrap">
+													<em class="tag primary" th:if="${cancel.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="tag" 		th:if="${cancel.shotDelvYn == 'N' and cancel.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="tag" 		th:if="${cancel.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
+											</div>
+											<div class="name" th:text="${cancel.goodsNm}"></div>
+										</div>
+										<div class="od_opt">
+												<div class="option">
+													<th:block th:if="${cancel.goodsType == 'G056_S'}" th:each="option, status : ${cancel.colorNmArr}">
+														<em th:text="${cancel.itemNmArr[status.index]}"></em>
+														<em th:text="${cancel.optCd2Arr[status.index]}"></em>
+													</th:block>
+													<th:block th:unless="${cancel.goodsType == 'G056_S'}">
+														<em th:text="${cancel.colorNm}"></em>
+														<em th:text="${cancel.optCd2}"></em>
+													</th:block>
+												</div>
+										</div>
+										<div class="od_calc">
+											<th:block th:if="${(cancel.ordAmt - cancel.cnclRtnAmt) > (cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt)}">
+												<p class="sale_price">
+													<del><em th:text="${#numbers.formatInteger(cancel.ordAmt - cancel.cnclRtnAmt, 1, 'COMMA')}"></em>원</del>
+												</p>
+											</th:block>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+											</p>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="goods_select">
+								<div class="select_custom select_count">
+									<div class="combo">
+										<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${cancel.ordDtlNo}, ordCanChgQty=${cancel.ordCanChgQty}"/>
+										<div class="select">수량 0개</div>
+									</div>
+								</div>
+							</div>
+							<th:block th:if="${#lists.size(cancelList.cancelList) == status.count}">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">취소하실 상품의 수량을 선택하신 후<br>취소 신청을 하실 수 있습니다.</p>
+								</div>
+							</th:block>
+						</div>
+					</th:block>
+					<!-- //취소상품목록 -->
+					
+				</div>
+			</div>
+			<div class="inner">
+				<div class="tbl_wrap pay_wrap">
+					<div class="tbl_tit"> 
+						<h3>환불 정보</h3>
+						<strong class="pay"><span id="returnAmt">0</span>원</strong>
+					</div>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="227">
+								<col width="*">
+							</colgroup>   
+							<tr>
+								<td>
+									<dl class="refund_deduct">
+										<div>
+											<dt>상품 취소 금액</dt>
+											<dd>
+												<div>
+													<span id="goodsCancelAmt">0</span>원
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>배송비</dt>
+											<dd>
+												<div>
+													<span id="deliveryFee">0</span>원
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>할인 금액 차감</dt>
+											<dd>
+												<div>
+													<span id="deductDcAmt">0</span>원
+												</div>
+											</dd>
+										</div>
+									</dl>
+									<dl class="refund_detail">
+										<div>
+											<dt>환불 수단</dt>
+											<dd>
+												<div>
+													<span th:if="${paymentInfo.pgGb == 'KCP'}" th:text="${paymentInfo.payMeansNm}"></span>
+													<span th:if="${paymentInfo.pgGb == 'NAVER'}" th:text="|네이버페이|"></span>
+													<span th:if="${paymentInfo.pgGb == 'KAKAO'}" th:text="|카카오페이|"></span>
+													<span th:if="${paymentInfo.pgGb == 'PAYCO'}" th:text="|PAYCO|"></span>
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>결제금액 환불</dt>
+											<dd>
+												<div>
+													<span id="refundPayAmt">0</span>원
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>포인트 환불</dt>
+											<dd>
+												<div>
+													<span id="refundPoint">0</span>P
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>상품권 환불</dt>
+											<dd>
+												<div>
+													<span id="refundGiftCard">0</span>원
+												</div>
+											</dd>
+										</div>
+									</dl>
+								</td>
+							</tr>
+						</table>
+					</div>
+				</div>
+				<div class="desc_txt">카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.</div>
+				<div class="required_group" id="addDeliveryFee" style="display:none">
+					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
+				</div>
+				<div class="btn_group btn_group_flex">
+					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);"><span>취소</span></button></div>
+					<div><button type="button" class="btn btn_dark" onclick="fnCancel();"><span>주문 취소</span></button></div>
+				</div>
+			</div>
+		</form>
+	</section>
+</main>
+
+<!-- 210408_취소 수량 선택 팝업 -->
+<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}">
+	<div class="popup_box cancelCountPop">
+		<div class="lap">
+			<div class="popup_close">카테고리닫기</div>
+			<div class="popup_head sr-only">
+				<h2 class="">주문상태 선택 팝업</h2>
+			</div>
+			<div class="popup_con">
+				<div class="button_list clear">
+					<button type="button" qty=0 onclick="fnChangeCancelQty(this);"><span>수량 0개</span></button>
+					<th:block th:each="num : ${#numbers.sequence(1, cancel.ordCanChgQty)}">
+						<button type="button" th:qty="${num}" onclick="fnChangeCancelQty(this);"><span th:text="|수량 ${num}개|"></span></button>
+					</th:block>
+					<input type="hidden" name="ordDtlNo" th:value="${cancel.ordDtlNo}">
+				</div> 
+			</div>
+		</div>
+	</div>
+</th:block>
+<!-- //210408_취소 수량 선택 팝업 -->
+
+<!-- 210408_ 추가 : 환불 계좌 등록 팝업 -->
+<div id="refundAccountPop" class="popup_box refundAccountPop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">환불 계좌 등록 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="tbl_wrap">
+				<div class="tbl_tit"> 
+					<h3>환불 계좌 등록</h3>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="*">
+						</colgroup>   
+						<tbody>
+							<tr>
+								<th>예금주</th>
+								<td>
+									<div class="form_field">
+										<input type="text" name="accountNm" class="form_control" th:value="${ordNm}" placeholder="이름를 입력해 주세요" readonly="readonly">
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th>은행명</th>
+								<td>
+									<div class="form_field">
+										<div class="select_custom select_bank">
+											<div class="combo">
+												<div class="select">선택</div>
+												<input type="hidden" name="bankCd" value=""/>
+											</div>
+										</div>
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th>계좌번호</th>
+								<td>
+									<div class="input_wrap certi_wrap">
+										<input type="tel" class="form_control" value="" placeholder="">
+										<button type="button" id="btn_bank_certi" class="btn btn_dark"><span>계좌인증</span></button>
+									</div>
+								</td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			
+		</div>
+		<div class="pop_foot">
+			<div class="btn_group_flex">
+				<div class="">
+					<button type="submit" id="btn_bank_return" class="btn btn_dark btn_block"><span>계좌 등록 후 환불 신청</span></button>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210408_ 추가 : 환불 계좌 등록 토스트 팝업 -->
+
+<!-- 210408_ 추가 : 은행 선택 팝업 -->
+<div id="refundBankPop" class="popup_box refundBankPop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">은행 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<th:block th:if="${bankList}" th:each="oneData, status : ${bankList}">
+					<button type="button" th:id="|bankCd_${oneData.cd}|"><span th:text="${oneData.cdNm}"></span></button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210408_ 추가 : 은행 선택 팝업 -->
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+let cancelList 		= [[${cancelList}]];
+let oneData 		= [[${oneData}]];
+let paymentInfo 	= [[${paymentInfo}]];
+let addPayCost 		= 0;
+
+$(document).ready(function() {
+	// 타이틀명
+	$('#htopTitle').text('주문취소');
+});
+
+// 취소수량버튼기능
+$("#cancelForm .select_custom.select_count").each(function(idx){
+	$(this).on("click", function(){
+		// 전체비활성화
+		$(".cancelCountPop").hide();
+		
+		// 수량팝업활성화
+		$(".cancelCountPop").eq(idx).show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
+});
+
+// 취소 처리
+var fnCancel = function() {
+	// 주문상세번호 및 취소 수량 설정
+	let ordDtlNoArr 			= [];
+	let cnclRtnReqQtyArr 		= [];
+	let chkQty 					= 0;
+	
+	$.each($('#cancelForm input[name=chgQty]'), function(idx, item) {
+		let chgQty 		= $(item).val();
+		let ordDtlNo 	= $(item).attr('ordDtlNo');
+		
+		ordDtlNoArr.push(Number(ordDtlNo));
+		cnclRtnReqQtyArr.push(Number(chgQty));
+		chkQty += chgQty;
+	});
+
+	// 취소 수량 체크
+	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;
+		
+		$('#refundAccountPop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+		
+		return false;
+	}
+
+	// 취소요청 데이터 설정
+	let url = '/noMember/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('/noMember/wms/cancel/available', jsonData, function(result) {
+		if (result.cancelYn == 'Y') {
+			// 취소 처리
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+				cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);
+			});
+		} else {
+			mcxDialog.alert('이미 배송처리 되어 취소 처리에 실패 하였습니다.');
+		}
+	});
+}
+
+// 취소 수량 변경 이벤트 처리
+var fnChangeCancelQty = function(param) {
+	let url = '/noMember/cancel/refund/amt/calculate';
+	
+	// 취소수량설정
+	if (param != null) {
+		$("#cancelForm input[name=chgQty]").each(function(idx){
+			var ordDtlNo = $(this).attr("ordDtlNo");
+			if (ordDtlNo == $(param).parent().find("input[name=ordDtlNo]").val()) {
+				$(this).val($(param).attr("qty"));
+				$(this).parent().find(".select").text($(param).find("span").text());
+			}
+		});
+	}
+
+	// 취소 수량 설정
+	let cnclRtnReqQtyArr 	= [];
+	let ordDtlNoArr 		= [];
+	let ordCanChgQtyArr 	= [];
+	
+	$.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 spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 쿠폰 할인 차감 금액
+		let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+		let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+		let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비
+		let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+		let spanRefundAmt = Number(result.spanRefundAmt);						// 환불 예정 금액
+		let goodsCancelAmt = spanCnclRtnAmt;									// 상품취소금액
+		let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;					// 배송비 (마지막 취소 시 돌려줘야할 원주문 배송비 - 추가배송비)
+		let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;	// 할인금액 차감 (쿠폰+다다익선+선포인트)
+		let refundPayAmt = spanRefundAmt;										// 결제금액 환불 (환불상품금액 - 할인차감금액 - 배송비)
+		let returnAmt = refundPayAmt + refundPoint + refundGiftCard;			// 환불예정금액
+
+		// 추가배송비 영역 설정
+		if (refundPayAmt < 0) {
+			//refundPayAmt = spanRefundAmt;
+			//$('#addDeliveryFee').css('display', '');
+			//$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
+			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());
+	});
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
+}
+
+let isValid = false;
+
+// 계좌인증
+$('#btn_bank_certi').on('click', function () {
+	
+	if (gagajf.isNull($('#refundAccountPop input[name=bankCd]').val())) {
+		mcxDialog.alert('은행을 선택해주세요.');
+		return false;
+	}
+	
+	if (gagajf.isNull($('#refundAccountPop input[name=accountNo]').val())) {
+		mcxDialog.alert('계좌번호를 입력해주세요.');
+		return false;
+	}
+	
+	if (!isValid) {
+		let url 		= '/noMember/account/check';
+		let accountNm 	= $('#refundAccountPop input[name=accountNm]').val();
+		let accountNo 	= $('#refundAccountPop input[name=accountNo]').val();
+		let bankCd 		= $('#refundAccountPop input[name=bankCd]').val();
+		
+		let data = {};
+		data.accountNm 	= accountNm;
+		data.accountNo 	= accountNo;
+		data.bankCd 	= bankCd;
+		data.ordNo 		= ordNo;
+		
+		let jsonData = JSON.stringify(data);
+		
+		gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
+			isValid = result.isValid;
+			
+			if (isValid) {
+				mcxDialog.alert('계좌인증에 성공했습니다.');
+				// 계좌인증 성공 시 Disabled 처리
+				$('#refundAccountPop .select_custom.select_bank').attr('disabled', true);
+				$('#refundAccountPop input[name=accountNo]').attr('disabled', true);
+				return false;
+			} else {
+				mcxDialog.alert('계좌정보를 다시 확인해주세요.');
+				return false;
+			}
+		});
+	}
+});
+
+//계좌등록 후 환불신청 버튼 클릭 이벤트
+$('#btn_bank_return').click(function() {
+	if (isValid) {
+		let accountNm 	= $('#refundAccountPop input[name=accountNm]').val();
+		let accountNo 	= $('#refundAccountPop input[name=accountNo]').val();
+		let bankCd 		= $('#refundAccountPop input[name=bankCd]').val();
+		
+		// 부모창의 input 값으로 환불계좌정보 설정
+		$('#returnForm input[name=accountNo]').val(accountNo);
+		$('#returnForm input[name=accountNm]').val(accountNm);
+		$('#returnForm input[name=bankCd]').val(bankCd);
+
+		// 팝업 닫기
+		$(".close-modal").trigger("click");
+		
+		// 취소신청
+		fnCancel();
+	} else {
+		mcxDialog.alert('계좌인증이 필요합니다.');
+	}
+});
+
+//팝업_닫기
+$('.popup_close').on("click",function(){
+	$('.popup_box').hide().removeClass('active');
+	$("body").css({"overflow":"visible"});
+});
+</script>
+
+<script>
+// 버튼 색
+$(document).on('click','.popup_box .button_list button',function(){
+	$('.popup_box .button_list button').removeClass('on');
+	$(this).addClass('on');
+});
+
+// 210408_송장번호 input 글자 수 제한
+function handleOnInput(el, maxlength) {
+	if(el.value.length > maxlength)  {
+		el.value = el.value.substr(0, maxlength);
+	}
+}
+
+$(document).ready(function(){
+	/*
+	// 세부 사유 글자 수 제한
+	$('.doc_return').keyup(function(e){
+		var content = $(this).val();
+		$('#return_cnt').html(content.length);
+		if (content.length > 200){
+			mcxDialog.alert("최대 200자까지 입력 가능합니다."); //210420_수정 : 시스템 alert -> dialog 변경.
+			$(this).val(content.substring(0, 200));
+			$('#return_cnt').html("200");
+		}
+	});
+
+	//210408_추가 : 스크립트 추가.
+	//반품회수방법 선택 스크립트 추가
+	$(document).on('change','.my_return .retrieve_method #rdi_retrieve_visit',function(e){
+		$('.my_return .retrieve_box.direct').hide();
+		$('.my_return .retrieve_box.visit').show();
+		return false;
+	}).on('change','.my_return .retrieve_method #rdi_retrieve_direct',function(e){
+		$('.my_return .retrieve_box.visit').hide();
+		$('.my_return .retrieve_box.direct').show();
+		return false;
+	});
+
+	//버튼 색
+	$(document).on('click','.popup_box .button_list button',function(){
+		$('.popup_box .button_list button').removeClass('on');
+		$(this).addClass('on');
+	});
+
+	// 반품 수량 선택 팝업
+	//$(document).on("click",".select_custom.select_count",function(e){
+		//$('#returnCountPop').show().addClass("active");
+		//$("body").css({"overflow":"hidden"});
+	//});
+
+	//반품 사유 선택 팝업
+	$(document).on("click",".select_custom.select_return",function(e){
+		$('#returnReasonPop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
+
+	//팝업_닫기
+	$('.popup_close').on("click",function(){
+		$('.popup_box').hide().removeClass('active');
+		$("body").css({"overflow":"visible"});
+	});
+
+	//배송지추가_팝업
+	$(document).on('click','#btn_adrsAdd_pop',function(e){
+		$("#adrsAddPop").modal("show");
+		return false;
+	});      
+	$("#adrsAddPop_close").click(function() {
+		$("#adrsAddPop").modal("hide");
+	});
+
+	//배송지정보_팝업
+	$(document).on('click','#btn_adrsChange_pop',function(e){
+		$("#adrsChangePop").modal("show");
+		return false;
+	});
+	$("#adrsChangePop_close").click(function() {
+		$("#adrsChangePop").modal("hide");
+	});
+
+	//배송지수정_팝업
+	$(document).on('click','#btn_addrModify_pop',function(e){
+		$("#adrsModifyPop").modal("show");
+		return false;
+	});
+	$("#adrsModifyPop_close").click(function() {
+		$("#adrsModifyPop").modal("hide");
+	});
+
+	$(document).on("click", "#btn_order_return", function(){
+		mcxDialog.alert("반품 신청이 접수되었습니다.", {
+				//alert("반품하실 상품의 수량을 선택해주세요.") : 클릭 시 반품 수량을 모두 0개로 선택한 경우
+				//alert("반품 사유를 선택해주세요.") : 반품 사유를 선택하지 않는 경우
+			sureBtnText: "확인",  // Confirmation button text
+		});
+	});
+	*/
+
+});
+</script>
+
+</th:block>
+
+</body>
+</html>

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

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

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

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

+ 20 - 14
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListFormMob.html

@@ -31,6 +31,19 @@
 
 <main role="" id="" class="container my">
 	<section class="content my_order"> <!-- 210409_수정 : class my_return 변경 -->
+		<!-- page nav -->
+		<nav class="pnb">
+			<ul>
+				<li>
+					<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);">주문확인/배송조회</a>
+				</li>
+				<li>
+					<a href="javascript:void(0)" class="on" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);">취소/반품/교환내역</a>
+				</li>
+			</ul>
+		</nav>
+		<!-- //page nav -->
+
 		<div class="inner">
 			<div class="order_sort">
 				<a href="javascript:void(0);" class="od_date_btn">최근 3개월</a>
@@ -157,7 +170,7 @@ $(document).ready(function() {
 
 		$("#odStatusPop .popup_con button").removeClass("on");
 
-		// 기간설정
+		// 상태값설정
 		$("#odStatusPop .popup_con button").each(function() {
 			var tempCode = $(this).attr("code");
 			if (tempCode == code) {
@@ -270,23 +283,16 @@ var fnGoToCreDetail = function(param) {
 
 	cfnGoToPage(_frontUrl + url);
 }
-
-// 취반교 배송조회 버튼 클릭 이벤트
-var fnGoToDeliveryTrack = function(param) {
-	let ordDtlNo = $(param).attr('ordDtlNo');
-	// TODO
-	// 최반교 배송조회 페이지 이동 처리
-}
 /*]]>*/
 </script>
 
 <script>
-	$(document).ready(function(){
-		$(document).on('click','.popup_box .button_list button',function(){
-			$('.popup_box .button_list button').removeClass('on');
-			$(this).addClass('on');
-		})
-	});
+	//$(document).ready(function(){
+	//	$(document).on('click','.popup_box .button_list button',function(){
+	//		$('.popup_box .button_list button').removeClass('on');
+	//		$(this).addClass('on');
+	//	})
+	//});
 
 	//기간 선택 팝업
 	$(document).on("click", ".order_sort .od_date_btn", function(){

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

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

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

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

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

@@ -0,0 +1,368 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="mob/common/layout/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberDeliveryInfoFormMob.html
+ * @desc    : 비회원 > 배송조회 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="noMemberDeliveryInfoForm" class="container my">
+	<section class="content my_order">
+		<div class="inner wide bg_beige">
+			<div class="order_number">
+				<dl class="clear">
+					<dt>주문번호</dt>
+					<dd  th:text="${ordNo}"></dd>
+				</dl>
+				<a href="javascript:void(0);" class="delete" onclick="fnDeleteOrder()">주문 내역 삭제</a>
+			</div>
+		</div>
+		<div class="inner">
+			<th:block th:if="${orderList}" th:each="order, status : ${orderList}">
+				<div class="part_goods">
+					<div class="goods_top">
+						<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+					</div>
+					
+					<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_status">
+								<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+								<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
+							</div>
+							<div class="goods_detail">
+								<input type="hidden" name="ordDtlNoArr" th:value="${ordDtl.ordDtlNo}"/>
+								<input type="hidden" name="cnclRtnReqQtyArr" th:value="${ordDtl.ordQty - ordDtl.cnclRtnQty}"/>
+														
+								<a href="javascript:void(0)" th:attr="goodsCd=${ordDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm + '?RS=90'}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${ordDtl.brandNm}"></span>
+												<div class="badge_wrap">
+													<em class="order_badge order_bullet_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="order_badge" th:if="${ordDtl.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
+											</div>
+											<div class="name" th:text="${ordDtl.goodsNm}"></div>
+										</div>
+										<div class="od_opt">
+											<div class="option">
+												<!-- 세트상품 -->
+												<th:block th:if="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${option}"></em>
+														<em th:text="${ordDtl.optCd2Arr[status.index]}"></em>
+													</th:block>
+												</th:block>
+												<!-- //세트상품 -->
+												<!-- 일반상품 -->
+												<th:block th:unless="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${ordDtl.colorNm}"></em>
+														<em th:text="${ordDtl.optCd2}"></em>
+													</th:block>
+												</th:block>
+												<!-- //일반상품 -->
+											</div>
+										</div>
+										<div class="od_calc">
+											<p class="sale_price" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}">
+												<del>
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></em>원
+												</del>
+											</p>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+												<span class="count">
+													<em th:text="${ordDtl.ordQty - ordDtl.cnclRtnQty}"></em>개
+												</span>
+											</p>
+										</div>
+									</div>
+								</a>
+							</div>
+							
+							<!-- 주문상태별 버튼기능 정의 -->
+							<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
+								<div class="goods_btn_wrap btn_group_flex">
+									<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+								</div>
+							</th:block>
+							<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
+							<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+								<div class="goods_btn_wrap btn_group_flex">
+									<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel', 'noMember');"><span>주문 취소</span></button></div>
+								</div>
+							</th:block>
+							<!-- //결제완료, 상품준비중, 출고처지정 (주문취소) -->
+
+							<!-- 배송준비중-->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+							</th:block>
+							<!-- //배송준비중-->
+
+							<!-- 배송중 (교환가능, 반품가능) -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
+								<!-- 교환가능, 반품가능 -->
+								<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+										</th:block>
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //교환가능, 반품가능 -->
+							</th:block>
+							<!-- //배송중 (교환가능, 반품가능) -->
+
+							<!-- 배송완료 (교환가능, 반품가능) -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+								<div class="goods_btn_wrap btn_group_flex">
+									<!-- 교환가능, 반품가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+										<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+									</th:block>
+									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+										<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+									</th:block>
+									<!-- //교환가능, 반품가능 -->
+
+									<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></div>
+								</div>
+							</th:block>
+							<!-- //배송완료 (교환가능, 반품가능) -->
+
+							<!-- 구매확정 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+								<div class="goods_btn_wrap btn_group_flex">
+									<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+								</div>
+							</th:block>
+							<!-- //구매확정 -->
+							<!-- //주문상태별 버튼기능 정의 -->
+							
+							<!-- 주문상태별 문구정보 정의 -->
+							<div class="goods_alert">
+								<!-- 배송중, 배송완료 상태 교환, 반품 가능 상태 체크 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60'">
+									<!-- 교환불가능, 반품불가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">
+										<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.</p>
+									</th:block>
+									<!-- //교환불가능, 반품불가능 -->
+
+									<!-- 교환불가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'N'">
+										<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.</p>
+									</th:block>
+									<!-- //교환불가능 -->
+
+									<!-- 반품불가능 -->
+									<th:block th:if="${ordDtl.returnableYn} == 'N'">
+										<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.</p>
+									</th:block>
+									<!-- //반품불가능 -->
+
+								</th:block>
+								<!-- //배송중, 배송완료 상태 -->
+							</div>
+
+							<!-- 주문접수 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+									</th:block>
+								</div>
+							</th:block>
+							<!-- //주문접수 -->
+
+							<!-- 결제완료, 예약배송상품 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+								<th:block th:if="${ordDtl.delvResDt} != null">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+									</div>
+								</th:block>
+							</th:block>
+							<!-- //결제완료, 예약배송상품 -->
+
+							<!-- 상품준비중 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_30'">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">배송할 상품을 준비 중입니다.</p>
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+									</th:block>
+								</div>
+							</th:block>
+							<!-- //상품준비중 -->
+
+							<!-- 배송준비중 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+									</th:block>
+								</div>
+							</th:block>
+							<!-- //배송준비중 -->
+
+							<!-- 배송완료 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">15일 후 자동으로 구매확정됩니다.</p>
+								</div>
+							</th:block>
+							<!-- //배송완료 -->
+
+							<!-- 구매확정 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+							</th:block>
+							<!-- //구매확정 -->
+							<!-- //주문상태별 문구정보 정의 -->
+							
+							<!-- 사은품 영역 -->
+							<th:block th:if="${#lists.size(order.ordDtlList) == status.count}">
+								<th:block th:if="${order.freeGiftList != null and #lists.size(order.freeGiftList) > 0}">
+									<div class="goods_gift">
+										<div class="gift_wrap">
+											<div class="title">사은품</div>
+											<div class="li_gift">
+												<ul>
+													<th:block th:each="freeGift , j : ${order.freeGiftList}">
+														<li>
+															<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
+															<th:block th:if="${freeGift.usePoint} > 0">
+																<span class="deduct_p" th:text="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
+															</th:block>
+														</li>
+													</th:block>
+												</ul>
+											</div>
+										</div>
+									</div>
+								</th:block>
+							</th:block>
+							<!-- //사은품 영역 -->
+						</div>
+					</th:block>
+				</div>
+				<input type="hidden" name="accountNo" 	th:value="${order.oneData.accountNo}"/>
+				<input type="hidden" name="accountNm" 	th:value="${order.oneData.accountNm}"/>
+				<input type="hidden" name="bankCd" 		th:value="${order.oneData.bankCd}"/>
+				<input type="hidden" name="delvMemo" 	th:value="${deliveryAddrInfo.delvMemo}"/>
+			</th:block>
+		</div>
+		
+		<div class="inner">
+			<div class="tbl_wrap">
+				<div class="tbl_tit">
+					<h3>배송 정보</h3>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="107">
+							<col width="*">
+						</colgroup>
+						<tbody><tr>
+							<th>보내는 사람</th>
+							<td>
+								<div>
+									<span th:text="${deliveryAddrInfo.recipNm}"></span> / <span th:text="${deliveryAddrInfo.recipPhnno}"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>제품정보</th>
+							<td>
+								<div>
+									<span th:utext="|${oneData.brandNm}<br/>${oneData.goodsNm}|"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>송장번호</th>
+							<td>
+								<div>
+									<span th:text="${oneData.invoiceNo}"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>배송주소</th>
+							<td>
+								<div>
+									<span th:utext="|${deliveryAddrInfo.recipBaseAddr}<br/>${deliveryAddrInfo.recipDtlAddr}|"></span>
+								</div>
+							</td>
+						</tr>
+					</tbody></table>
+				</div>
+			</div>
+			<div class="goods_tbl">
+				<div class="tblWrap">
+					<table class="table">
+						<colgroup>
+							<col style="width: 34%;">
+							<col style="width: 33%;">
+							<col style="width: 33%;">
+						</colgroup>
+						<thead>
+							<tr>
+								<th scope="col">시간</th>
+								<th scope="col">장소</th>
+								<th scope="col">유형</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
+								<td th:utext="|${#strings.substring(sweetTrackerInfo.timeTrans, 0, 10)}<br/>${#strings.substring(sweetTrackerInfo.timeTrans, 11, 19)}|"></td>
+								<td th:text="${sweetTrackerInfo.delvWhere}"></td>
+								<td th:text="${sweetTrackerInfo.details}"></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+		// 타이틀명
+		$('#htopTitle').text('배송조회');
+	});
+</script>
+
+</th:block>
+
+</body>
+</html>

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

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

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

@@ -0,0 +1,784 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="mob/common/layout/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberOrderDetailFormMob.html
+ * @desc    : 비회원 > 주문상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="mypageOrderDetailForm" class="container my">
+	<section class="content my_order">
+		<div class="inner wide bg_beige">
+			<div class="order_number">
+				<dl class="clear">
+					<dt>주문번호</dt>
+					<dd  th:text="${ordNo}"></dd>
+				</dl>
+				<a href="javascript:void(0);" class="delete" onclick="fnDeleteOrder()">주문 내역 삭제</a>
+			</div>
+		</div>
+		<div class="inner">
+			<th:block th:if="${orderList}" th:each="order, status : ${orderList}">
+				<div class="part_goods">
+					<div class="goods_top">
+						<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+						<th:block th:if="${order.allCanYn == 'Y' and order.ordReqChgQty == 0}">
+							<a href="javascript:void(0);" id="btn_all_delete" class="delete_btn" onclick="fnAllCancel();">주문 전체 취소</a> <!-- 210409_추가 : btn_all_delete id 추가 -->
+						</th:block>
+						<th:block th:if="${allDecideYn == 'Y' and order.ordReqChgQty == 0}">
+							<a href="javascript:void(0)" id="btn_all_confirm" class="purchase_btn" th:attr="ordNo=${ordNo}" onclick="fnAllDecideOrder(this);">전체구매확정</a></li>
+						</th:block>
+						<!--<a href="javascript:;" id="btn_all_confirm" class="purchase_btn">전체 구매 확정</a> 전체 구매확정 버튼. --> <!-- 210409_추가 : btn_all_confirm id 추가 -->
+					</div>
+					
+					<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_status">
+								<th:block th:unless="${order.giftPackYn == 'Y'}">
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+									<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
+								</th:block>
+							</div>
+							<div class="goods_detail">
+								<input type="hidden" name="ordDtlNoArr" th:value="${ordDtl.ordDtlNo}"/>
+								<input type="hidden" name="cnclRtnReqQtyArr" th:value="${ordDtl.ordQty - ordDtl.cnclRtnQty}"/>
+														
+								<a href="javascript:void(0)" th:attr="goodsCd=${ordDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm + '?RS=90'}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${ordDtl.brandNm}"></span>
+												<div class="badge_wrap">
+													<em class="order_badge order_bullet_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="order_badge" th:if="${ordDtl.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
+											</div>
+											<div class="name" th:text="${ordDtl.goodsNm}"></div>
+										</div>
+										<div class="od_opt">
+											<div class="option">
+												<!-- 세트상품 -->
+												<th:block th:if="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${option}"></em>
+														<em th:text="${ordDtl.optCd2Arr[status.index]}"></em>
+													</th:block>
+												</th:block>
+												<!-- //세트상품 -->
+												<!-- 일반상품 -->
+												<th:block th:unless="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${ordDtl.colorNm}"></em>
+														<em th:text="${ordDtl.optCd2}"></em>
+													</th:block>
+												</th:block>
+												<!-- //일반상품 -->
+											</div>
+										</div>
+										<div class="od_calc">
+											<p class="sale_price" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}">
+												<del>
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></em>원
+												</del>
+											</p>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+												<span class="count">
+													<em th:text="${ordDtl.ordQty - ordDtl.cnclRtnQty}"></em>개
+												</span>
+											</p>
+										</div>
+									</div>
+								</a>
+							</div>
+							
+							<!-- 주문상태별 버튼기능 정의 -->
+							<!-- 일반주문 -->
+							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+								<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
+								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+									</div>
+								</th:block>
+								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
+								<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel', 'noMember');"><span>주문 취소</span></button></div>
+									</div>
+								</th:block>
+								<!-- //결제완료, 상품준비중, 출고처지정 (주문취소) -->
+								
+								<!-- 배송준비중-->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+								</th:block>
+								<!-- //배송준비중-->
+								
+								<!-- 배송중 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
+									<div class="goods_btn_wrap btn_group_flex btn_count">
+										<!-- 교환불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+										</th:block>
+										<!-- //교환불가 -->
+										<!-- 교환가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
+													<span>교환 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //교환가능 -->
+										<!-- 반품가능 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
+													<span>반품 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- 반품가능 -->
+										<!-- 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+										</th:block>
+										<!-- //반품불가 -->
+
+										<!-- 교환불가, 반품불가 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'N' and ${ordDtl.changeableYn} == 'N'">
+										</th:block>
+										<!-- //교환불가, 반품불가 -->
+
+										<div><button type="button" class="btn btn_default btn_delv_sch" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, shipCompCd=${ordDtl.shipCompCd}, invoiceNo=${ordDtl.invoiceNo}" onclick="fnGoToDelivery(this, 'noMember');"><span>배송 조회</span></button></div>
+									</div>
+								</th:block>
+								<!-- //배송중 (교환가능, 반품가능) -->
+
+								<!-- 배송완료 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_btn_wrap btn_group_flex btn_count">
+										<!-- 교환불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+										</th:block>
+										<!-- //교환불가 -->
+										<!-- 교환가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
+													<span>교환 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //교환가능 -->
+										<!-- 반품가능 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
+													<span>반품 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //반품가능 -->
+										<!-- 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+										</th:block>
+										<!-- //반품불가 -->
+										<!-- 교환불가, 반품불가 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'N' and ${ordDtl.changeableYn} == 'N'">
+										</th:block>
+										<!-- //교환불가, 반품불가 -->
+									</div>
+								</th:block>
+								<!-- //배송완료 (교환가능, 반품가능) -->
+								
+								<!-- 구매확정 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+									</div>
+								</th:block>
+								<!-- //구매확정 -->
+							</th:block>
+							<!-- //일반주문 -->
+							<!-- //주문상태별 버튼기능 정의 -->
+							
+							<!-- 주문상태별 문구정보 정의 -->
+							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+								<div class="goods_alert">
+									<!-- 배송중, 배송완료 상태 교환, 반품 가능 상태 체크 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60'">
+										<!-- 교환불가능, 반품불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능, 반품불가능 -->
+
+										<!-- 교환불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능 -->
+
+										<!-- 반품불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //반품불가능 -->
+
+									</th:block>
+									<!-- //배송중, 배송완료 상태 -->
+								</div>
+								
+								<!-- 주문접수 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //주문접수 -->
+								
+								<!-- 결제완료, 예약배송상품 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<div class="goods_txt">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</div>
+									</th:block>
+								</th:block>
+								<!-- //결제완료, 예약배송상품 -->
+								
+								<!-- 상품준비중 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_30'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">배송할 상품을 준비 중입니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //상품준비중 -->
+								
+								<!-- 배송준비중 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //배송준비중 -->
+								
+								<!-- 배송완료 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">15일 후 자동으로 구매확정됩니다.</p>
+									</div>
+								</th:block>
+								<!-- //배송완료 -->
+								
+								<!-- 구매확정 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+										<div class="goods_txt">
+											<p class="cf_txt cf_desc">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다</p>
+										</div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+								<!-- //구매확정 -->
+							</th:block>
+							<!-- //주문상태별 문구정보 정의 -->
+							
+							<!-- 사은품 영역 -->
+							<th:block th:if="${#lists.size(order.ordDtlList) == status.count}">
+								<th:block th:if="${order.freeGiftList != null and #lists.size(order.freeGiftList) > 0}">
+									<div class="goods_gift">
+										<div class="gift_wrap">
+											<div class="title">사은품</div>
+											<div class="li_gift">
+												<ul>
+													<th:block th:each="freeGift , j : ${order.freeGiftList}">
+														<li>
+															<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
+															<th:block th:if="${freeGift.usePoint} > 0">
+																<span class="deduct_p" th:text="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
+															</th:block>
+														</li>
+													</th:block>
+												</ul>
+											</div>
+										</div>
+									</div>
+								</th:block>
+							</th:block>
+							<!-- //사은품 영역 -->
+						</div>
+					</th:block>
+				</div>
+				<input type="hidden" name="accountNo" 	th:value="${order.oneData.accountNo}"/>
+				<input type="hidden" name="accountNm" 	th:value="${order.oneData.accountNm}"/>
+				<input type="hidden" name="bankCd" 		th:value="${order.oneData.bankCd}"/>
+				<input type="hidden" name="delvMemo" 	th:value="${deliveryAddrInfo.delvMemo}"/>
+			</th:block>
+		</div>
+		
+		<!-- 무통장입금정보 -->
+		<th:block th:if="${paymentInfo.payMeans == 'G014_20'}">
+			<div class="inner">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>무통장 입금 정보</h3>
+					</div>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="107">
+								<col width="*">
+							</colgroup>   
+							<tr>
+								<th>은행명/명의자</th>
+								<td><div><span th:text="${paymentInfo.vaBank}"></span>/<span th:text="|(${paymentInfo.vaNm})|"></span></div></td>
+							</tr>
+							<tr>
+								<th>계좌번호</th>
+								<td><div><span th:text="${paymentInfo.vaNo}"></span></div></td>
+							</tr>
+							<tr>
+								<th>입금기한</th>
+								<td><div><span th:text="${paymentInfo.vaDeadlineYmd}"></span>&nbsp;<span th:text="${paymentInfo.vaDeadlineHms}"></span> 까지</div></td>
+							</tr>
+						</table>
+					</div>
+				</div>
+			</div>
+		</th:block>
+		<!-- //무통장입금정보 -->
+		
+		<div class="inner wide">
+			<!-- 폴딩리스트 -->
+			<div class="ui_row">
+				<div class="foldGroup customerfold">
+					<ul>
+						<li>
+							<div class="fold_head">
+								<a href="javascript:void(0)">
+									<div>
+										<div class="fold_tit">
+											<div class="lap2"><span >주문고객</span></div>
+											<span class="fold_txt" th:text="${orderInfo.ordNm}"></span>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="fold_cont">
+								<div class="customer_info">
+									<dl>
+										<div>
+											<dt><span class="sr-only">주문자명</span></dt>
+											<dd th:text="${orderInfo.ordNm}"></dd>
+										</div>
+										<div>
+											<dt><span class="sr-only">이메일</span></dt>
+											<dd th:text="${orderInfo.ordEmail}"></dd>
+										</div>
+										<div>
+											<dt><span class="sr-only">휴대폰 번호</span></dt>
+											<dd th:text="${orderInfo.ordPhnno}"></dd>
+										</div>
+									</dl>
+								</div>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<!-- 폴딩리스트 -->
+		</div>
+		
+		<div class="inner wide">
+			<!-- 폴딩리스트 -->
+			<div class="ui_row">
+				<div class="foldGroup shipfold">
+					<ul>
+						<li>
+							<div class="fold_head">
+								<a href="javascript:void(0)">
+									<div>
+										<div class="fold_tit">
+											<div class="lap2"><span>배송지 정보</span></div>
+											<span class="fold_txt recipNm" th:text="${deliveryAddrInfo.recipNm}"></span>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="fold_cont">
+								<div class="ship_info ship_edit">
+									<!--  배송비정보변경가능 -->
+									<th:block th:if="${allCanYn == 'Y'}">
+										<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeDeliveryAddr();">
+											<span>배송지 변경</span>
+										</button>
+									</th:block>
+									<!--  //배송비정보변경가능 -->
+									<dl>
+										<div class="company">
+											<dt><span class="sr-only">배송지명</span></dt>
+											<dd>
+												<span th:text="${deliveryAddrInfo.recipNm}" id="recipNm"></span>
+												<div class="badge_wrap">
+													<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
+														<em class="order_badge defaultYn">기본 배송지</em>
+													</th:block>
+													<em class="order_badge order_bullet_badge" style="display:none">총알배송</em>
+												</div>
+											</dd>
+										</div>
+										<div class="addr">
+											<dt><span class="sr-only">배송주소</span></dt>
+											<dd th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|" id="recipAddr"></dd>
+										</div>
+										<div class="phone">
+											<dt><span class="sr-only">휴대폰 번호</span></dt>
+											<dd th:text="${deliveryAddrInfo.recipPhnno}" id="recipPhnno"></dd>
+										</div>
+										<div class="ship_request">
+											<dt>배송요청 사항</dt>
+											<dd th:text="${deliveryAddrInfo.delvMemo}" id="delvMemo"></dd>
+										</div>
+									</dl>
+								</div>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<!-- 폴딩리스트 -->
+		</div>
+		<div class="inner">
+			<div class="tbl_wrap pay_wrap">
+				<div class="tbl_tit"> 
+					<h3>결제 정보</h3>
+<!--					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</strong>-->
+					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.payAmt - orderAmtInfo.npayPntAmt - orderAmtInfo.pgCpnAmt, 1, 'COMMA')}"></span>원</strong>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="227">
+							<col width="*">
+						</colgroup>   
+						<tr>
+							<td>
+								<dl>
+									<div>
+										<dt>총주문금액(상품금액+배송비)</dt>
+										<dd><div><span th:text="${#numbers.formatInteger((orderAmtInfo.ordAmt + orderAmtInfo.cpn1DcAmt) - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</div></dd>
+									</div>
+									<th:block th:if="${orderAmtInfo.cpn1DcAmt} > 0">
+										<div>
+											<dt>상품할인(즉시할인)</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.cpn1DcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.tmtb1DcAmt} + ${orderAmtInfo.tmtb2DcAmt} > 0">
+										<div>
+											<dt>다다익선 할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.tmtb1DcAmt + orderAmtInfo.tmtb2DcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.cartCpnDcAmt} + ${orderAmtInfo.goodsCpnDcAmt} + ${orderAmtInfo.delvCpnDcAmt} > 0">
+										<div>
+											<dt>쿠폰할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.cartCpnDcAmt + orderAmtInfo.goodsCpnDcAmt + orderAmtInfo.delvCpnDcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.prePntDcAmt} > 0">
+										<div>
+											<dt>선 포인트 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.prePntDcAmt, 1, 'COMMA')}|"></span>P</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.pntDcAmt} > 0">
+										<div>
+											<dt>포인트 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.pntDcAmt, 1, 'COMMA')}|"></span>P</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.gfcdUseAmt} > 0">
+										<div>
+											<dt>상품권 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.gfcdUseAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.npayPntAmt} > 0">
+										<div>
+											<dt>마일리지 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.npayPntAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.pgCpnAmt} > 0">
+										<div>
+											<dt>제휴 할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.pgCpnAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.savePntAmt} > 0">
+										<div>
+											<dt>적립예정 포인트</dt>
+											<dd><div><span th:text="|${#numbers.formatInteger(orderAmtInfo.savePntAmt, 1, 'COMMA')}|"></span>P</div></dd>
+										</div>
+									</th:block>
+									<div>
+										<dt>결제수단</dt>
+										<dd>
+											<div>
+												<span th:if="${paymentInfo.pgGb == 'NAVER'}">네이버 페이</span>
+												<span th:if="${paymentInfo.pgGb == 'KAKAO'}">카카오 페이</span>
+												<span th:if="${paymentInfo.pgGb == 'PAYCO'}">PAYCO</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_10'}">실시간계좌이체</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_20'}">무통장입금</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" th:text="|${paymentInfo.cardNm}/${paymentInfo.cardMips}|"></span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_60'}">휴대폰결제</span>
+											</div>
+										</dd>
+									</div>
+								</dl>
+							</td>
+						</tr>
+					</table>
+					<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
+					<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and not #strings.isEmpty(paymentInfo.cashAuthNo) and (paymentInfo.payMeans == 'G014_10' or paymentInfo.payMeans == 'G014_20')}" onclick="fnReceipt('cash')"><span>현금 영수증</span></button>
+					<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and (cashReceiptsInfo == null or #strings.isEmpty(cashReceiptsInfo.authNo))}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
+					<!-- 
+					<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and #strings.isEmpty(paymentInfo.cashAuthNo)}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
+					 -->
+				</div>
+				<!-- 210415_ 추가 : 결제정보 안내 텍스트 추가 -->
+				<p class="txt_ref">NPAY등의 대체결제수단으로 결제 시 해당 결제 플랫폼에서 영수증 확인이 가능합니다.</p>
+			</div>
+			<div class="btn_group btn_group_flex">
+				<div>
+					<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);"><span>확인</span></button>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	let ordNo 				= [[${ordNo}]];
+	var isLogin 			= [[${isLogin}]];
+	let orderList 			= [[${orderList}]];
+	let oneData 			= [[${oneData}]];
+	let paymentInfo 		= [[${paymentInfo}]];
+	let orderAmtInfo 		= [[${orderAmtInfo}]];
+	let deliveryAddrInfo 	= [[${deliveryAddrInfo}]];
+	let kcpReceiptUrl 		= [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let jsonObj 			= {};
+	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
+
+	$(document).ready(function() {
+		// 타이틀명
+		$('#htopTitle').text('주문상세');
+	});
+	
+	// 2.1 회원 배송지변경 팝업열기
+	//$('#btn_adrsChange_pop').on("click", function(){
+	//	// 회원인경우
+	//	if (isLogin == true) {
+	//		$.ajax( {
+	//			type		: "POST",
+	//			url 		: '/common/delvAddrChangePop',
+	//			data		: JSON.stringify(jsonObj),
+	//			dataType 	: 'html',
+	//			beforeSend : function(xhr, settings) {
+	//				xhr.setRequestHeader("AJAX"			, "true");
+	//				xhr.setRequestHeader('Accept'		, 'application/json');
+	//				xhr.setRequestHeader('Content-Type'	, 'application/json');
+	//			},
+	//			success 	: function(result) {
+	//				$("#adrsChangePop .modal-dialog .modal-content").html(result);
+	//				$("#adrsChangePop").modal("show");
+	//			}
+	//		});
+	//	}
+	//	// 비회원인경우
+	//	else {
+	//		$.ajax( {
+	//			type		: "POST",
+	//			url 		: '/common/delvAddrAddPop',
+	//			data		: JSON.stringify(jsonObj),
+	//			dataType 	: 'html',
+	//			beforeSend : function(xhr, settings) {
+	//				xhr.setRequestHeader("AJAX"			, "true");
+	//				xhr.setRequestHeader('Accept'		, 'application/json');
+	//				xhr.setRequestHeader('Content-Type'	, 'application/json');
+	//			},
+	//			success 	: function(result) {
+	//				$("#adrsAddPop .modal-dialog .modal-content").html(result);
+	//				$("#adrsAddPop").modal("show");
+	//			}
+	//		});
+	//	}
+	//});
+	
+	// 전체취소 버튼 클릭 이벤트
+	var fnAllCancel = function() {
+		// 환불계좌 체크
+		let accountNo = $('#mypageOrderDetailForm input[name=accountNo]').val();
+		let accountNm = $('#mypageOrderDetailForm input[name=accountNm]').val();
+		let bankCd = $('#mypageOrderDetailForm input[name=bankCd]').val();
+
+		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+			let data = {};
+			data.ordNo = oneData.ordNo;
+			data.accountNm = oneData.accountNm;
+			
+			let jsonData = JSON.stringify(data);
+			
+			$.ajax( {
+				type		: "POST",
+				url 		: '/noMember/refund/account/register/popup/form',
+				data		: jsonData,
+				dataType 	: 'html',
+				beforeSend : function(xhr, settings) {
+					xhr.setRequestHeader("AJAX"			, "true");
+					xhr.setRequestHeader('Accept'		, 'application/json');
+					xhr.setRequestHeader('Content-Type'	, 'application/json');
+				},
+				success 	: function(result) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
+			
+			return false;
+		}
+
+		mcxDialog.confirm('전체취소 처리하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				// 취소요청 데이터 설정
+				let url = '/noMember/cancel';
+				
+				// 주문상세번호 설정
+				let ordDtlNoArr = [];
+				$.each($('#mypageOrderDetailForm input[name=ordDtlNoArr]'), function(idx, item) {
+					ordDtlNoArr.push($(item).val());
+				});
+				
+				// 취소 수량 설정
+				let cnclRtnReqQtyArr = [];
+				$.each($('#mypageOrderDetailForm input[name=cnclRtnReqQtyArr]'), function(idx, item) {
+					cnclRtnReqQtyArr.push($(item).val());
+				});
+				
+				// 전체 취소 처리
+				let data = {};
+				data.ordNo = ordNo;
+				data.chgReason = 'G686_10';
+				data.chgReasonNm = '고객변심';
+				data.accountNo = accountNo;
+				data.accountNm = accountNm;
+				data.bankCd = bankCd;
+				data.isCustomer = 'Y';
+				data.reqGbn = 'cnclComplete';
+				data.ordDtlNoArr = ordDtlNoArr;
+				data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
+				console.log(data);
+				let jsonData = JSON.stringify(data);
+				
+				gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+					cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);
+				});
+			}
+		});
+	}
+
+	// 배송지 정보 설정
+	var delvAddrSet = function(delvObj) {
+		let delvAddrSq 		= deliveryAddrInfo.delvAddrSq;
+		let recipNm 		= delvObj.recipNm;
+		let recipPhnno 		= delvObj.recipPhnno;
+		let recipZipcode 	= delvObj.recipZipcode;
+		let recipBaseAddr 	= delvObj.recipBaseAddr;
+		let recipDtlAddr 	= delvObj.recipDtlAddr;
+		let delvMemo 		= delvObj.delvMemo;
+		
+		$('#recipNm').text(recipNm);
+		$('#recipPhnno').text(recipPhnno);
+		$('#recipAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
+		$('#delvMemo').text(delvMemo);
+		$('#mypageOrderDetailForm .recipNm').text(recipNm);
+		
+		let url = '/noMember/change/delvery/addr';
+		let data = {};
+		data.delvAddrSq 	= delvAddrSq;
+		data.recipNm 		= recipNm;
+		data.recipPhnno 	= recipPhnno;
+		data.recipZipcode 	= recipZipcode;
+		data.recipBaseAddr 	= recipBaseAddr;
+		data.recipDtlAddr 	= recipDtlAddr;
+		data.delvMemo 		= delvMemo;
+		
+		let jsonData = JSON.stringify(data);
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		})
+	}
+
+	// 환불계좌 등록 콜백 처리
+	var fnRegisterAccountCallback = function(result) {
+		// 환불계좌 정보 설정
+		$('#mypageOrderDetailForm input[name=accountNo]').val(result.accountNo);
+		$('#mypageOrderDetailForm input[name=accountNm]').val(result.accountNm);
+		$('#mypageOrderDetailForm input[name=bankCd]').val(result.bankCd);
+		
+		// 전체취소 처리
+		fnAllCancel();
+	}
+
+	// 상품권 현금영수증 신청 처리
+	var fnRequestCashReceipt = function(param) {
+		let url = '/noMember/cash/receipts/request';
+		let ordNo = $(param).attr('ordNo');
+
+		let data = {};
+		data.ordNo = ordNo;
+
+		let jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
+		});
+	}
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 26 - 15
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderListFormMob.html

@@ -172,20 +172,31 @@ $(document).ready(function() {
 
 	// 주문상세상태코드 셀렉트박스 변경 이벤트
 	$('#odStatusPop .popup_con .button_list .ordDtlStat').on('click', function() {
-		$('#searchForm input[name=ordDtlStat]').val($(this).attr('code'));
-		jsonObj.ordDtlStat = $(this).attr('code');
-		
-		// 상태값 명칭
-		var ordDtlStatNm = $(this).find("span").text();
-		$(".container .my_order .od_status_btn").text(ordDtlStatNm);
-		
+		let code = $(this).attr('code');
+		$('#searchForm input[name=ordDtlStat]').val(code);
+		jsonObj.ordDtlStat = code;
+
+		$("#odStatusPop .popup_con button").removeClass("on");
+
+		// 상태값설정
+		$("#odStatusPop .popup_con button").each(function() {
+			var tempCode = $(this).attr("code");
+			if (tempCode == code) {
+				$(this).addClass("on");
+
+				// 상태값 명칭
+				var ordDtlStatNm = $(this).find("span").text();
+				$(".container .my_order .od_status_btn").text(ordDtlStatNm);
+			}
+		});
+
 		// 리헷
 		$("#listBox").html("");
-		
+
 		// 초기화설정
 		fnGetInfiniteScrollDataList(0);
 
-		// 팝업닫기
+		// 팝업 닫기
 		$(".popup_close").trigger("click");
 	});
 });
@@ -297,12 +308,12 @@ $(function() { gagaInfiniteScroll.getHistory(); });
 </script>
 
 <script>
-	$(document).ready(function(){
-		$(document).on('click','.popup_box .button_list button',function(){
-			$('.popup_box .button_list button').removeClass('on');
-			$(this).addClass('on');
-		})
-	});
+	//$(document).ready(function(){
+	//	$(document).on('click','.popup_box .button_list button',function(){
+	//		$('.popup_box .button_list button').removeClass('on');
+	//		$(this).addClass('on');
+	//	})
+	//});
 
 	//기간 선택 팝업
 	$(document).on("click", ".order_sort .od_date_btn", function(){

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

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

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

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

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

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

+ 7 - 2
src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html

@@ -211,7 +211,7 @@
 									<div>
 										<dt>배송비</dt>
 										<dd>
-											<div><span th:text="${#numbers.formatInteger(delvFeeSumAmt, 1, 'COMMA')}"></span>원</div>
+											<div><span th:text="${#numbers.formatInteger(realDelvSumAmt, 1, 'COMMA')}"></span>원</div>
 										</dd>
 									</div>
 									<!-- //210330 : 태그 분할 -->
@@ -356,7 +356,12 @@
 				</div>
 			</div>
 			<div class="btn_group btn_group_flex">
-				<div><button type="button" class="btn btn_gost" th:ordno="${orderInfo.ordNo}" onclick="fnGoToOrderDetail(this)"><span>주문 상세보기</span></button></div>
+				<th:block th:if="${isLogin} == true">
+					<div><button type="button" class="btn btn_gost" th:ordno="${orderInfo.ordNo}" onclick="fnGoToOrderDetail(this)"><span>주문 상세보기</span></button></div>
+				</th:block>
+				<th:block th:if="${isLogin} == false">
+					<div><button type="button" class="btn btn_gost" th:ordno="${orderInfo.ordNo}" onclick="cfnGoToPage(_PAGE_NON_CUSTOMER_ORDER_CONFIRM);"><span>주문 상세보기</span></button></div>
+				</th:block>
 				<div><button type="button" class="btn btn_dark" onclick="location.href='/'"><span>쇼핑 계속하기</span></button></div>
 			</div>
 		</div>

+ 8 - 2
src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html

@@ -43,8 +43,8 @@
 			</div>
 			<div class="fold_cont">
 				<!-- 배송지 정보 변경가능 -->
-				<div class="ship_info ship_edit">
-					<button type="button" id="btn_adrsChange_pop" class="btn_popup">
+				<div class="ship_info ship_edit exist">
+					<button type="button" class="btn_popup btn_adrsChange_pop">
 						<span>배송지 변경</span>
 					</button>
 					<dl>
@@ -109,6 +109,12 @@
 					</dl>
 				</div>
 				<!-- //배송지 정보 변경가능 -->
+				
+				<!-- 210428_추가 : 배송지 정보가 없을 경우 -->
+				<div class="ship_info none">
+					<button type="button" class="btn_popup btn_adrsChange_pop"><span>배송지 변경</span></button>
+					<p>배송지 정보를 등록해 주세요.</p>
+				</div> 
 			</div>
 		</li>
 	</ul>

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

@@ -240,6 +240,8 @@
 				</div>
 				
 				<div class="area_paymentinfo">
+					<!-- @자사만,무통장,실시간있으면 미노출 -->
+					<!-- @입점이있으면  -->
 					<div class="paymentinfo">
 						<div class="payinfo_blk_wrap">
 							<a href="javascript:void(0);">구매조건 확인 및 결제대행 서비스 약관 동의<span>보기</span></a>
@@ -248,7 +250,7 @@
 									<a href="javascript:void(0);">개인정보 제공에 대한 동의<span>보기</span></a>
 									<div class="infotxt">
 										STYLE24는 다음과 같이 회원님의 개인정보를 제3자에게 제공합니다.
-										<table>
+										<table class="paymentinfo agree1">
 											<colgroup>
 												<col width="30%">
 												<col width="*">
@@ -278,43 +280,46 @@
 												</tr>
 											</tbody>
 										</table>
-										<table>
-											<colgroup>
-												<col width="30%">
-												<col width="*">
-											</colgroup>
-											<tbody>
-												<tr>
-													<th>제공받는 자</th>
-													<td>더비오유컴퍼니 주식회사</td>
-												</tr>
-												<tr>
-													<th>제공하는 항목</th>
-													<td>성명, 주소, 연락처</td>
-												</tr>
-												<tr>
-													<th>제공 목적</th>
-													<td>주문상품의 배송, 고객상담 및 불만처리</td>
-												</tr>
-												<tr>
-													<th>보유 및 이용기간</th>
-													<td>이용목적 달성 시 까지</td>
-												</tr>
-											</tbody>                                                       
-										</table>
+										<!-- 입점업체가 있을때 노출 -->
+										<th:block th:if="${delvCnt} > 0">
+											<table class="paymentinfo agree2">
+												<colgroup>
+													<col width="30%">
+													<col width="*">
+												</colgroup>
+												<tbody>
+													<tr>
+														<th>제공받는 자</th>
+														<td>
+															<th:block th:each="delvFeeCd, i : ${delvFeeCdList}">
+																<th:block th:unless="${delvFeeCd.delvFeeCd} == 'WMS'">
+																	<th:block th:if="${i.count == #lists.size(delvFeeCdList)}">
+																		<th:block th:text="|${delvFeeCd.supplyCompNm}|"></th:block>
+																	</th:block>
+																	<th:block th:if="${i.count < #lists.size(delvFeeCdList)}">
+																		<th:block th:text="|${delvFeeCd.supplyCompNm},|"></th:block>
+																	</th:block>
+																</th:block>
+															</th:block>
+														</td>
+													</tr>
+													<tr>
+														<th>제공하는 항목</th>
+														<td>성명, 주소, 연락처</td>
+													</tr>
+													<tr>
+														<th>제공 목적</th>
+														<td>주문상품의 배송, 고객상담 및 불만처리</td>
+													</tr>
+													<tr>
+														<th>보유 및 이용기간</th>
+														<td>이용목적 달성 시 까지</td>
+													</tr>
+												</tbody>
+											</table>
+										</th:block>
 									</div>
 								</div>
-								<!-- 
-								<div class="payinfo_blk">
-									<a href="">
-										결제대행 서비스 약관 동의
-										<span>보기</span>
-									</a>
-									<div class="infotxt">
-										결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.
-									</div>
-								</div>
-								 -->
 							</div>
 						</div>
 						
@@ -410,6 +415,11 @@ $(document).ready( function() {
 	// 2. 장바구니시퀀스 배열 변환
 	cartSqArr = String(cartSqArr).split(",");
 	
+	var dispYn = "N";
+	if (isLogin == false) {
+		//dispYn = "Y";
+	}
+	
 	// AJAX 로드를 위한 변수 설정
 	jsonObj = {
 		"custNm" 			: custNm
@@ -419,7 +429,7 @@ $(document).ready( function() {
 		, "recipBaseAddr" 	: recipBaseAddr
 		, "recipDtlAddr" 	: recipDtlAddr
 		, "cartSqArr"		: cartSqArr
-		, "dispYn"			: "N"
+		, "dispYn"			: dispYn
 		, "shotDelvYn"		: shotDelvUseYn
 		, "shotDelvUseYn"	: shotDelvUseYn
 		, "foreignBuyYn"	: foreignBuyYn
@@ -584,6 +594,15 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 			$("#deliveryAddrInfo").css("display", "block");
 			$("#deliveryAddrInfo").html(result);
 			
+			// 2021.05.16 배송정보가 있으면 노출
+			if ($("#orderForm input[name='recipZipcode']").val() != "00000") {
+				$("#orderForm .ship_info.exist").show();
+				$("#orderForm .ship_info.none").hide();
+			} else {
+				$("#orderForm .ship_info.exist").hide();
+				$("#orderForm .ship_info.none").show();
+			}
+			
 			// 배송정보설정
 			$("#orderAmtForm .recipNm").text($("#orderForm input[name='recipNm']").val());
 			$("#orderAmtForm .recipPhnno").text($("#orderForm input[name='recipPhnno']").val());
@@ -594,7 +613,7 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 
 			// 2. 버튼기능구현
 			// 2.1 회원 배송지변경 팝업열기
-			$('#btn_adrsChange_pop').on("click", function(){
+			$('#orderForm .btn_adrsChange_pop').on("click", function(){
 				// 회원인경우
 				if (isLogin == true) {
 					$.ajax( {
@@ -890,25 +909,70 @@ var paymentInfoSet = function() {
 			if (result != null) {
 				$("#paymentInfo").css("display", "block");
 				$("#paymentInfo").html(result);
+				
+				var payTeyp = "";
 
 				// 결제타입명칭 설정
 				$("#orderForm .area_paymethod .paymethod_box ul li").on("click", function(){
-					var payType = $(this).find(".payType").text();
+					payType = $(this).find(".payType").text();
 					if ($(this).find("input[name=rdi-paynormal]").is(":checked")) {
 						$(".payTypeNm").text(payType);
 					}
 					
+					// 2021.04.29 수정
+					$("#orderForm input[name=insuranceYn]").attr("checked", false);
+					$("#orderForm .area_paymentinfo .agree1").hide();
+					
 					// 2021.04.25 실시간계좌이체, 무통장입금시 보증보험 신청 약관 노출
 					if (payType == "실시간계좌이체" || payType == "무통장입금" ) {
 						$("#orderForm .area_paymethod .agree_insurance").show();
 					} else {
-						$("#orderForm .area_paymethod .agree_insurance").hide();
+						$("#orderForm .area_paymethod .agree_insurance").hide();	
 					}
 					
-					// 2021.04.29 수정
-					$("#orderForm input[name=insuranceYn]").attr("checked", false);
+					if (delvCnt > 0) {
+						$("#orderForm .area_paymentinfo").show();
+					} else {
+						$("#orderForm .area_paymentinfo").hide();
+					}
 				});
 				
+				// 2021.04.25 실시간계좌이체, 무통장입금시 보증보험 신청 약관 노출
+				// 2021.05.16 동의박스체크시노출
+				$("#orderForm input[name=insuranceYn]").on("click", function(){
+					var displayTemp = true;
+					if (payType == "실시간계좌이체" || payType == "무통장입금" ) {
+						if ($(this).is(":checked")) {
+							$("#orderForm .area_paymethod .agree_insurance").show();
+							$("#orderForm .area_paymentinfo").show();
+							$("#orderForm .area_paymentinfo .agree1").show();
+						} else {
+							displayTemp = false;
+						}
+					} else {
+						displayTemp = false;
+					}
+					
+					if (displayTemp == false) {
+						$("#orderForm .area_paymentinfo .agree1").hide();
+						
+						if (delvCnt > 0) {
+							$("#orderForm .area_paymentinfo").show();
+						} else {
+							$("#orderForm .area_paymentinfo").hide();
+						}
+					}
+				});
+
+				// 2021.05.16 초기값설정
+				$("#orderForm .area_paymethod .agree_insurance").hide();
+				$("#orderForm .area_paymentinfo .agree1").hide();
+				if (delvCnt > 0) {
+					$("#orderForm .area_paymentinfo").show();
+				} else {
+					$("#orderForm .area_paymentinfo").hide();
+				}
+				
 				// 결재하기
 				$("#btn_payment").on("click", function(){
 					// 사은품정보

+ 7 - 2
src/main/webapp/WEB-INF/views/mob/order/OrderNoMemberMob.html

@@ -62,8 +62,8 @@
 							<button type="button" class="btn btn_dark btn_hp_certi beforeAuth" id="btnCellPhoneCertify">
 								<span>본인인증</span>
 							</button>
-							<button type="button" class="btn btn_dark btn_hp_certi afterAuth">
-									<span>인증완료</span>
+							<button type="button" class="btn btn_dark btn_hp_certi afterAuth" style="display:none;">
+								<span>인증완료</span>
 							</button>
 						</div>
 					</div>
@@ -143,6 +143,11 @@ $(document).ready( function() {
 		fnNiceCallBack(sEncData, authMethod);
 	}
 });
+
+// 취소버튼
+$("#btn_cancel").on("click", function() {
+	window.history.back();
+});
 	
 // 주문하기버튼
 $("#btn_order").on("click", function() {

ファイルの差分が大きいため隠しています
+ 225 - 242
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html


+ 157 - 0
src/main/webapp/WEB-INF/views/mob/planning/PlanningReplyPhotoFormMob.html

@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsReviewPhotoFormMob.html
+ * @desc	: 상품평 - 포토/영상 리스트 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.008   eskim		최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document">
+	<div class="modal-content" th:with="imageUrl=${@environment.getProperty('upload.image.view')}">
+		<div class="modal-header">
+			<h5 class="modal-title" id="comment_popup">포토 댓글</h5>
+		</div>
+		<div class="modal-body">
+			<div class="pop_cont">
+				<div class="pop_slide">
+					<div class="swiper-container">
+						<div class="swiper-wrapper">
+						<th:block th:each="a, stat : ${replyAttachList}">
+							<div class="swiper-slide">
+								<div class="img">
+									<img th:src="${imageUrl + a.sysFileNm}">
+								</div>
+							</div>
+						</th:block>
+						</div>
+					</div>
+					<!-- Add Pagination -->
+					<div class="swiper-pagination"></div>
+				</div>
+				<div class="pop_detail">
+					<button class="pop_open_btn">
+						<span class="sr-only"></span>
+					</button>
+					<!-- 210414_추가 : comment_wrap 태그 추가. -->
+					
+					<th:block th:each="a, stat : ${replyList}">	
+					<div class="comment_wrap">
+						<div class="review_p" th:text=${a.entryVal1}></div>
+						<div class="comment_writer">
+							<span class="writer" th:text="${a.maskingCustId}"></span> <span class="date" th:text="${a.entryDt}">2020.12.30</span>
+						</div>
+					</div>
+					</th:block>
+					<!-- //210414_추가 : comment_wrap 태그 추가. -->
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+
+<a href="javascript:void(0);" rel="modal:close"
+	onclick="cfCloseLayer('layer_review_photo')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	
+	
+	$(document).ready( function() {
+		
+		$(document).on('click','.pop_open_btn',function(){
+			$('.modal.photo_comment_popup .pop_detail').toggleClass('active');
+		});
+		
+		/* 210414_추가 : swiper fraction 숫자 1자리수 일때 앞에 0 스크립트 추가 */
+		var swiper = new Swiper('.pop_slide .swiper-container', {
+			observer: true,
+			observeParents: true,
+			pagination: {
+				el: '.pop_slide .swiper-pagination',
+				type: 'fraction',
+				formatFractionCurrent: function (number) {
+					switch(number)
+					{
+						case 1:
+						myNum='01'
+						break;
+						case 2:
+						myNum='02'
+						break;
+						case 3:
+						myNum='03'
+						break;
+						case 4:
+						myNum='04'
+						break;
+						case 5:
+						myNum='05'
+						break;
+						case 6:
+						myNum='06'
+						break;
+						case 7:
+						myNum='07'
+						break;
+						case 8:
+						myNum='08'
+						break;
+						case 9:
+						myNum='09'
+						break;
+						default:myNum= number
+						}
+					return myNum; 
+				},
+				formatFractionTotal: function (number) {
+					switch(number)
+					{
+						case 1:
+						myNum='01'
+						break;
+						case 2:
+						myNum='02'
+						break;
+						case 3:
+						myNum='03'
+						break;
+						case 4:
+						myNum='04'
+						break;
+						case 5:
+						myNum='05'
+						break;
+						case 6:
+						myNum='06'
+						break;
+						case 7:
+						myNum='07'
+						break;
+						case 8:
+						myNum='08'
+						break;
+						case 9:
+						myNum='09'
+						break;
+						default:myNum= number
+						}
+					return myNum; 
+				},
+			},
+		});
+		
+		
+	});
+	
+	
+	
+/*]]>*/
+</script>
+</html>

+ 7 - 5
src/main/webapp/WEB-INF/views/mob/popup/DelvAddrAddPopMob.html

@@ -36,12 +36,14 @@
 												<span class="sr-only">우편번호 찾기</span>
 											</button>
 										</div>
-										<div class="default_addrs">
-											<div class="form_field">
-												<input id="chk-default-addrs" type="checkbox" name="defaultYn" checked>
-												<label for="chk-default-addrs"><span>기본 배송지로 등록</span></label>
+										<th:block th:if="${isLogin} == true">
+											<div class="default_addrs">
+												<div class="form_field">
+													<input id="chk-default-addrs" type="checkbox" name="defaultYn" checked>
+													<label for="chk-default-addrs"><span>기본 배송지로 등록</span></label>
+												</div>
 											</div>
-										</div>
+										</th:block>
 									</td>
 								</tr>
 							</tbody>

+ 12 - 10
src/main/webapp/WEB-INF/views/mob/popup/DelvAddrModifyPopMob.html

@@ -39,17 +39,19 @@
 												<span class="sr-only">우편번호 찾기</span>
 											</button>
 										</div>
-										<div class="default_addrs">
-											<div class="form_field">
-												<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
-													<input id="chk-default-addrs1" type="checkbox" name="defaultYn" checked>
-												</th:block>
-												<th:block th:if="${deliveryAddrInfo.defaultYn} == 'N'">
-													<input id="chk-default-addrs1" type="checkbox" name="defaultYn">
-												</th:block>
-												<label for="chk-default-addrs1"><span>기본배송지로 등록</span></label>
+										<th:block th:if="${isLogin} == true">
+											<div class="default_addrs">
+												<div class="form_field">
+													<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
+														<input id="chk-default-addrs1" type="checkbox" name="defaultYn" checked>
+													</th:block>
+													<th:block th:if="${deliveryAddrInfo.defaultYn} == 'N'">
+														<input id="chk-default-addrs1" type="checkbox" name="defaultYn">
+													</th:block>
+													<label for="chk-default-addrs1"><span>기본배송지로 등록</span></label>
+												</div>
 											</div>
-										</div>
+										</th:block>
 									</td>
 								</tr>
 							</tbody>

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

@@ -30,7 +30,7 @@
 						<label class="input_label sr-only">아이디</label>
 						<div class="ui_col_12">
 							<div class="input_wrap">
-								<input type="text" name="loginId" placeholder="아이디" class="form_control" minlength="4" maxlength="12" required="required" data-valid-type="alphaNumeric" data-valid-name="아이디"/>
+								<input type="text" name="loginId" placeholder="아이디" class="form_control" minlength="4" maxlength="12" required="required" data-valid-name="아이디"/>
 							</div>
 						</div>
 					</div>
@@ -282,7 +282,7 @@
 		}
 		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
 		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
-			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN);
 		}
 		// 5. YES24 첫 로그인 시도 시 정보동의 페이지 이동
 		if (userInfo.custStat === 'NEED_AGREE_CUST') {

+ 2 - 2
src/main/webapp/WEB-INF/views/web/customer/ConsentUseInfoFormWeb.html

@@ -87,7 +87,7 @@
 		}
 		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
 		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
-			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN);
 			$.modal.close();
 			return;
 		}
@@ -124,7 +124,7 @@
 	};
 
 	$("#btnClose").click(function() {
-		cfnGoToPage(_PAGE_CUSTOMER_JOIN);
+		cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);
 		$.modal.close();
 	});
 

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

@@ -95,7 +95,7 @@
 		}
 		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
 		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
-			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN);
 		}
 		// 5. YES24 첫 로그인 시도 시 정보동의 페이지 이동
 		if (userInfo.custStat === 'NEED_AGREE_CUST') {

+ 8 - 8
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -598,7 +598,7 @@
 					tag += ' class="on"';
 				}
 				tag += '>\n';
-				tag += '	<a href="javascript:javascript:void(0);"';
+				tag += '	<a href="javascript:void(0);"';
 				if (cate1.cate1No == cate1No && cate2No == null) {
 					tag += ' class="on"';
 					formTitle = cate1.cate1Nm;
@@ -630,7 +630,7 @@
 							tag += ' class="on"';
 						}
 						tag += '		>\n';
-						tag += '		<a href="javascript:javascript:void(0);" ';
+						tag += '		<a href="javascript:void(0);" ';
 						if (cate2.cate2No == cate2No && cate3No == null) {
 							tag += ' class="on"';
 							navNm = '<li class="bread_2depth" id="navNm2">' + cate2.cate2Nm + '</li>';
@@ -655,7 +655,7 @@
 									tag += ' class="on"';
 								}
 								tag += '>';
-								tag += '		<a href="javascript:javascript:void(0);" ';
+								tag += '		<a href="javascript:void(0);" ';
 								if (cate3.cate3No == cate3No && cate4No == null) {
 									tag += ' class="on"';
 									navNm = '<li class="bread_2depth" id="navNm2">' + cate2.cate2Nm + '</li><li class="bread_2depth" id="navNm3">' + cate3.cate3Nm + '</li>';
@@ -679,7 +679,7 @@
 											tag += ' class="on"';
 										}
 										tag += '>';
-										tag += '		<a href="javascript:javascript:void(0);" ';
+										tag += '		<a href="javascript:void(0);" ';
 										if (cate4.cate4No == cate4No) {
 											tag += ' class="on"';
 											navNm = '<li class="bread_2depth" id="navNm3">' + cate2.cate2Nm + '</li><li class="bread_2depth" id="navNm3">' + cate3.cate3Nm + '</li><li class="bread_2depth" id="navNm3">' + cate4.cate4Nm + '</li>';
@@ -734,7 +734,7 @@
 					tag += ' class="on"';
 				}
 				tag += '>\n';
-				tag += '	<a href="javascript:javascript:void(0);"';
+				tag += '	<a href="javascript:void(0);"';
 				if (cate1.cate1No == cate1No && cate2No == null) {
 					tag += ' class="on"';
 					formTitle = cate1.cate1Nm;
@@ -781,7 +781,7 @@
 							tag += ' class="on"';
 						}
 						tag += '		>\n';
-						tag += '		<a href="javascript:javascript:void(0);" ';
+						tag += '		<a href="javascript:void(0);" ';
 						if (cate2.cate2No == cate2No && cate3No == null) {
 							tag += ' class="on"';
 							navNm = '<li class="bread_2depth" id="navNm2">' + cate2.cate2Nm + '</li>';
@@ -813,7 +813,7 @@
 									tag += ' class="on"';
 								}
 								tag += '>';
-								tag += '		<a href="javascript:javascript:void(0);" ';
+								tag += '		<a href="javascript:void(0);" ';
 								if (cate3.cate3No == cate3No && cate4No == null) {
 									tag += ' class="on"';
 									navNm = '<li class="bread_2depth" id="navNm2">' + cate2.cate2Nm + '</li><li class="bread_2depth" id="navNm3">' + cate3.cate3Nm + '</li>';
@@ -841,7 +841,7 @@
 											tag += ' class="on"';
 										}
 										tag += '>';
-										tag += '		<a href="javascript:javascript:void(0);" ';
+										tag += '		<a href="javascript:void(0);" ';
 										if (cate4.cate4No == cate4No) {
 											tag += ' class="on"';
 											navNm = '<li class="bread_2depth" id="navNm3">' + cate2.cate2Nm + '</li><li class="bread_2depth" id="navNm3">' + cate3.cate3Nm + '</li><li class="bread_2depth" id="navNm3">' + cate4.cate4Nm + '</li>';

+ 125 - 69
src/main/webapp/WEB-INF/views/web/display/LookbookMainFormWeb.html

@@ -50,7 +50,7 @@
 
 												</ul>
 												<div class="ui_row">
-													<button type="button" class="fillter_reset" onclick="fnGetLookbookList();"><span>초기화</span></button>
+													<button type="button" class="fillter_reset" onclick="fnLookbookReset();"><span>초기화</span></button>
 													<button type="button" class="fillter_apply" onclick="fnGetBrandLookbookList();"><span>적용</span></button>
 												</div>
 											</div>
@@ -60,9 +60,16 @@
 							</div>
 
 							<div class="list">
-								<ul class="clear event_con" id="lookbookArea" style="display: none;">
+								<section id="infiniteContainer">
+									<div id="listBoxOuter">
+										<ul class="clear event_con" id="listBox"> <!--id="lookbookArea"-->
 
-								</ul>
+										</ul>
+									</div>
+								</section>
+								<div class="last_page" id="divLastPage" style="display: none;">
+									<span>마지막 페이지입니다.</span>
+								</div>
 								<ul class="clear no_con" id="divLookbookNoData" style="display: none;">
 									<li>
 										<p><img src="/images/pc/ico_content_none.png" alt="등록된 이벤트가 없습니다."></p>
@@ -78,6 +85,18 @@
 			</div>
 		</div>
 
+		<form id="lbMainForm" name="lbMainForm">
+			<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+			<input type="hidden" name="pageSize" value ="30"/>
+			<input type="hidden" name="lookbookGb" th:value="${lbInfo.lookbookGb}"/>
+			<input type="hidden" name="brandCd" th:value="${lbInfo.brandCd}">
+			<input type="hidden" name="frontYn" value="Y"/>
+			<input type="hidden" name="totalCnt" />
+		</form>
+
+<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
+<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
+
 <script th:inline="javascript">
 /*<![CDATA[*/
 	var lookbookGb = [[${lbInfo.lookbookGb}]];
@@ -86,88 +105,125 @@
 	}
 	var brandCd = [[${lbInfo.brandCd}]];
 
-	let fnGetLookbookList = function (lookbookGb, brandGroupNo){
-		let actionUrl = '/display/lookbook/main/list?lookbookGb='+lookbookGb;
-		if (!gagajf.isNull(brandGroupNo)) actionUrl += '&multiBrandCd=' + brandGroupNo;
-		$('#lookbookArea').html('');
-		$('#divLookbookNoData').hide();
-
-		$.getJSON(actionUrl
-			, function (result, status){
-				if (status == 'success'){
-					if (result.length > 0){
-						$('#lookbookTotCnt').html('<span>' + result.length.addComma() + '</span>');
-
-						if (gagajf.isNull(brandGroupNo)){
-							$('#brandArea').html('');
-							let tag = '';
-							let brandArr = [];
-							$.each(result, function(idx, item) {
-								if(!brandArr.includes(item.brandCd)){
-									brandArr.push(item.brandCd);
-									tag += '<li>';
-									tag += '	<label class="brand_btn">';
-									tag += '		<input type="checkbox" group="filterValue" id="chkFilterBrand'+idx+'" data-name="chkFilterBrand'+idx+'" name="filterBrandCds" value="'+item.brandCd+'"><span>'+item.brandNm+'</span>';
-									tag += '	</label>';
-									tag += '</li>';
-								}
-							});
-							$('#brandArea').html(tag);
-						}
-
-						$('#lookbookArea').html('');
-						let tag2 = '';
-						tag2 += '<ul class="clear event_con" id="lookbookArea" style="display: block;">';
-						$.each(result, function(idx, item) {
-							tag2 += '<li>';
-							tag2 += '	<a href="javascript:void(0);" onclick="cfnGoToLookbookDetail(\''+lookbookGb+'\','+item.lookbookSq+','+item.brandCd+')">';
-							tag2 += '		<div class="ev_img">';
-							tag2 += '			<img src="' + _imgUrl + item.orgTnfileNm + '" alt="" style="height:100%">';
-							tag2 += '		</div>';
-							tag2 += '		<div class="txt">';
-							if(lookbookGb != 'BL') {
-								tag2 += '			<span class="brand">' + item.brandNm + '</span>';
-							}
-							tag2 += '			<p class="tit">'+item.title+'</p>';
-							tag2 += '		</div>';
-							tag2 += '	</a>';
-							tag2 += '</li>';
-						});
-						tag2 += '</ul>';
-
-						$('#lookbookArea').html(tag2);
-						$('#divLookbookNoData').hide();
-						$('#lookbookArea').show();
-					}else{
-						$('#lookbookTotCnt').html('<span>0</span>');
-						document.getElementById("changeClass").className = "event_list no_data";
-						$('#lookbookArea').hide();
-						$('#divLookbookNoData').show();
-					}
-				}
-				document.getElementById("brandBox").className = "btn btn_default tgl_dropdown";
-				$('.dropdown_menu').hide();
-			});
+	var fnLookbookListSearch = function (){
+		gagaInfiniteScroll.getHistory();
+	}
+
+	var fnGetInfiniteScrollDataList = function (pageNum){
+		$("#lbMainForm input[name=pageNo]").val(pageNum+1);
+		gagajf.ajaxFormSubmit("/display/lookbook/main/list", document.lbMainForm,  gagaInfiniteScroll.jsonToHtml);
+	}
+
+	var fnDrawInfiniteScrollData = function (result){
+		let totalCnt = result.paging.totalCount;
+		$("#lookbookTotCnt").text(totalCnt);
+		$("#lbMainForm").find("input[name=totalCnt]").val(totalCnt);
+		gagaInfiniteScroll.pageStatus.totalCount = totalCnt;
+
+		if (result.dataList != null && result.dataList.length > 0) {
+			$(".nodata").hide();
+			let lastPage = result.paging.pageNo;
+			let endRow = result.paging.endRow - result.paging.pageSize;
+
+			var htm = fnGetLookbookList(result);
+			gagaInfiniteScroll.draw(htm);
+		}else{
+			if($("#lbMainForm input[name=pageNo]").val()==1){
+				$("#divLookbookNoData").show();
+			}else{
+				$("#divLastPage").show();
+			}
+			gagaInfiniteScroll.draw('not');
+		}
+	}
+
+	let fnGetLookbookList = function (result){
+		var html = '';
+
+		$.each(result.dataList, function (idx, item){
+			html += '<li>';
+			html += '	<a href="javascript:void(0);" onclick="cfnGoToLookbookDetail(\''+lookbookGb+'\','+item.lookbookSq+','+item.brandCd+')">';
+			html += '		<div class="ev_img">';
+			html += '			<img src="' + _imgUrl + item.orgTnfileNm + '" alt="" style="height:100%">';
+			html += '		</div>';
+			html += '		<div class="txt">';
+			if(lookbookGb != 'BL') {
+				html += '			<span class="brand">' + item.brandNm + '</span>';
+			}
+			html += '			<p class="tit">'+item.title+'</p>';
+			html += '		</div>';
+			html += '	</a>';
+			html += '</li>';
+		});
+		return html;
 	}
 
+	// 브랜드 리스트 가져오기
+	let fnGetBrandList = function (){
+		let actionUrl = '/display/lookbook/main/brand/list?frontYn=Y';
+		$.getJSON(actionUrl, function(result, status){
+			if(result.length > 0){
+				$('#brandArea').html('');
+				let tag = '';
+				$.each(result, function(idx, item) {
+					tag += '<li>';
+					tag += '	<label class="brand_btn">';
+					tag += '		<input type="checkbox" group="filterValue" id="chkFilterBrand'+idx+'" data-name="chkFilterBrand'+idx+'" name="filterBrandCds" value="'+item.brandCd+'"><span>'+item.brandNm+'</span>';
+					tag += '	</label>';
+					tag += '</li>';
+				});
+				$('#brandArea').html(tag);
+			}
+		});
+	}
+
+	// 브랜드 선택 적용
 	var fnGetBrandLookbookList = function (){
-		var multiBrandCd = [];
+		$("#lbMainForm input:hidden[name=multiBrandCd]").remove();
+		var tag = '';
 		$("input:checkbox:checked").each(function (index) {
-			multiBrandCd.push($(this).val());
+			tag += '<input type="hidden" name="multiBrandCd" value="'+$(this).val()+'" />';
+			$("#lbMainForm").append(tag);
+		});
+
+		fnLookbookInfiniteScrollInit();
+		fnLookbookListSearch();
+	}
+
+	// 브랜드 선택 초기화
+	var fnLookbookReset = function (){
+		$("#lbMainForm input:hidden[name=multiBrandCd]").remove();
+
+		$("#brandArea").find('input[name=filterBrandCds]').each(function(idx, item){
+			$(this).prop("checked",false);
 		});
 
-		fnGetLookbookList(lookbookGb,multiBrandCd);
+		fnLookbookInfiniteScrollInit();
+		fnLookbookListSearch();
+	}
+
+	// 인피니티 스크롤 초기화
+	var fnLookbookInfiniteScrollInit = function (){
+		sessionStorage.removeItem(document.location.href);
+		$("#listBox").html("");
 	}
 
 	$(document).ready(function() {
 		//$("#container .wrap .content .cont_body .event_list .event_top .ui_row .count").find('span').text(totalCnt.addComma());
-		fnGetLookbookList(lookbookGb,brandCd);
+		//fnGetLookbookList(lookbookGb,brandCd);
+		//fnLookbookListSearch();
+		fnLookbookReset();
 
 		if(lookbookGb=='BL'){
 			$("#brandBox").hide();
 			$("#navHome").attr('onclick', 'cfnGoToBrandMain('+brandCd+');');
 		}else{
 			$("#navHome").attr('href', '/');
+			fnGetBrandList();
+		}
+
+		if(!gagajf.isNull($("#lbMainForm").find("input[name=totalCnt]").val())){
+			$("#lookbookTotCnt").text($("#lbMainForm").find("input[name=totalCnt]").val());
 		}
 	});
 

+ 8 - 3
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -43,10 +43,10 @@
 											<a th:href="${'#navLocate'+ status.count}">
 												<span class="thumb  mov">
 												<th:block th:if="${goodsVideo.videoGb == 'Y'}">
-												<img th:src="${'https://img.youtube.com/vi/'+goodsVideo.kmcKey+'/default.jpg'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+												<img th:src="${'https://img.youtube.com/vi/'+goodsVideo.kmcKey+'/default.jpg'}" alt="" >
 												</th:block>
 												<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
-												<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?enable_initialize_focus=false&controls_activation=none'}" frameborder="0" allowfullscreen></iframe>
+												<img th:src="${kollusMediaUrl+'/poster/'+goodsVideo.kmcKey}"  alt="" >
 												</th:block>
 												</span>
 											</a>
@@ -548,7 +548,12 @@
 											<a href="javascript:void(0);" id="btn_pdBestReview_pop"  th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]],'Y', '',[[${bestReview.reviewSq}]])" >
 												<div class="pic" th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
 													<th:block th:each="reviewAttach, attachStatus : ${bestReview.reviewAttachList}" th:if="${attachStatus.first}">
-													<span class="thumb" th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+														<th:block th:if="${reviewAttach.fileGb == 'M'}" >
+													<span class="thumb mov" th:style="${'background-image:url('+kollusMediaUrl+'/poster/'+reviewAttach.kmcKey+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+														</th:block>
+														<th:block th:unless="${reviewAttach.fileGb == 'M'}" >
+													<span class="thumb" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span>
+														</th:block>
 													</th:block>
 												</div>
 												<div class="star_score" th:with="starScore=${#numbers.formatDecimal((bestReview.iscore*100/5), 0,0)}">

+ 17 - 8
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html

@@ -302,7 +302,12 @@
 						<a href="javascript:void(0);" th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]], 'Y', '', [[${bestReview.reviewSq}]])" >
 							<div class="pic" th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
 								<th:block th:each="reviewAttach, attachStatus : ${bestReview.reviewAttachList}" th:if="${attachStatus.first}">
-								<span class="thumb" th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+									<th:block th:if="${reviewAttach.fileGb == 'M'}">
+									<span class="thumb mov" th:style="${'background-image:url('+kollusMediaUrl+'/poster/'+reviewAttach.kmcKey+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+									</th:block>
+									<th:block th:unless="${reviewAttach.fileGb == 'M'}">
+									<span class="thumb" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span>
+									</th:block>
 								</th:block>
 							</div>
 							<div class="star_score" th:with="starScore=${#numbers.formatDecimal((bestReview.iscore*100/5), 0,0)}">
@@ -325,13 +330,17 @@
 		<h6>포토/영상 리뷰</h6>
 		<div class="photo_list">
 			<ul>
-				<li  th:each="photoReview, status : ${photoReviewList}" >
+				<li  th:each="photoReview, status : ${photoReviewList}" th:if="${status.count<=7}">
 					<th:block th:if="${photoReview.reviewAttachList != null and !photoReview.reviewAttachList.empty}">
 					<th:block th:each="reviewAttach, attachStatus : ${photoReview.reviewAttachList}" th:if="${attachStatus.first}">
-					
 					<a href="javascript:void(0);" th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]], '', 'Y', [[${photoReview.reviewSq}]])">
 						<div class="pic">
-							<span class="thumb" th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+							<th:block th:if="${reviewAttach.fileGb == 'M'}">
+							<span class="thumb mov" th:style="${'background-image:url('+kollusMediaUrl+'/poster/'+reviewAttach.kmcKey+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+							</th:block>
+							<th:block th:unless="${reviewAttach.fileGb == 'M'}">
+							<span class="thumb" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span>
+							</th:block>
 						</div>
 					</a>
 					</th:block>
@@ -550,15 +559,15 @@
 				if (item.reviewAttachList != null && item.reviewAttachList.length > 0){
 					var fileGbClass = '';
 					$.each(item.reviewAttachList, function(aIdx, reviewAttach){
-						fileGbClass = '';
-						if (reviewAttach.fileGb == "M") fileGbClass = "mov";
+//						fileGbClass = '';
+//						if (reviewAttach.fileGb == "M") fileGbClass = "mov";
 				tag += '				<li>\n';
 				tag += '					<a href="javascript:void();" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\','+aIdx+');">\n';
 				tag += '						<div class="pic">\n';
 					if (reviewAttach.fileGb == "M") {
-				tag +='					<span class="thumb '+fileGbClass+'"><iframe width="100%" height="100%" src="'+_kollusMediaUrl +'/'+reviewAttach.kmcKey +'?player_version=html5" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></span>\n';
+				tag +='					<span class="thumb mov" style="background-image:url('+_kollusMediaUrl +'/poster/'+reviewAttach.kmcKey +');\" ></span>\n';
 					}else{
-				tag +='					<span class="thumb" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');\" >\n';
+				tag +='					<span class="thumb" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');\" ></span>\n';
 					}
 				tag += '						</div>\n';
 				tag += '					</a>\n';

+ 3 - 3
src/main/webapp/WEB-INF/views/web/goods/GoodsReviewPhotoFormWeb.html

@@ -65,15 +65,15 @@
 				if (item.reviewAttachList != null && item.reviewAttachList.length > 0){
 					var fileGbClass = '';
 					$.each(item.reviewAttachList, function(aIdx, reviewAttach){
-						fileGbClass = '';
-						if (reviewAttach == "M") fileGbClass = "mov";
+					//	fileGbClass = '';
+					//	if (reviewAttach == "M") fileGbClass = "mov";
 				tag += '				<li>\n';
 				tag += '					<a href="javascript:void();" onclick="fnGoodsReviewDetail(\''+item.reviewSq+'\');">\n';
 				tag += '						<div class="pic">\n';
 				if ("I" ==reviewAttach.fileGb){
 					tag += '							<span class="thumb" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->	
 				}else{
-					tag += '							<span class="thumb '+ fileGbClass +'"><iframe width="100%" height="100%" src="'+_kollusMediaUrl +'/'+reviewAttach.kmcKey +'?player_version=html5" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></span>\n';	
+					tag += '							<span class="thumb mov" style="background-image:url('+_kollusMediaUrl+'/poster/'+reviewAttach.kmcKey+');"></span>\n';
 				}
 				tag += '						</div>\n';
 				tag += '					</a>\n';

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -27,7 +27,7 @@
 				<div class="od_cont">
 					<div class="sec_head">
 						<div class="info_complete">
-							<p class="txt_box">감사합니다. <span th:text="${chgerNm}"></span> 고객님의 결제가 완료되었습니다.</p>
+							<p class="txt_box">감사합니다. <span th:text="${ordNm}"></span> 고객님의 결제가 완료되었습니다.</p>
 						</div>
 					</div>
 					<div class="sec_body">

+ 0 - 10
src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html

@@ -129,16 +129,6 @@
 												</table>
 											</div>
 										</div>
-										<!-- 210421_수정 : 테이블 추가. -->
-										<div class="payinfo_blk">
-											<a href="">
-												결제대행 서비스 약관 동의
-												<span>보기</span>
-											</a>
-											<div class="infotxt">
-												결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.
-											</div>
-										</div>
 									</div>
 									<div class="agree_payment">
 										위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다. (전자상거래법 제 8조 제2항) <!-- 210421_수정 : 텍스트 수정. -->

+ 22 - 10
src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html

@@ -125,7 +125,7 @@
 												</div>
 												<div>
 													<dt>배송비</dt>
-													<dd><em th:text="${#numbers.formatInteger(delvFeeSumAmt, 1, 'COMMA')}"></em>원</dd>	
+													<dd><em th:text="${#numbers.formatInteger(realDelvSumAmt, 1, 'COMMA')}"></em>원</dd>	
 												</div>
 												<div>
 													<dt>상품할인</dt>
@@ -268,7 +268,12 @@
 					</div>
 					<div class="sec_foot">
 						<div class="btn_group_md">
-							<button type="button" class="btn btn_default btn_md" th:ordno="${orderInfo.ordNo}" onclick="fnGoToOrderDetail(this)"><span>주문 상세보기</span></button>
+							<th:block th:if="${isLogin} == true">
+								<button type="button" class="btn btn_default btn_md" th:ordno="${orderInfo.ordNo}" onclick="fnGoToOrderDetail(this);"><span>주문 상세보기</span></button>
+							</th:block>
+							<th:block th:if="${isLogin} == false">
+								<button type="button" class="btn btn_default btn_md" th:ordno="${orderInfo.ordNo}" onclick="cfnGoToPage(_PAGE_NON_CUSTOMER_ORDER_CONFIRM);"><span>주문 상세보기</span></button>
+							</th:block>
 							<button type="button" class="btn btn_dark btn_md" onclick="location.href='/'"><span>쇼핑 계속하기</span></button>
 						</div>
 					</div>
@@ -367,16 +372,23 @@ var delvAddrSet = function(delvObj) {
 	$("#recipAddr").text(delvObj.recipBaseAddr + '    ' + delvObj.recipDtlAddr);
 	$("#delvMemo").text(delvObj.delvMemo);
 	
+	// 2021.05.16 비회원구분처리
+	let url = '';
 	// 변수값 설정
-	let url = '/mypage/change/delvery/addr';
+	if (isLogin == true) {
+		url = '/mypage/change/delvery/addr';
+	} else {
+		url = '/noMember/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;
+	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);
 	

+ 16 - 0
src/main/webapp/WEB-INF/views/web/order/OrderCouponApplyPopWeb.html

@@ -126,6 +126,22 @@
 							
 									</div>
 								</th:block>
+								<!-- 2021.05.16 적용안함 -->
+								<div class="cartCpn" value="0">
+									<input type="hidden" name="dcWay" 			th:value="0"/>
+									<input type="hidden" name="dcVal" 			th:value="0"/>
+									<input type="hidden" name="buyLimitAmt" 	th:value="0"/>
+									<input type="hidden" name="maxDcAmt" 		th:value="0"/>
+										
+									<input type="radio" name="rdi-cart-coupon" id="rdi-cart-coupon00">
+									<label for="rdi-cart-coupon00">
+										<div class="cart_coupon">
+											<p class="name">적용안함</p>
+										</div>
+									</label>
+								</div>
+								<!-- //2021.05.16 적용안함 -->
+								
 								<input type="hidden" name="cpnType" value="cartCpn"/>
 								<input type="hidden" name="custCpnSq" value="0"/>
 								<input type="hidden" name="cpnDcAmt" value="0"/>

+ 17 - 40
src/main/webapp/WEB-INF/views/web/order/OrderDeliveryAddrInfoWeb.html

@@ -38,44 +38,7 @@
 	</a>
 </div>
 <div class="fold_cont" style="display: none;">
-	<!-- 
-	<div class="area_receiveinfo">
-		<dl>
-			<div>
-				<dt><span class="sr-only">배송지명</span></dt>
-				<dd>
-					홍길동
-					<span class="icon_tag">
-						<em class="tag">기본 배송지</em>
-						<em class="tag primary_line">총알배송</em>
-					</span>
-				</dd>
-			</div>
-			<div>
-				<dt><span class="sr-only">휴대폰 번호</span></dt>
-				<dd>
-					010-1234-5647
-				</dd>
-			</div>
-			<div>
-				<dt><span class="sr-only">배송주소</span></dt>
-				<dd>
-					서울시 영등포구 은행로 11,8층(여의도동,일신빌딩)
-					<button type="button" class="btn btn_default btn_sm" id="btn_adrsChange_pop"><span>배송지 변경</span></button>
-				</dd>
-			</div>
-			<div>
-				<dt>배송요청 사항</dt>
-				<dd>
-					직접받고 부재 시 문앞
-					<button type="button" class="btn_underline" id="btn_rqstModify_pop"><span>변경하기</span></button>
-				</dd>
-			</div>
-		</dl>
-	</div>
-	 -->
-
-	<div class="area_receiveinfo">
+	<div class="area_receiveinfo exist">
 		<dl>
 			<div>
 				<dt><span class="sr-only">배송지명</span></dt>
@@ -93,12 +56,12 @@
 				<dt><span class="sr-only">배송주소</span></dt>
 				<dd>
 					<th:block th:if="${deliveryAddrInfo.recipZipcode} == '00000'">
-						배송지 정보를 등록해 주세요.
+						배송지를 등록해 주세요.
 					</th:block>
 					<th:block th:if="${deliveryAddrInfo.recipZipcode} != '00000'">
 						<th:block th:text="${deliveryAddrInfo.recipBaseAddr} + '    ' + ${deliveryAddrInfo.recipDtlAddr}"></th:block>
 					</th:block>
-					<button type="button" class="btn btn_default btn_sm" id="btn_adrsChange_pop">
+					<button type="button" class="btn btn_default btn_sm btn_adrsChange_pop">
 						<span>배송지 변경</span>
 					</button>
 				</dd>
@@ -125,6 +88,20 @@
 		</dl>
 	</div>
 	
+	<!-- 배송지정보가 없을때 노출 -->
+	<div class="area_receiveinfo none" style="display:none">
+		<dl>
+			<div>
+				<dt><span class="sr-only">배송지를 등록해 주세요.</span></dt>
+				<dd>
+					배송지 정보를 등록해 주세요.
+					<button type="button" class="btn btn_default btn_sm btn_adrsChange_pop"><span>배송지 변경</span></button>
+				</dd>
+			</div>
+		</dl>
+	</div>
+	<!-- 배송지정보가 있을때 노출 -->
+	
 	<!-- 해외배송상품일 경우 노출 -->
 	<th:block th:if="${order.foreignBuyYn} == 'Y'">
 		<div class="area_overseas">

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

@@ -230,6 +230,8 @@
 							</div>
 							
 							<div class="area_paymentinfo">
+								<!-- @자사만,무통장,실시간있으면 미노출 -->
+								<!-- @입점이있으면  -->
 								<div class="paymentinfo">
 									<div class="payinfo_blk">
 										<a href="">개인정보 제공에 대한 동의<span>보기</span></a>
@@ -250,7 +252,7 @@
 													</tr>
 												</thead> 
 												<tbody>
-													<tr>
+													<tr class="paymentinfo agree1">
 														<td>서울보증보험㈜, ㈜유세이프</td>
 														<td>
 															구매자명, 구매자 생년월일,
@@ -262,24 +264,31 @@
 														<td>쇼핑몰보증보험 가입 및 보험가입 제반 사항</td>
 														<td>개별서비스 제공기간</td>
 													</tr>
-													<tr>
-														<td>더비오유컴퍼니 주식회사</td>
-														<td>성명, 주소, 연락처</td>
-														<td>주문상품의 배송, 고객상담 및 불만처리</td>
-														<td>이용목적 달성 시 까지</td>
-													</tr>
+													<!-- 입점업체가 있을때 노출 -->
+													<th:block th:if="${delvCnt} > 0">
+														<tr class="paymentinfo agree2">
+															<td>
+																<th:block th:each="delvFeeCd, i : ${delvFeeCdList}">
+																	<th:block th:unless="${delvFeeCd.delvFeeCd} == 'WMS'">
+																		<th:block th:if="${i.count == #lists.size(delvFeeCdList)}">
+																			<th:block th:text="|${delvFeeCd.supplyCompNm}|"></th:block>
+																		</th:block>
+																		<th:block th:if="${i.count < #lists.size(delvFeeCdList)}">
+																			<th:block th:text="|${delvFeeCd.supplyCompNm},|"></th:block>
+																		</th:block>
+																	</th:block>
+																</th:block>
+															</td>
+															<td>성명, 주소, 연락처</td>
+															<td>주문상품의 배송, 고객상담 및 불만처리</td>
+															<td>이용목적 달성 시 까지</td>
+														</tr>
+													</th:block>
+													<!-- //입점업체가 있을때 노출 -->
 												</tbody>
 											</table>
 										</div>
 									</div>
-									<!-- 
-									<div class="payinfo_blk">
-										<a href="">결제대행 서비스 약관 동의<span>보기</span></a>
-										<div class="infotxt">
-											결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.
-										</div>
-									</div>
-									 -->
 								</div>
 								<div class="agree_payment">
 									위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다. (전자상거래법 제 8조 제2항)
@@ -471,7 +480,7 @@ $(document).ready( function() {
 	cartSqArr = String(cartSqArr).split(",");
 	
 	if (isLogin == false) {
-		dispYn = "Y";
+		//dispYn = "Y";
 	}
 	
 	// AJAX 로드를 위한 변수 설정
@@ -573,6 +582,15 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 			$("#deliveryAddrInfo").css("display", "block");
 			$("#deliveryAddrInfo").html(result);
 			
+			// 2021.05.16 배송정보가 있으면 노출
+			if ($("#orderForm input[name='recipZipcode']").val() != "00000") {
+				$("#orderForm .area_receiveinfo.exist").show();
+				$("#orderForm .area_receiveinfo.none").hide();
+			} else {
+				$("#orderForm .area_receiveinfo.exist").hide();
+				$("#orderForm .area_receiveinfo.none").show();
+			}
+			
 			// 배송정보설정
 			$("#orderAmtForm .recipNm").text($("#orderForm input[name='recipNm']").val());
 			$("#orderAmtForm .recipPhnno").text($("#orderForm input[name='recipPhnno']").val());
@@ -583,7 +601,7 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 			
 			// 2. 버튼기능구현
 			// 2.1 회원 배송지변경 팝업열기
-			$('#btn_adrsChange_pop').on("click", function(){
+			$('#orderForm .btn_adrsChange_pop').on("click", function(){
 				// 회원인경우
 				if (isLogin == true) {
 					$.ajax( {
@@ -905,22 +923,68 @@ var paymentInfoSet = function() {
 				$("#paymentInfo").css("display", "block");
 				$("#paymentInfo").html(result);
 				
+				var payTeyp = "";
+				
 				// 결제타입명칭 설정
 				$("#orderForm .area_paymethod .paymethod_box ul li").on("click", function(){
-					var payType = $(this).find(".payType").text();
+					payType = $(this).find(".payType").text();
 					if ($(this).find("input[name=rdi-paynormal]").is(":checked")) {
 						$("#orderForm .payTypeNm").text(payType);
 					}
-
+					
+					// 2021.04.29 수정
+					$("#orderForm input[name=insuranceYn]").attr("checked", false);
+					$("#orderForm .area_paymentinfo .agree1").hide();
+					
 					// 2021.04.25 실시간계좌이체, 무통장입금시 보증보험 신청 약관 노출
 					if (payType == "실시간계좌이체" || payType == "무통장입금" ) {
 						$("#orderForm .area_paymethod .agree_insurance").show();
 					} else {
-						$("#orderForm .area_paymethod .agree_insurance").hide();
+						$("#orderForm .area_paymethod .agree_insurance").hide();	
+					}
+					
+					if (delvCnt > 0) {
+						$("#orderForm .area_paymentinfo").show();
+					} else {
+						$("#orderForm .area_paymentinfo").hide();
+					}
+				});
+				
+				// 2021.04.25 실시간계좌이체, 무통장입금시 보증보험 신청 약관 노출
+				// 2021.05.16 동의박스체크시노출
+				$("#orderForm input[name=insuranceYn]").on("click", function(){
+					var displayTemp = true;
+					if (payType == "실시간계좌이체" || payType == "무통장입금" ) {
+						if ($(this).is(":checked")) {
+							$("#orderForm .area_paymethod .agree_insurance").show();
+							$("#orderForm .area_paymentinfo").show();
+							$("#orderForm .area_paymentinfo .agree1").show();
+						} else {
+							displayTemp = false;
+						}
+					} else {
+						displayTemp = false;
+					}
+					
+					if (displayTemp == false) {
+						$("#orderForm .area_paymentinfo .agree1").hide();
+						
+						if (delvCnt > 0) {
+							$("#orderForm .area_paymentinfo").show();
+						} else {
+							$("#orderForm .area_paymentinfo").hide();
+						}
 					}
-					// 2021.04.29 수정
-					$("#orderForm input[name=insuranceYn]").attr("checked", false);
 				});
+
+				// 2021.05.16 초기값설정
+				$("#orderForm .area_paymethod .agree_insurance").hide();
+				$("#orderForm .area_paymentinfo .agree1").hide();
+				if (delvCnt > 0) {
+					$("#orderForm .area_paymentinfo").show();
+				} else {
+					$("#orderForm .area_paymentinfo").hide();
+				}
 				
 				// 결재하기
 				$("#btn_payment").on("click", function(){

+ 5 - 0
src/main/webapp/WEB-INF/views/web/order/OrderNoMemberWeb.html

@@ -167,6 +167,11 @@ $(document).ready( function() {
 	$("#orderForm input[name=recipAddr]").val("13245" + '    ' + "서울시 영등포구 은행로 11, 8층(여의도동, 일신빈딩)");
 	*/
 });
+
+//취소버튼
+$("#btn_cancel").on("click", function() {
+	window.history.back();
+});
 	
 // 주문하기버튼
 $("#btn_order").on("click", function() {

+ 1 - 3
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -118,8 +118,7 @@
 					</div>
 					<div class="cont_body">
 						<div class="btn_wrap">
-							<a href="javascript:void(0);" class="btn btn_primary go_next"
-								onclick="javascript:fnJoinConfirm()"> <span>설문조사 참여하기</span></a>
+							<a href="javascript:void(0);" class="btn btn_primary go_next" onclick="javascript:fnJoinConfirm()"> <span>설문조사 참여하기</span></a>
 						</div>
 					</div>
 				</div>
@@ -1152,7 +1151,6 @@ $(document).ready( function() {
 		var content = $(this).val();
 		$('#cmt_cnt').html(content.length);
 		if (content.length > 500){
-			mcxDialog.alert("최대 500자까지 입력 가능합니다.");
 			$(this).val(content.substring(0, 500));
 			$('#cmt_cnt').html("500");
 		}

+ 7 - 5
src/main/webapp/WEB-INF/views/web/popup/DelvAddrAddPopWeb.html

@@ -6,12 +6,14 @@
 		<div class="pop_cont">
 			<div class="area_adrsinfo">
 				<h6>배송지 정보</h6>
-				<div class="default_addrs">
-					<div class="form_field">
-						<input id="chk-default-addrs" type="checkbox" name="defaultYn" checked="">
-						<label for="chk-default-addrs"><span>기본 배송지로 등록</span></label>
+				<th:block th:if="${isLogin} == true">
+					<div class="default_addrs">
+						<div class="form_field">
+							<input id="chk-default-addrs" type="checkbox" name="defaultYn" checked="">
+							<label for="chk-default-addrs"><span>기본 배송지로 등록</span></label>
+						</div>
 					</div>
-				</div>
+				</th:block>
 				<div class="form_field">
 					<label class="input_label sr-only">받는 분</label>
 					<div class="ui_col_12">

+ 12 - 10
src/main/webapp/WEB-INF/views/web/popup/DelvAddrModifyPopWeb.html

@@ -8,17 +8,19 @@
 		<div class="pop_cont">
 			<div class="area_adrsinfo">
 				<h6>배송지 정보</h6>
-				<div class="default_addrs">
-					<div class="form_field">
-						<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
-							<input id="chk-default-addrs1" type="checkbox" name="defaultYn" checked>
-						</th:block>
-						<th:block th:if="${deliveryAddrInfo.defaultYn} == 'N'">
-							<input id="chk-default-addrs1" type="checkbox" name="defaultYn">
-						</th:block>
-						<label for="chk-default-addrs1"><span>기본 배송지로 등록</span></label>
+				<th:block th:if="${isLogin} == true">
+					<div class="default_addrs">
+						<div class="form_field">
+							<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
+								<input id="chk-default-addrs1" type="checkbox" name="defaultYn" checked>
+							</th:block>
+							<th:block th:if="${deliveryAddrInfo.defaultYn} == 'N'">
+								<input id="chk-default-addrs1" type="checkbox" name="defaultYn">
+							</th:block>
+							<label for="chk-default-addrs1"><span>기본 배송지로 등록</span></label>
+						</div>
 					</div>
-				</div>
+				</th:block>
 				<div class="form_field">
 					<label class="input_label sr-only">받는 분</label>
 					<div class="ui_col_12">

+ 97 - 11
src/main/webapp/biz/goods.js

@@ -354,7 +354,7 @@ var filterHtml = '';
 var filterStatHtml = '';
 
 // 상품상세 필터 조회
-var filterSel = function (obj, gubun, staus, sizeGb, appGb){
+var filterSel = function (obj, gubun, staus, sizeGb){
 	filterHtml = '';
 	filterStatHtml = '';
 	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
@@ -362,9 +362,9 @@ var filterSel = function (obj, gubun, staus, sizeGb, appGb){
 	let $obj = $(obj);
 	if(staus=='on'){
 		if(gubun=='size'){
-			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'off\',\''+sizeGb+'\',\''+appGb+'\');');
+			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'off\',\''+sizeGb+'\');');
 		}else{
-			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'off\',\'\',\''+appGb+'\');');
+			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'off\',\'\');');
 		}
 
 		$("#filterData").find('span').each(function(idx,item) {
@@ -380,9 +380,9 @@ var filterSel = function (obj, gubun, staus, sizeGb, appGb){
 		});
 	}else{
 		if(gubun=='size'){
-			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'on\',\''+sizeGb+'\',\''+appGb+'\');');
+			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'on\',\''+sizeGb+'\');');
 		}else{
-			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'on\',\'\',\''+appGb+'\');');
+			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'on\',\'\');');
 		}
 
 		let tag = '';
@@ -405,15 +405,13 @@ var filterSel = function (obj, gubun, staus, sizeGb, appGb){
 			tag += '</span>';
 		}
 
-		if(appGb != 'Mob'){
-			$("#filterData").append(tag);
-		}
+		$("#filterData").append(tag);
 
 		filterStatHtml += tag;
 	}
 
 	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
-	fnFilterSet(gubun, sizeGb, appGb);
+	fnFilterSet(gubun, sizeGb);
 }
 
 var fnFilterSet = function (searchId, sizeGb, appGb){
@@ -437,6 +435,8 @@ var fnFilterSet = function (searchId, sizeGb, appGb){
 
 	if(appGb == 'Mob'){
 		var data = '';
+		var tag = '';
+		var filterSet = '';
 		$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
 		$('#filterForm input[name='+searchId+']:checked').each(function(idx){
 			if(searchId=='color'){
@@ -458,10 +458,11 @@ var fnFilterSet = function (searchId, sizeGb, appGb){
 				data += $(this).attr('data-id');
 				$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
 			}
-
 		});
+
 	}
 	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
+	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
 	fnGoodsListSearch();
 }
 
@@ -612,12 +613,15 @@ var fnSortingChange = function (obj, sortingType, stat, appGb){
 		}
 	}
 
-	console.log('appGb:::'+appGb);
 	if(appGb != 'Mob'){
 		$("#sortArea").find('li').each(function (){
 			$(this).find('a').attr('class','off');
 		});
 	}else{
+		$("#sortArea").find('button').each(function (){
+			$(this).removeClass("on");
+		});
+		$("#sorting"+sortingType).addClass("on");
 		$("#filter").text($("#sorting"+sortingType).find('span').text());
 	}
 	
@@ -726,4 +730,86 @@ var filterDcRateMob = function (obj, gubun, staus, idx){
 
 }
 
+// 상품상세 필터 조회
+var fnSelectFilerMob = function (obj, gubun, staus, sizeGb){
+	filterHtml = '';
+	filterStatHtml = '';
+	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
+	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	let $obj = $(obj);
+	if(staus=='on'){
+		if(gubun=='size'){
+			$(obj).attr('onclick','fnSelectFilerMob(this,\''+gubun+'\',\'off\',\''+sizeGb+'\');');
+		}else{
+			$(obj).attr('onclick','fnSelectFilerMob(this,\''+gubun+'\',\'off\',\'\');');
+		}
+
+		$("#filterData").find('span').each(function(idx,item) {
+			if(gubun=='color'){
+				if($obj.attr('data-id').replace('#','').trim() == $(this).closest("span").attr('id')) {
+					$(this).closest("span").remove();
+				}
+			}else{
+				if($obj.attr('data-id') == $(this).closest("span").text()) {
+					$(this).closest("span").remove();
+				}
+			}
+		});
+	}else{
+		if(gubun=='size'){
+			$(obj).attr('onclick','fnSelectFilerMob(this,\''+gubun+'\',\'on\',\''+sizeGb+'\');');
+		}else{
+			$(obj).attr('onclick','fnSelectFilerMob(this,\''+gubun+'\',\'on\',\'\');');
+		}
+	}
+	fnFilterSet(gubun, sizeGb, 'Mob');
+}
+
+var fnReCheckFilterList = function (){
+	var data = '';
+	var searchId = '';
+	$('#filterForm').find('.allFilter').find('.chkFilter').each(function() {
+		if(!gagajf.isNull($(this).attr('id'))){
+			if($(this).attr('id') == 'sizeFilterDiv'){
+				searchId = 'size';
+			}else{
+				searchId = $(this).attr('id').replace('FilterDiv','');
+			}
+		}
+
+		if(!gagajf.isNull(searchId)){
+			$('#filterForm input[name='+searchId+']:checked').each(function(idx){
+				if(searchId=='color'){
+					$('#'+searchId+'FilterDiv').find('.daps1').find('.pic').find('span').html('');
+					var mobTag = '';
+					var color = $(this).attr('data-id');
+					console.log('color::'+$(this).attr('data-id'));
+					if(color=='FFFFFF'){
+						mobTag += '<span class="pdColor-color" style="background-color:#'+color+';border:1px solid #aaa;"></span>';
+					}else{
+						mobTag += '<span class="pdColor-color" style="background-color:#'+color+'"></span>';
+					}
+					$("#"+searchId+"FilterDiv").find('.daps1').find('.pic').append(mobTag);
+				}else if(searchId=='price'){
+					$('#filterForm input[name=price]:checked').each(function(index){
+						$("#priceFilterDiv").find('.daps1').append('<span class="pic">'+$("#pricdSpan"+idx).text()+'</span>');
+					});
+				}else if(searchId=='dcRate'){
+					$('#filterForm input[name=dcRate]:checked').each(function(index){
+						$("#dcRateFilterDiv").find('.daps1').append('<span class="pic">'+$("#dcRateText"+idx).text()+'</span>');
+					});
+				}else{
+					$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
+					if(idx>0){
+						data += ',';
+					}
+					data += $(this).attr('data-id');
+					$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
+				}
+			});
+		}
+
+	});
+}
+
 //****************상품리스트  end **********************************

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

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

+ 1 - 1
src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollLayer.js

@@ -63,7 +63,7 @@ var gagaInfiniteScroll = {
 	},
 	scrollCheck : function() {
 		var obj = this.obj, stat = this.pageStatus;
-		alert("aaaaa");
+		
 		if ($('[data-id="layer_infinite"]').scrollTop() + $('[data-id="layer_infinite"]').height() >= $('[data-id="layer_infinite_item"]').height() ) { // 더보기
 			if (stat.loadAlign == 'not') {
 				var pageLen = this.pageStatus.pageNum.length - 1;

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

@@ -88,9 +88,10 @@ const _PAGE_NOMEMBER_CRE_LIST = _frontUrl + "/noMember/cre/list/form";				// 비
 //== 검색 ==/
 
 //== 기획전 ==/
-const _PAGE_PLANNING_MAIN = _frontUrl + "/planning/main/form"; 					// 기획전 메인
-const _PAGE_PLANNING_DETAIL = _frontUrl + "/planning/detail/form";				// 기획전 상세
-const _PAGE_PLANNING_CPN_DOWNLOAD = "/planning/coupon/download";			    // 상품쿠폰다운로드
+const _PAGE_PLANNING_MAIN = _frontUrl + "/planning/main/form"; 					      // 기획전 메인
+const _PAGE_PLANNING_DETAIL = _frontUrl + "/planning/detail/form";				      // 기획전 상세
+const _PAGE_PLANNING_CPN_DOWNLOAD = "/planning/coupon/download";			          // 상품쿠폰다운로드
+const _PAGE_PLANNING_REPLY_DETAIL_LAYER = _frontUrl + "/planning/reply/detail/layer"; // 상품평- 상세(포토)
 
 //== 핫딜==/
 const _PAGE_SOCIAL_MAIN = _frontUrl + "/social/main/form";						// 소설(핫딜) 메인
@@ -663,6 +664,28 @@ function cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq, attachSq) {
 	cfnOpenLayer(_PAGE_GOODS_REVIEW_DETAIL_LAYER+params, 'layer_review_best');
 }
 
+/**
+* @type   : function
+* @access : public
+* @desc   : 댓글 이미지 팝업
+* <pre>
+*		cfPlanReplyDetail(planSq, planEntrySq, planEntryAtSq);
+* </pre>
+*/
+function cfPlanReplyDetail(planSq, planEntrySq, planEntryAtSq) {
+	var str = '<div class="modal pop_full photo_comment_popup" id="photo_full_popup" tabindex="-1" role="dialog" aria-labelledby="comment_popup" aria-hidden="true">';
+
+	if ($('#layer_review_best').length == 0) {
+		$('body').append(str);
+	}
+	
+	var params = '?planSq=' + planSq;
+	params += '&planEntrySq=' + planEntrySq;
+	if (typeof (planEntryAtSq) != 'undefined') params += "&planEntryAtSq=" + planEntryAtSq;
+	
+	cfnOpenLayer(_PAGE_PLANNING_REPLY_DETAIL_LAYER+params, 'photo_full_popup');
+}
+
 /**
 * @type   : function
 * @access : public
@@ -852,7 +875,12 @@ function cfGoodsReview(goodsCd) {
  * </pre>
  */
 function cfnConsentUseInfo(custNm) {
-	let str = '<div class="modal fade mbAgree_pop" id="layer_consent_useinfo" tabIndex="-1" role="dialog" aria-labelledby="mbAgreeLabel" aria-hidden="true"></div>';
+	let str;
+	if (_frontGb === 'P') {
+		str = '<div class="modal fade mbAgree_pop" id="layer_consent_useinfo" tabIndex="-1" role="dialog" aria-labelledby="mbAgreeLabel" aria-hidden="true"></div>';
+	} else {
+		str = '<div class="modal pop_full mbAgree_pop" id="layer_consent_useinfo" tabindex="-1" role="dialog" aria-labelledby="mbAgreeLabel" aria-hidden="true"></div>'
+	}
 	let params = {}
 	params.custNm = custNm;
 	if ($('#layer_consent_useinfo').length == 0) {
@@ -916,7 +944,7 @@ function cfnUseTermsLayer() {
  *		cfnPrivacyPolicyLayer();
  * </pre>
  */
-function cfnPrivacyPolicyLayer() {
+function cfnPrivacyPolicyLayer(mallGb) {
 	let str;
 	if (_frontGb === 'P') {
 		str = '<div class="modal fade policiesPrivacy_pop" id="policiesPrivacyPop" tabindex="-1" role="dialog" aria-labelledby="policiesPrivacyLabel" aria-hidden="true"></div>';
@@ -926,7 +954,9 @@ function cfnPrivacyPolicyLayer() {
 	if ($('#policiesPrivacyPop').length == 0) {
 		$('body').append(str);
 	}
-	cfnOpenLayer(_PAGE_PRIVACY_POLICY_LAYER, 'policiesPrivacyPop');
+	let params = {}
+	params.mallGb = mallGb;
+	cfnOpenLayer(_PAGE_PRIVACY_POLICY_LAYER, 'policiesPrivacyPop', params);
 }
 
 /**

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません