Forráskód Böngészése

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

xodud1202 5 éve
szülő
commit
e1a404dc38
29 módosított fájl, 4982 hozzáadás és 1691 törlés
  1. 64 0
      src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java
  2. 21 0
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  3. 85 0
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  4. 25 0
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  5. 46 3
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  6. 34 7
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  7. 3 3
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  8. 30 1
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  9. 29 0
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  10. 428 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  11. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  12. 16 8
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  13. 51 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  14. 2 2
      src/main/webapp/WEB-INF/views/mob/common/fragments/HeadMob.html
  15. 25 0
      src/main/webapp/WEB-INF/views/mob/common/layout/SubLayoutMob.html
  16. 2211 0
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  17. 225 0
      src/main/webapp/WEB-INF/views/mob/order/OrderNoMemberMob.html
  18. 99 487
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  19. 14 15
      src/main/webapp/WEB-INF/views/web/mypage/ChangeOptionPopupFormWeb.html
  20. 200 157
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  21. 309 263
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  22. 411 368
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  23. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  24. 332 285
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  25. 2 2
      src/main/webapp/WEB-INF/views/web/order/OrderNoMemberWeb.html
  26. 175 79
      src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html
  27. 135 0
      src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html
  28. 2 2
      src/main/webapp/ux/mo/css/common_m.css
  29. 5 5
      src/main/webapp/ux/mo/js/common_m.js

+ 64 - 0
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -15,6 +15,7 @@ import com.style24.persistence.domain.Contents;
 import com.style24.persistence.domain.GnbTab;
 import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Popup;
+import com.style24.persistence.domain.GoodsSearch;
 
 /**
  * 전시 Dao
@@ -143,4 +144,67 @@ public interface TsfDisplayDao {
 	 * @date 2021. 3. 31
 	 */
 	Collection<Contents> getContentsBannerList(Contents contents);
+
+	/**
+	 * 상품카테고리 필터 브랜드 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	Collection<GoodsSearch> getCategoryFliterBrand(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품카테고리 필터 사이즈 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	Collection<GoodsSearch> getCategoryFliterSize(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품카테고리 필터 가격 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	Collection<GoodsSearch> getCategoryFliterPrice(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품카테고리 필터 연령대 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	Collection<GoodsSearch> getCategoryFliterAge(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품카테고리 필터 시즌 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	Collection<GoodsSearch> getCategoryFliterSeason(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품카테고리 필터 컬러 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	Collection<GoodsSearch> getCategoryFliterColor(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품카테고리 필터 컬러 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	Collection<GoodsSearch> getCategoryFliterBenefit(GoodsSearch goodsSearch);
 }

+ 21 - 0
src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java

@@ -5,6 +5,7 @@ import java.util.Map;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Poll;
 import com.style24.persistence.domain.Review;
@@ -281,5 +282,25 @@ public interface TsfPlanningDao {
 	 */
 	int getCustAnswerPartiCount(Poll poll);
 	
+	/**
+	 * 총알배송 조회할 기본 주소
+	 *
+	 * @param CustDeliveryAddr
+	 * @return CustDeliveryAddr
+	 * @author sowon
+	 * @date 2021. 4. 5
+	 */
+	CustDeliveryAddr getCustAddrInfo(CustDeliveryAddr addr);
+	
+	/**
+	 * 총알배송 가능여부
+	 *
+	 * @param CustDeliveryAddr
+	 * @return CustDeliveryAddr
+	 * @author sowon
+	 * @date 2021. 4. 5
+	 */
+	CustDeliveryAddr getCustAddrShotConfirm(String recipZipcode);
+	
 	
 }

+ 85 - 0
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -22,6 +22,7 @@ import com.style24.persistence.domain.Contents;
 import com.style24.persistence.domain.GnbTab;
 import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Popup;
+import com.style24.persistence.domain.GoodsSearch;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -322,4 +323,88 @@ public class TsfDisplayService {
 		return contentsList;
 
 	}
+
+	/**
+	 * 상품카테고리 필터 브랜드 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	@Cacheable(value = "cate", key = "'categoryFilterBrand-'.concat(#brandGroupNo).concat(#formalGb).concat(#cateNo)")
+	public Collection<GoodsSearch> getCategoryFliterBrand(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
+		return displayDao.getCategoryFliterBrand(goodsSearch);
+	}
+
+	/**
+	 * 상품카테고리 필터 사이즈 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	@Cacheable(value = "cate", key = "'categoryFilterSize-'.concat(#brandGroupNo).concat(#formalGb).concat(#cateNo)")
+	public Collection<GoodsSearch> getCategoryFliterSize(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
+		return displayDao.getCategoryFliterSize(goodsSearch);
+	}
+
+	/**
+	 * 상품카테고리 필터 가격 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	@Cacheable(value = "cate", key = "'categoryFilterPrice-'.concat(#brandGroupNo).concat(#formalGb).concat(#cateNo)")
+	public Collection<GoodsSearch> getCategoryFliterPrice(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
+		return displayDao.getCategoryFliterPrice(goodsSearch);
+	}
+
+	/**
+	 * 상품카테고리 필터 연령대 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	@Cacheable(value = "cate", key = "'categoryFilterAge-'.concat(#brandGroupNo).concat(#formalGb).concat(#cateNo)")
+	public Collection<GoodsSearch> getCategoryFliterAge(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
+		return displayDao.getCategoryFliterAge(goodsSearch);
+	}
+
+	/**
+	 * 상품카테고리 필터 시즌 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	@Cacheable(value = "cate", key = "'categoryFilterSeason-'.concat(#brandGroupNo).concat(#formalGb).concat(#cateNo)")
+	public Collection<GoodsSearch> getCategoryFliterSeason(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
+		return displayDao.getCategoryFliterSeason(goodsSearch);
+	}
+
+	/**
+	 * 상품카테고리 필터 컬러 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	@Cacheable(value = "cate", key = "'categoryFilterColor-'.concat(#brandGroupNo).concat(#formalGb).concat(#cateNo)")
+	public Collection<GoodsSearch> getCategoryFliterColor(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
+		return displayDao.getCategoryFliterColor(goodsSearch);
+	}
+
+	/**
+	 * 상품카테고리 필터 혜택 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 5
+	 */
+	@Cacheable(value = "cate", key = "'categoryFilterBenefit-'.concat(#brandGroupNo).concat(#formalGb).concat(#cateNo)")
+	public Collection<GoodsSearch> getCategoryFliterBenefit(GoodsSearch goodsSearch, String brandGroupNo, String formalGb, Integer cateNo){
+		return displayDao.getCategoryFliterBenefit(goodsSearch);
+	}
 }

+ 25 - 0
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -13,6 +13,7 @@ import com.style24.front.biz.dao.TsfCommonDao;
 import com.style24.front.biz.dao.TsfPlanningDao;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Poll;
 import com.style24.persistence.domain.Review;
@@ -431,6 +432,30 @@ public class TsfPlanningService {
 		return planningDao.getCustAnswerPartiCount(poll);
 	}
 
+	/**
+	 * 총알배송 조회할 기본 주소
+	 *
+	 * @param CustDeliveryAddr
+	 * @return CustDeliveryAddr
+	 * @author sowon
+	 * @date 2021. 4. 5
+	 */
+	public CustDeliveryAddr getCustAddrInfo(CustDeliveryAddr addr) {
+		return planningDao.getCustAddrInfo(addr);
+	}
+	
+	/**
+	 * 총알배송 가능여부
+	 *
+	 * @param CustDeliveryAddr
+	 * @return CustDeliveryAddr
+	 * @author sowon
+	 * @date 2021. 4. 5
+	 */
+	public CustDeliveryAddr getCustAddrShotConfirm(String recipZipcode) {
+		return planningDao.getCustAddrShotConfirm(recipZipcode);
+	}
+	
 
 
 }

+ 46 - 3
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -37,6 +37,7 @@ import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Popup;
 import com.style24.persistence.domain.Social;
+import com.style24.persistence.domain.GoodsSearch;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -417,13 +418,55 @@ public class TsfDisplayController extends TsfBaseController {
 
 		String siteCd = TscConstants.Site.STYLE24.value();
 		String cateGb = paramMap.get("cateGb");
-		String formalGb = paramMap.get("formalGb");
-		String brandCd = paramMap.get("brandCd");
+		String formalGb = "G009_10";	//paramMap.get("formalGb");
+		String brandGroupNo = "0";
+		if(paramMap.get("brandGroupNo") != null && !paramMap.get("brandGroupNo").equals("")){
+			brandGroupNo = paramMap.get("brandGroupNo");
+		}
+
+		GoodsSearch goodsSearch = new GoodsSearch();
+		Integer cateNo = 0;
+		if(paramMap.get("cate4No") != null && !paramMap.get("cate4No").equals("")){
+			goodsSearch.setCate4No(Integer.parseInt(paramMap.get("cate4No")));
+			cateNo = Integer.parseInt(paramMap.get("cate4No"));
+			mav.addObject("cateNo",cateNo);
+		} else if(paramMap.get("cate3No") != null && !paramMap.get("cate3No").equals("")){
+			goodsSearch.setCate3No(Integer.parseInt(paramMap.get("cate3No")));
+			cateNo = Integer.parseInt(paramMap.get("cate3No"));
+			mav.addObject("cateNo",cateNo);
+		} else if(paramMap.get("cate2No") != null && !paramMap.get("cate2No").equals("")) {
+			goodsSearch.setCate2No(Integer.parseInt(paramMap.get("cate2No")));
+			cateNo = Integer.parseInt(paramMap.get("cate2No"));
+			mav.addObject("cateNo",cateNo);
+		} else if(paramMap.get("cate1No") != null && !paramMap.get("cate1No").equals("")){
+			goodsSearch.setCate1No(Integer.parseInt(paramMap.get("cate1No")));
+			cateNo = Integer.parseInt(paramMap.get("cate1No"));
+			mav.addObject("cateNo",cateNo);
+		}
 
+		goodsSearch.setCateNo(cateNo);
+		goodsSearch.setSiteCd(siteCd);
+		goodsSearch.setCateGb(cateGb);
+		goodsSearch.setFormalGb(formalGb);
+		goodsSearch.setBrandGroupNo(Integer.parseInt(brandGroupNo));
+		goodsSearch.setCateType("G031_10");
+		goodsSearch.setFrontGb(TsfSession.getFrontGb());
+		goodsSearch.setCustGb(TsfSession.getCustGb());
+
+		mav.addObject("filterBrandList", displayService.getCategoryFliterBrand(goodsSearch, brandGroupNo, formalGb, cateNo));
+		mav.addObject("filterSizeList", displayService.getCategoryFliterSize(goodsSearch, brandGroupNo, formalGb, cateNo));
+		mav.addObject("filterPriceList", displayService.getCategoryFliterPrice(goodsSearch, brandGroupNo, formalGb, cateNo));
+		//mav.addObject("filterAgeList", displayService.getCategoryFliterAge(goodsSearch, brandGroupNo, formalGb, cateNo));
+		//mav.addObject("filterSeasonList", displayService.getCategoryFliterSeason(goodsSearch, brandGroupNo, formalGb, cateNo));
+		mav.addObject("filterAgeList", null);
+		mav.addObject("filterSeasonList", null);
+		mav.addObject("filterColorList", displayService.getCategoryFliterColor(goodsSearch, brandGroupNo, formalGb, cateNo));
+		mav.addObject("filterBenefitList", displayService.getCategoryFliterBenefit(goodsSearch, brandGroupNo, formalGb, cateNo));
+		
 		mav.addObject("siteCd",siteCd);
 		mav.addObject("cateGb",cateGb);
 		mav.addObject("formalGb",formalGb);
-		mav.addObject("brandCd",brandCd);
+		mav.addObject("brandGroupNo",brandGroupNo);
 		mav.addObject("cate1No",paramMap.get("cate1No"));
 		mav.addObject("cate2No",paramMap.get("cate2No"));
 		mav.addObject("cate3No",paramMap.get("cate3No"));

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

@@ -4,11 +4,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.style24.core.biz.service.TscKcpService;
-import com.style24.persistence.domain.CustDeliveryAddr;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -27,6 +22,7 @@ import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.biz.service.TscKakaoPayService;
+import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.biz.service.TscOrderChangeService;
 import com.style24.core.biz.service.TscOrderRefundService;
 import com.style24.core.biz.service.TscOrderService;
@@ -50,6 +46,7 @@ import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.Cart;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.CustAccount;
+import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Goods;
@@ -747,6 +744,33 @@ public class TsfMypageController extends TsfBaseController {
 		return cartService.getAddCartInfoForMypage(cart);
 	}
 
+	/**
+	 * 환불계좌 등록 팝업
+	 * 
+	 * @param OrderChange
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 04. 05
+	 */
+	@ResponseBody
+	@RequestMapping(value = "/refund/account/register/popup/form")
+	public ModelAndView registerRefundAccountPopupForm(@RequestBody OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		// 계좌인증용 은행코드 조회
+		mav.addObject("bankList", rendererService.getAvailCommonCodeList("G942"));
+
+		// 계좌주명 설정
+		mav.addObject("accountNm", orderChange.getAccountNm());
+		
+		// 주문번호 설정
+		mav.addObject("ordNo", orderChange.getOrdNo());
+
+		mav.setViewName(super.getDeviceViewName("popup/RefundAccountAddPopupForm"));
+
+		return mav;
+	}
+
 	/**
 	 * 마이페이지 STYLE24 포인트화면
 	 *
@@ -848,6 +872,9 @@ public class TsfMypageController extends TsfBaseController {
 		try {
 			commonService.updateDeliverAddr(order);
 			commonService.updateDeliverAddrDelvMemo(order);
+
+			// TODO
+			// WMS IF TABLE 내 정보 업데이트 처리 필요
 		} catch (Exception e) {
 			result.set("status", GagaResponseStatus.FAIL.getCode());
 			result.set("message", "배송지 수정에 실패했습니다.");
@@ -1398,7 +1425,7 @@ public class TsfMypageController extends TsfBaseController {
 		custAccount.setIpAddress(TsfSession.getIpAddress());
 		boolean isValid = false;
 		GagaMap result = kcpService.checkAccount(custAccount);
-		if("0000".equals(result.get("recCd"))) {
+		if("0000".equals(result.get("resCd"))) {
 			isValid = true;
 		}
 		result.set("isValid", isValid);
@@ -1573,4 +1600,4 @@ public class TsfMypageController extends TsfBaseController {
 
 
 	/*신주승 끝*/
-}
+}

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

@@ -84,9 +84,9 @@ public class TsfOrderController extends TsfBaseController {
 		
 		// TODO 임시 장바구니
 		// 2. 장바구니시퀀스 배열 등록 (장바구니 상품 정보 조회)
-		//int[] arr = {11,77,8};
-		//order.setCartSqArr(arr);		// 장바구니시퀀스
-		//order.setShotDelvUseYn("Y");	// 장바구니총알배송사용여부
+		int[] arr = {11,77,8};
+		order.setCartSqArr(arr);		// 장바구니시퀀스
+		order.setShotDelvUseYn("Y");	// 장바구니총알배송사용여부
 		
 		// 1.1 카트시퀀스가 정보가 없을때 처리 장바구니로 이동 
 		if (order.getCartSqArr() == null) {

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

@@ -24,6 +24,7 @@ import com.style24.front.biz.service.TsfPlanningService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Poll;
@@ -211,7 +212,7 @@ public class TsfPlanningController extends TsfBaseController {
 		mav.addObject("viewDt", plan.getViewDt());
 		mav.addObject("viewPage", "G037_40");
 		mav.addObject("popupPlanSq", plan.getPlanSq());
-
+		
 		mav.setViewName(super.getDeviceViewName("planning/PlanningDetailForm"));
 		return mav;
 	}
@@ -405,11 +406,39 @@ public class TsfPlanningController extends TsfBaseController {
 	@GetMapping("/shot/delivery/guide/form")
 	public ModelAndView planningShotDeliveryForm(Plan plan) throws Exception {
 		ModelAndView mav = new ModelAndView();
+		CustDeliveryAddr addr = new CustDeliveryAddr();
+		int custNo = TsfSession.getInfo().getCustNo();
+		// 고객정보 조회
+		Customer customer = new Customer();
+		customer.setSiteCd(TscConstants.Site.STYLE24.value());
+		customer.setCustNo(custNo);
+		customer.setCustStat(TscConstants.CustStat.ACTIVE.value());
+		customer = coreCustomerService.getCustomerInfo(customer);
+
+		mav.addObject("customerInfo", customer);
+		
+		addr.setCustNo(custNo);
 		plan.setSiteCd(TscConstants.Site.STYLE24.value());
 		plan.setFrontGb(TsfSession.getFrontGb());
+		mav.addObject("custAddr", planningService.getCustAddrInfo(addr));
 		mav.addObject("shotHtml", planningService.getShotDeliveryHtml(plan));
 		mav.setViewName(super.getDeviceViewName("planning/PlanningShotGuideForm"));
 		return mav;
 	}
 
+	
+	/**
+	 * 총알배송 메인 화면
+	 * 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 30
+	 */
+	@GetMapping("shot/delivery/confirm")
+	@ResponseBody
+	public GagaMap planningShotDeliveryConfirm(@RequestParam(value="recipZipcode") String recipZipcode) throws Exception {
+		GagaMap result = new GagaMap();
+		result.set("shotYn", planningService.getCustAddrShotConfirm(recipZipcode));
+		return result;
+	}
 }

+ 29 - 0
src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -25,4 +25,33 @@ public class GoodsSearch extends TscBaseDomain {
 
     private int maxRownum;			            // 조회건수
 
+    private Integer cate1No;
+    private Integer cate2No;
+    private Integer cate3No;
+    private Integer cate4No;
+    private Integer cate5No;
+    private String siteCd;
+    private String cateGb;
+    private String formalGb;
+    private Integer brandGroupNo;
+    private String brandGroupNm;
+    private String sizeGb;
+    private String optCd2;
+    private String agesCd;
+    private String agesNm;
+    private String seasonCd;
+    private String seasonNm;
+    private String colorGrpCd;
+    private String colorChip;
+    private String benefitCd;
+    private String benefitNm;
+
+    private Integer price1;
+    private Integer price2;
+    private Integer price3;
+    private Integer price4;
+    private Integer price5;
+    private Integer price6;
+
+
 }

+ 428 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -587,4 +587,432 @@
 				 ) B
 				 )
 	</select>
+
+	<!-- 상품 카테고리 필터 브랜드 -->
+	<select id="getCategoryFliterBrand" parameterType="GoodsSearch" resultType="GoodsSearch" timeout="300">
+		/* TsfDisplay.getCategoryFliterBrand */
+		SELECT BG.BRAND_GROUP_NO
+		     , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		            BG.BRAND_GROUP_ENM
+		       ELSE
+		            BG.BRAND_GROUP_KNM
+		       END               AS BRAND_GROUP_NM /*브랜드그룹명*/
+		FROM   TB_BRAND_GROUP BG
+		WHERE  BRAND_GROUP_NO IN (SELECT B.BRAND_GROUP_NO
+		                          FROM   TB_CATE_4SRCH C4
+		                               , TB_CATE_GOODS CG
+		                               , TB_GOODS G
+		                               , TB_GOODS_STOCK GS
+		                               , TB_BRAND B
+		                               , TB_SITE_BRAND SB
+		                          WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		                          <choose>
+			                        <when test="brandGroupNo != null and brandGroupNo != ''">
+				                  AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+									</when>
+			                        <otherwise>
+				                  AND    CG.BRAND_GROUP_NO = 0
+			                        </otherwise>
+		                          </choose>
+		                          AND    CG.GOODS_CD = G.GOODS_CD
+		                          AND    G.GOODS_CD = GS.GOODS_CD
+		                          AND    G.BRAND_CD = B.BRAND_CD
+		                          AND    B.BRAND_CD = SB.BRAND_CD
+		                          AND    C4.SITE_CD = #{siteCd}
+		                          AND    C4.CATE_GB = #{cateGb}
+		                          AND    C4.CATE_TYPE = 'G031_10'
+		                          AND    C4.CATE1_NO = #{cate1No}
+		                          <if test="cate2No != null and cate2No != ''">
+		                          	AND    C4.CATE2_NO = #{cate2No}
+		                          </if>
+		                          <if test="cate3No != null and cate3No != ''">
+		                          	AND    C4.CATE3_NO = #{cate3No}
+		                          </if>
+		                          <if test="cate4No != null and cate4No != ''">
+		                          	AND    C4.CATE4_NO = #{cate4No}
+		                          </if>
+		                          <if test="cate5No != null and cate5No != ''">
+		                          	AND    C4.CATE5_NO = #{cate5No}
+		                          </if>
+		                          AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                          AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		                          AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		                          AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		                          AND    SB.SITE_CD = #{siteCd}
+		                          AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+		                          AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		                         )
+		AND  BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
+		ORDER  BY 2
+	</select>
+
+	<!-- 상품 카테고리 필터 사이즈 -->
+	<select id="getCategoryFliterSize" parameterType="GoodsSearch" resultType="GoodsSearch" timeout="300">
+		/* TsfDisplay.getCategoryFliterSize */
+		SELECT DISTINCT
+		       I.SIZE_GB /*사이즈구분(T:상의, B:하의, S:신발)*/
+		       , S.OPT_CD2 /*옵션코드2*/
+		FROM   TB_CATE_4SRCH C4
+		     , TB_CATE_GOODS CG
+		     , TB_GOODS G
+		     , TB_ITEMKIND I
+		     , VW_STOCK S
+		     , TB_BRAND B
+		     , TB_SITE_BRAND SB
+		WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		<choose>
+			<when test="brandGroupNo != null and brandGroupNo != ''">
+				AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+			</when>
+			<otherwise>
+				AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+			</otherwise>
+		</choose>
+		AND    CG.GOODS_CD = G.GOODS_CD
+		AND    G.ITEMKIND_CD = I.ITEMKIND_CD
+		AND    G.GOODS_CD = S.GOODS_CD
+		AND    G.BRAND_CD = B.BRAND_CD
+		AND    B.BRAND_CD = SB.BRAND_CD
+		AND    C4.SITE_CD = #{siteCd}
+		AND    C4.CATE_GB = #{cateGb}
+		AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		AND    C4.CATE1_NO = #{cate1No}
+		<if test="cate2No != null and cate2No != ''">
+			AND    C4.CATE2_NO = #{cate2No}
+		</if>
+		<if test="cate3No != null and cate3No != ''">
+			AND    C4.CATE3_NO = #{cate3No}
+		</if>
+		<if test="cate4No != null and cate4No != ''">
+			AND    C4.CATE4_NO = #{cate4No}
+		</if>
+		<if test="cate5No != null and cate5No != ''">
+			AND    C4.CATE5_NO = #{cate5No}
+		</if>
+		AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		AND    I.SIZE_GB IS NOT NULL
+		AND    S.CURR_STOCK_QTY - S.BASE_STOCK_QTY <![CDATA[>]]> 0 /*재고있는옵션*/
+		AND    S.SOLDOUT_YN = 'N' /*품절이 아닌 옵션*/
+		AND    S.DISP_YN = 'Y' /*노출하는 옵션*/
+		AND    LENGTH(S.OPT_CD2) > 0
+		AND    SB.SITE_CD = #{siteCd}
+		AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+		AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		ORDER  BY CASE WHEN I.SIZE_GB = 'T' THEN 1
+		               WHEN I.SIZE_GB = 'B' THEN 2
+		               WHEN I.SIZE_GB = 'S' THEN 3
+		               ELSE 4
+		               END, S.OPT_CD2
+	</select>
+
+	<!-- 상품 카테고리 필터 사이즈 -->
+	<select id="getCategoryFliterPrice" parameterType="GoodsSearch" resultType="GoodsSearch" timeout="300">
+		/* TsfDisplay.getCategoryFliterPrice */
+		SELECT FLOOR(MIN_CURR_PRICE / 1000) * 1000                   AS PRICE1
+		     , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 1) / 1000) * 1000 AS PRICE2
+		     , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 2) / 1000) * 1000 AS PRICE3
+		     , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 3) / 1000) * 1000 AS PRICE4
+		     , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 4) / 1000) * 1000 AS PRICE5
+		     , FLOOR(MAX_CURR_PRICE / 1000) * 1000                   AS PRICE6
+		FROM   (
+		        SELECT MIN(CURR_PRICE) AS MIN_CURR_PRICE                    /*최소현재판매가*/
+		        , MAX(CURR_PRICE) AS MAX_CURR_PRICE                    /*최대현재판매가*/
+		        , (MAX(CURR_PRICE) - MIN(CURR_PRICE)) / 5 AS SLICE_VAL /*분할값*/
+		        FROM   (
+		                SELECT FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb}) AS CURR_PRICE /*현재판매가*/
+		                FROM   TB_CATE_4SRCH C4
+		                     , TB_CATE_GOODS CG
+		                     , TB_GOODS G
+		                     , TB_GOODS_STOCK GS
+		                     , TB_BRAND B
+		                     , TB_SITE_BRAND SB
+		                WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		                <choose>
+		                	<when test="brandGroupNo != null and brandGroupNo != ''">
+		                		AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+		                	</when>
+		                	<otherwise>
+		                		AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		                	</otherwise>
+		                </choose>
+		                AND    CG.GOODS_CD = G.GOODS_CD
+		                AND    CG.GOODS_CD = GS.GOODS_CD
+		                AND    G.BRAND_CD = B.BRAND_CD
+		                AND    B.BRAND_CD = SB.BRAND_CD
+		                AND    C4.SITE_CD = #{siteCd}
+		                AND    C4.CATE_GB = #{cateGb}
+		                AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		                AND    C4.CATE1_NO = #{cate1No}
+		                <if test="cate2No != null and cate2No != ''">
+		                	AND    C4.CATE2_NO = #{cate2No}
+		                </if>
+		                <if test="cate3No != null and cate3No != ''">
+		                	AND    C4.CATE3_NO = #{cate3No}
+		                </if>
+		                <if test="cate4No != null and cate4No != ''">
+		                	AND    C4.CATE4_NO = #{cate4No}
+		                </if>
+		                <if test="cate5No != null and cate5No != ''">
+		                	AND    C4.CATE5_NO = #{cate5No}
+		                </if>
+		                AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		                AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		                AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		                AND    SB.SITE_CD = #{siteCd}
+		                AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+		                AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		        ) Z
+		) Z
+	</select>
+
+	<!-- 상품 카테고리 필터 연령대 -->
+	<select id="getCategoryFliterAge" parameterType="GoodsSearch" resultType="GoodsSearch" timeout="300">
+		/* TsfDisplay.getCategoryFliterAge */
+		SELECT CD    AS AGES_CD /*연령대코드*/
+		     , CD_NM AS AGES_NM /*연령대명*/
+		FROM   TB_COMMON_CODE
+		WHERE  CD_GB = 'G023'
+		AND    CD IN (SELECT G.AGE_GRP_CD
+		              FROM   TB_CATE_4SRCH C4
+		                   , TB_CATE_GOODS CG
+		                   , TB_GOODS G
+		                   , TB_GOODS_STOCK GS
+		                   , TB_BRAND B
+		                   , TB_SITE_BRAND SB
+		              WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		              <choose>
+		              	<when test="brandGroupNo != null and brandGroupNo != ''">
+		              		AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+		              	</when>
+		              	<otherwise>
+		              		AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		              	</otherwise>
+		              </choose>
+		              AND    CG.GOODS_CD = G.GOODS_CD
+		              AND    CG.GOODS_CD = GS.GOODS_CD
+		              AND    G.BRAND_CD = B.BRAND_CD
+		              AND    B.BRAND_CD = SB.BRAND_CD
+		              AND    C4.SITE_CD = #{siteCd}
+		              AND    C4.CATE_GB = #{cateGb}
+		              AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		              AND    C4.CATE1_NO = #{cate1No}
+		              <if test="cate2No != null and cate2No != ''">
+		              	AND    C4.CATE2_NO = #{cate2No}
+		              </if>
+		              <if test="cate3No != null and cate3No != ''">
+		              	AND    C4.CATE3_NO = #{cate3No}
+		              </if>
+		              <if test="cate4No != null and cate4No != ''">
+		              	AND    C4.CATE4_NO = #{cate4No}
+		              </if>
+		              <if test="cate5No != null and cate5No != ''">
+		              	AND    C4.CATE5_NO = #{cate5No}
+		              </if>
+		              AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		              AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		              AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		              AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		              AND    SB.SITE_CD = #{siteCd}
+		              AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+		              AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		            )
+		AND    USE_YN = 'Y'
+		ORDER  BY DISP_ORD
+	</select>
+
+	<!-- 상품 카테고리 필터 시즌 -->
+	<select id="getCategoryFliterSeason" parameterType="GoodsSearch" resultType="GoodsSearch" timeout="300">
+	/* TsfDisplay.getCategoryFliterSeason */
+		SELECT CD    AS SEASON_CD /*시즌코드*/
+		     , CD_NM AS SEASON_NM /*시즌명*/
+		FROM   TB_COMMON_CODE
+		WHERE  CD_GB = 'G006'
+		AND    CD IN (SELECT G.SEASON_CD
+		              FROM   TB_CATE_4SRCH C4
+		                   , TB_CATE_GOODS CG
+		                   , TB_GOODS G
+		                   , TB_GOODS_STOCK GS
+		                   , TB_BRAND B
+		                   , TB_SITE_BRAND SB
+		              WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		              <choose>
+		              	<when test="brandGroupNo != null and brandGroupNo != ''">
+		              		AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+		              	</when>
+		              	<otherwise>
+		              		AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		              	</otherwise>
+		              </choose>
+		              AND    CG.GOODS_CD = G.GOODS_CD
+		              AND    CG.GOODS_CD = GS.GOODS_CD
+		              AND    G.BRAND_CD = B.BRAND_CD
+		              AND    B.BRAND_CD = SB.BRAND_CD
+		              AND    C4.SITE_CD = #{siteCd}
+		              AND    C4.CATE_GB = #{cateGb}
+		              AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		              AND    C4.CATE1_NO = #{cate1No}
+		              <if test="cate2No != null and cate2No != ''">
+		              	AND    C4.CATE2_NO = #{cate2No}
+		              </if>
+		              <if test="cate3No != null and cate3No != ''">
+		              	AND    C4.CATE3_NO = #{cate3No}
+		              </if>
+		              <if test="cate4No != null and cate4No != ''">
+		              	AND    C4.CATE4_NO = #{cate4No}
+		              </if>
+		              <if test="cate5No != null and cate5No != ''">
+		              	AND    C4.CATE5_NO = #{cate5No}
+		              </if>
+		              AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		              AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		              AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		              AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		              AND    SB.SITE_CD = #{siteCd}
+		              AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+		              AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		     )
+		AND    USE_YN = 'Y'
+		ORDER  BY DISP_ORD
+	</select>
+
+	<!-- 상품 카테고리 필터 컬러 -->
+	<select id="getCategoryFliterColor" parameterType="GoodsSearch" resultType="GoodsSearch" timeout="300">
+		/* TsfDisplay.getCategoryFliterColor */
+		SELECT C.COLOR_GRP_CD               /*컬러그룹코드*/
+		     , CC.CD_DESC     AS COLOR_CHIP /*컬러칩*/
+		FROM   TB_COLOR C
+		     , TB_COMMON_CODE CC
+		WHERE  C.COLOR_GRP_CD = CC.CD
+		AND    CC.CD_GB = 'G072'
+		AND    C.COLOR_CD IN (SELECT O.OPT_CD1
+		                      FROM   TB_CATE_4SRCH C4
+		                           , TB_CATE_GOODS CG
+		                           , TB_GOODS G
+		                           , TB_GOODS_STOCK GS
+		                           , TB_BRAND B
+		                           , TB_SITE_BRAND SB
+		                           , TB_OPTION O
+		                      WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		                      <choose>
+		                      	<when test="brandGroupNo != null and brandGroupNo != ''">
+		                      		AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+		                      	</when>
+		                      	<otherwise>
+		                      		AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		                      	</otherwise>
+		                      </choose>
+		                      AND    CG.GOODS_CD = G.GOODS_CD
+		                      AND    CG.GOODS_CD = GS.GOODS_CD
+		                      AND    G.BRAND_CD = B.BRAND_CD
+		                      AND    B.BRAND_CD = SB.BRAND_CD
+		                      AND    G.GOODS_CD = O.GOODS_CD
+		                      AND    C4.SITE_CD = #{siteCd}
+		                      AND    C4.CATE_GB = #{cateGb}
+		                      AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		                      AND    C4.CATE1_NO = #{cate1No}
+		                      <if test="cate2No != null and cate2No != ''">
+		                      	AND    C4.CATE2_NO = #{cate2No}
+		                      </if>
+		                      <if test="cate3No != null and cate3No != ''">
+		                      	AND    C4.CATE3_NO = #{cate3No}
+		                      </if>
+		                      <if test="cate4No != null and cate4No != ''">
+		                      	AND    C4.CATE4_NO = #{cate4No}
+		                      </if>
+		                      <if test="cate5No != null and cate5No != ''">
+		                      	AND    C4.CATE5_NO = #{cate5No}
+		                      </if>
+		                      AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                      AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		                      AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		                      AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		                      AND    SB.SITE_CD = #{siteCd}
+		                      AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+		                      AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		                      AND    O.SOLDOUT_YN = 'N' /*품절이 아닌 옵션*/
+		                      AND    O.DISP_YN = 'Y' /*노출하는 옵션*/
+		            )
+		AND    CC.USE_YN = 'Y'
+		GROUP BY C.COLOR_GRP_CD , CC.CD_DESC
+		ORDER  BY CC.DISP_ORD
+	</select>
+
+	<!-- 상품 카테고리 필터 혜택 -->
+	<select id="getCategoryFliterBenefit" parameterType="GoodsSearch" resultType="GoodsSearch" timeout="300">
+		/* TsfDisplay.getCategoryFliterBenefit */
+		WITH TAB_BENEFIT AS (
+			            SELECT GB.CPN_YN
+			            	 , GB.FREEGIFT_YN
+			            	 , G.FORMAL_GB
+			            	 , G.MIN_ORD_AMT
+			            	 , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb}) AS CURR_PRICE /*현재판매가*/
+			            	 , DF.REAL_DELV_AMT
+			            FROM	TB_CATE_4SRCH C4
+						JOIN	TB_CATE_GOODS CG ON C4.LEAF_CATE_NO = CG.CATE_NO
+		                <choose>
+		                	<when test="brandGroupNo != null and brandGroupNo != ''">
+		                		AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+		                	</when>
+		                	<otherwise>
+		                		AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		                	</otherwise>
+		                </choose>
+						JOIN	TB_GOODS G ON CG.GOODS_CD = G.GOODS_CD
+						JOIN	TB_GOODS_STOCK GS ON CG.GOODS_CD = GS.GOODS_CD
+						LEFT OUTER JOIN	TB_GOODS_BENEFIT GB ON G.GOODS_CD = GB.GOODS_CD
+						JOIN	TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+						JOIN	TB_SITE_BRAND SB ON B.BRAND_CD = SB.BRAND_CD
+						JOIN	TB_DELIVERY_FEE DF ON G.DELV_FEE_CD = DF.DELV_FEE_CD
+			           WHERE	1=1
+		               AND    C4.SITE_CD = #{siteCd}
+		               AND    C4.CATE_GB = #{cateGb}
+		               AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		               AND    C4.CATE1_NO = #{cate1No}
+		               <if test="cate2No != null and cate2No != ''">
+		               	AND    C4.CATE2_NO = #{cate2No}
+		               </if>
+		               <if test="cate3No != null and cate3No != ''">
+		               	AND    C4.CATE3_NO = #{cate3No}
+		               </if>
+		               <if test="cate4No != null and cate4No != ''">
+		               	AND    C4.CATE4_NO = #{cate4No}
+		               </if>
+		               <if test="cate5No != null and cate5No != ''">
+		               	AND    C4.CATE5_NO = #{cate5No}
+		               </if>
+		               AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		               AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		               AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		               AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		               AND    SB.SITE_CD = #{siteCd}
+		               AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+		               AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		)
+		   SELECT	Z.BENEFIT_CD , Z.BENEFIT_NM
+		    FROM	(
+					SELECT '10'       AS BENEFIT_CD
+						 , '쿠폰할인' AS BENEFIT_NM
+					FROM   TAB_BENEFIT
+					WHERE  CPN_YN = 'Y'
+					UNION ALL
+					SELECT '20'       AS BENEFIT_CD
+						 , '무료배송' AS BENEFIT_NM
+					FROM   TAB_BENEFIT
+					WHERE  REAL_DELV_AMT = 0 -- MIN_ORD_AMT >= CURR_PRICE
+					UNION ALL
+					SELECT '30'       AS BENEFIT_CD
+						 , '사은품' AS BENEFIT_NM
+					FROM   TAB_BENEFIT
+					WHERE  FREEGIFT_YN = 'Y'
+					UNION ALL
+					SELECT '40'   AS BENEFIT_CD
+						 , '신상' AS BENEFIT_NM
+					FROM   TAB_BENEFIT
+					WHERE  FORMAL_GB = 'G009_10'
+				) Z
+		GROUP BY Z.BENEFIT_CD , Z.BENEFIT_NM
+	</select>
 </mapper>

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

@@ -118,10 +118,10 @@
 					 , TIMESTAMPDIFF(DAY, NOW(), OD.DELV_EDDT + INTERVAL 2 WEEK)		AS PURCHASE_CONFIRM_DAY
 					 , DATE_FORMAT(GRS.DELV_RES_DT, '%Y.%m.%d') AS DELV_RES_DT
 					 , IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_REQ_CHG_QTY
-					 , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_CAN_CHG_QTY
+					 , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)    AS ORD_CAN_CHG_QTY
 					 , CA.BANK_CD
 					 , CA.ACCOUNT_NO
-					 , CA.ACCOUNT_NM
+					 , IFNULL(CA.ACCOUNT_NM, O.ORD_NM)                                  AS ACCOUNT_NM
 					 , DA.DELV_ADDR_SQ
 				  FROM TB_ORDER O
 				 INNER JOIN TB_ORDER_DETAIL OD

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

@@ -101,7 +101,7 @@
 		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IF(OCD.ORD_REQ_CHG_QTY IS NULL, 0, OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY) AS ORD_CAN_CHG_QTY
 		             , CA.BANK_CD
 		             , CA.ACCOUNT_NO
-		             , CA.ACCOUNT_NM
+		             , IFNULL(CA.ACCOUNT_NM, O.ORD_NM)                                  AS ACCOUNT_NM
 		          FROM TB_ORDER O
 		         INNER JOIN TB_ORDER_DETAIL OD
 		            ON O.ORD_NO = OD.ORD_NO
@@ -191,6 +191,8 @@
 		     , Z.BANK_CD
 		     , Z.ACCOUNT_NO
 		     , Z.ACCOUNT_NM
+		     , Z.RTN_DELV_FEE
+		     , Z.DELV_FEE
 		  FROM (SELECT O.ORD_NO
 		             , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d')                                      AS ORD_DT
 		             , OD.ORD_DTL_NO
@@ -235,7 +237,9 @@
 		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IF(OCD.ORD_REQ_CHG_QTY IS NULL, 0, OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY) AS ORD_CAN_CHG_QTY
 		             , CA.BANK_CD
 		             , CA.ACCOUNT_NO
-		             , CA.ACCOUNT_NM
+		             , IFNULL(CA.ACCOUNT_NM, O.ORD_NM)                                        AS ACCOUNT_NM
+		             , DFP.RTN_DELV_FEE
+		             , DFP.DELV_FEE
 		          FROM TB_ORDER O
 		         INNER JOIN TB_ORDER_DETAIL OD
 		            ON O.ORD_NO = OD.ORD_NO
@@ -248,6 +252,10 @@
 		            ON OD.GOODS_CD = G.GOODS_CD
 		         INNER JOIN TB_BRAND B
 		            ON B.BRAND_CD = G.BRAND_CD
+		          LEFT OUTER JOIN TB_DELV_FEE_POLICY DFP
+		            ON OD.DELV_FEE_CD = DFP.DELV_FEE_CD
+		           AND OD.SUPPLY_COMP_CD = DFP.SUPPLY_COMP_CD
+		           AND DFP.USE_YN = 'Y'
 		          LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
 		                                , SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
 		                             FROM TB_ORDER_CHANGE_DETAIL OCD
@@ -283,7 +291,7 @@
 		        , Z.ORD_DTL_STAT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.ORD_AMT, Z.REAL_ORD_AMT, Z.SAVE_PNT_AMT, Z.CNCL_RTN_AMT, Z.PNT_DC_AMT
 		        , Z.GFCD_USE_AMT, Z.SHIP_COMP_CD, Z.GIFT_PACK_YN, Z.SHIP_COMP_NM, Z.INVOICE_NO, Z.SUPPLY_COMP_CD, Z.DELV_FEE_CD
 		        , Z.SHOT_DELV_YN, Z.CHANGEABLE_YN, Z.SELF_GOODS_YN, Z.BRAND_NM, Z.ORD_REQ_CHG_QTY, Z.ORD_CAN_CHG_QTY, Z.BANK_CD
-		        , Z.ACCOUNT_NO, Z.ACCOUNT_NM
+		        , Z.ACCOUNT_NO, Z.ACCOUNT_NM, Z.RTN_DELV_FEE, Z.DELV_FEE
 		ORDER BY Z.ORD_DTL_NO
 	</select>
 	
@@ -296,7 +304,7 @@
 		     , G1.GOODS_NM
 		     , ODI.ORD_DTL_ITEM_SQ
 		     , ODI.ITEM_CD
-		     , G2.GOODS_NM AS ITEM_NM
+		     , G2.GOODS_NM                                        AS ITEM_NM
 		     , ODI.ITEM_QTY
 		     , OD.ORD_QTY
 		     , OD.CNCL_RTN_QTY
@@ -316,14 +324,14 @@
 		     , ODI.SAVE_PNT_AMT
 		     , ODI.GFCD_USE_AMT
 		     , ODI.CNCL_RTN_AMT
-		     , FN_GET_CODE_NM('G056', OD.GOODS_TYPE) AS GOODS_TYPE_NM
+		     , FN_GET_CODE_NM('G056', OD.GOODS_TYPE)              AS GOODS_TYPE_NM
 		     , ODI.ORD_DTL_STAT
-		     , FN_GET_CODE_NM('G013', ODI.ORD_DTL_STAT) AS ORD_DTL_STAT_NM
+		     , FN_GET_CODE_NM('G013', ODI.ORD_DTL_STAT)           AS ORD_DTL_STAT_NM
 		     , DF.DELV_FEE
 		     , DFP.MIN_ORD_AMT
-		     , DFP.DELV_FEE AS ORG_DELV_FEE
+		     , DFP.DELV_FEE                                       AS ORG_DELV_FEE
 		     , DFP.RTN_DELV_FEE
-		     , DFP.DELV_FEE + DFP.RTN_DELV_FEE AS EXC_DELV_FEE
+		     , DFP.DELV_FEE + DFP.RTN_DELV_FEE                    AS EXC_DELV_FEE
 		     , DFP.SUPPLY_COMP_CD
 		     , IF(G1.SELF_GOODS_YN = 'Y', 'WMS', DFP.DELV_FEE_CD) AS DELV_FEE_CD
 		     , P.PAY_STAT

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

@@ -916,7 +916,7 @@
 		               INNER JOIN TB_PLAN_FSRC PF ON P.PLAN_SQ = PF.PLAN_SQ 
 		                                              AND P.PLAN_SQ = PF.PLAN_SQ
 		WHERE 1=1
-		  AND P.PLAN_SQ = 13
+		  AND P.PLAN_GB = 'S'
 		  AND P.DEL_YN = 'N'
 		        <if test="frontGb != null and frontGb != ''">
 		            <if test='frontGb == "P"'> <!-- PC웹 -->
@@ -1050,4 +1050,54 @@
 		WHERE B.POLL_SQ = #{pollSq}
 		GROUP BY b.POLL_QSQ, B.POLL_SQ			
 	</select>
+	
+	<!-- 총알배송 배송지 목록  -->
+	<select id="getCustAddrInfo" parameterType="CustDeliveryAddr" resultType="CustDeliveryAddr">
+		/* TsfPlanning.getCustAddrInfo */
+		SELECT C.CUST_ID
+		     , C.CUST_NO
+		     , CDA.CUST_DELV_ADDR_SQ
+		     , CDA.CUST_NO
+		     , CDA.DELV_ADDR_NM
+		     , CDA.DEFAULT_YN
+		     , CDA.RECIP_NM
+		     , CDA.RECIP_PHNNO
+		     , CDA.RECIP_TELNO
+		     , CDA.RECIP_ZIPCODE
+		     , CDA.RECIP_BASE_ADDR
+		     , CDA.RECIP_DTL_ADDR
+		     , CDA.DEL_YN
+		     , CDA.DELV_MEMO
+		     , CASE WHEN DDZ.ZIP_NO IS NULL
+		            THEN 'N'
+		            ELSE 'Y'
+		       END                                     AS SHOT_DELV_USE_YN
+		     , CDA.REG_NO
+		     , DATE_FORMAT(CDA.REG_DT, '%Y%m%d%H%i%S') AS REG_DT
+		     , FN_GET_USER_NM(CDA.UPD_NO) AS REG_NM
+		     , DATE_FORMAT(CDA.UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		FROM   TB_CUSTOMER C
+		INNER JOIN
+		       TB_CUST_DELIVERY_ADDR CDA
+		ON     C.CUST_NO = CDA.CUST_NO
+		AND    CDA.DEL_YN = 'N'
+		LEFT OUTER JOIN
+		       TB_DAILY_DELIVERY_ZONE DDZ
+		ON     DDZ.ZIP_NO = CDA.RECIP_ZIPCODE
+		AND    DDZ.ISUSE = 'Y'
+		WHERE  C.CUST_NO = #{custNo}
+		ORDER BY DEFAULT_YN DESC, REG_DT DESC LIMIT 1	
+	</select>
+	
+	<!-- 총알배송 여부 -->
+	<select id="getCustAddrShotConfirm" resultType="CustDeliveryAddr" parameterType="CustDeliveryAddr">
+		/* TsfPlanning.getCustAddrInfo */
+		SELECT CASE WHEN ISUSE IS NULL
+		            THEN 'N'
+		            ELSE 'Y'
+		       END                                     AS SHOT_DELV_USE_YN
+		FROM TB_DAILY_DELIVERY_ZONE 
+		WHERE 1=1 
+		AND ZIP_NO = #{recipZipcode}
+	</select>
 </mapper>

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

@@ -60,7 +60,7 @@
 	<script src="/ux/mo/js/swiper.min.js"></script>
 	<script src="/ux/plugins/jquery.serializeObject.min.js"></script>
 	<script src="/ux/plugins/mcxdialog/mcxdialog_ui.js"></script>
-	
+	<script type="text/javascript" src="https://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js"></script>
 
 	<!-- Global site tag (gtag.js) - Google Analytics -->
 <!-- 	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-168660512-1"></script> -->
@@ -117,4 +117,4 @@
 	</script>
 </head>
 
-</html>
+</html>

+ 25 - 0
src/main/webapp/WEB-INF/views/mob/common/layout/SubLayoutMob.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
+<head th:replace="~{mob/common/fragments/HeadMob :: head}"></head>
+<body>
+	<th:block th:replace="~{mob/common/fragments/VariablesMob :: variables}"></th:block>
+	<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
+	<div class="app">
+		<!-- GNB -->
+		<th:block th:replace="~{mob/common/fragments/GnbSubMob :: gnb}"></th:block>
+		<!--// GNB -->
+	
+		<!-- CONTENT AREA -->
+		<th:block layout:fragment="content"></th:block>
+		<!-- // CONTENT AREA -->
+	
+		<!-- Footer -->
+		<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
+	
+		<script th:inline="javascript">
+		
+		
+		</script>
+	</div>
+</body>
+</html>

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

@@ -0,0 +1,2211 @@
+<!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/DefaultLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : OrderFormWeb.html
+ * @desc    : 주문/결제 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.01   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+
+<link rel="stylesheet" type="text/css" href="/ux/pc/css/swiper.min.css">
+<script type="text/javascript" src="/ux/pc/js/swiper.min.js"></script>
+<script type="text/javascript" src="/ux/pc/js/slick.min.js"></script>
+<script type="text/javascript" src="/ux/pc/js/jquery-ui.js"></script>
+
+<!-- payment.js -->
+<script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
+<script type="text/javascript" src="/biz/payment.js"></script>
+
+<form id="order_info" name="order_info" method="post" action="/order/pay/result/response" ></form>
+
+<!-- 주문고객정보 -->
+<form id="orderForm" name="orderForm">
+<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="orderInfo" id="orderInfo">
+	<tbody>
+		<tr style="height:30px;">
+			<th>custNm</th>
+			<th>email</th>
+			<th>cellPhnno</th>
+			<th>recipNm</th>
+			<th>recipPhnno</th>
+			<th>recipZipcode</th>
+			<th>recipBaseAddr</th>
+			<th>recipDtlAddr</th>
+			<th>delvMemo</th>
+			<th>foreignBuyYn</th>
+			<th>orderMadeYn</th>
+		</tr>
+		<tr style="height:30px;">
+			<td class="custNm"></td>
+			<td class="email"></td>
+			<td class="cellPhnno"></td>
+			<td class="recipNm"></td>
+			<td class="recipPhnno"></td>
+			<td class="recipZipcode"></td>
+			<td class="recipBaseAddr"></td>
+			<td class="recipDtlAddr"></td>
+			<td class="delvMemo"></td>
+			<td class="foreignBuyYn"></td>
+			<td class="orderMadeYn"></td>
+		</tr>
+	</tbody>
+</table>
+
+<!-- 사은품정보 -->
+<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="freegiftInfo">
+	<tr style="height:30px;">
+		<th>freegiftValArr</th>
+		<th>freegiftUsePointArr</th>
+		<th>freegiftSqArr</th>
+		<th>freegiftGoodsArr</th>
+	</tr>
+	<tr style="height:30px;">
+		<td class="freegiftValArr"></td>
+		<td class="freegiftUsePointArr"></td>
+		<td class="freegiftSqArr"></td>
+		<td class="freegiftGoodsArr"></td>
+	</tr>
+</table>
+
+<!-- 주문상세금액 -->
+<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none;" name="orderDetailInfo" id="orderDetailInfo">
+	<tr style="height:30px;">
+		<th>cartSq</th>
+		<th style="display:none">goodsNm</th>
+		<th>goodsCd</th>
+		<th>goodsType</th>
+		<th>itemCd</th>
+		<th>optCd</th>
+		<th style="display:none">optCd1</th>
+		<th style="display:none">optCd2</th>
+		<th style="display:none">itemQtyr</th>
+		<th>orgCurrPrice</th>
+		<th>cpn1DcSq</th>
+		<th>cpn1DcAmt</th>
+		<th>optAddPrice</th>
+		<th>goodsQty</th>
+		<th>ordAmt</th>
+		<th>tmtb1Sq</th>
+		<th>tmtb1DcAmt</th>
+		<th>tmtb2Sq</th>
+		<th>tmtb2DcAmt</th>
+		<th>goodsCpnSq</th>
+		<th>goodsCpnDcAmt</th>
+		<th>cartCpnSq</th>
+		<th>cartCpnDcAmt</th>
+		<th>prePntDcAmt1</th>
+		<th>dcSumAmt</th>
+		<th>pntDcAmt1</th>
+		<th>gfcdUseAmt1</th>
+		<th>realOrdAmt1</th>
+		<th>savePntAmt1</th>
+		<th>shotDelvYn</th>
+		<th>foreignYn</th>
+		<th>orderMadeYn</th>
+		<th>delvFeeCd</th>
+	</tr>
+	<th:block th:each="delvAllCart, index : ${delvAllCartList}">
+		<th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
+			<th:block th:each="goods, i : ${delvAllCart}">
+				<tr style="height:30px;">
+					<td class="cartSq" 			th:text="${goods.cartSq}"></td>
+					<td class="goodsNm" 		th:text="${goods.goodsNm}" style="display:none"></td>
+					<td class="goodsCd"			th:text="${goods.goodsCd}"></td>
+					<td class="goodsType"		th:text="${goods.goodsType}"></td>
+					<td class="itemCd"			th:text="${goods.itemCd}"></td>
+					<td class="optCd"			th:text="${goods.optCd}"></td>
+					<td class="optCd1"			th:text="${goods.optCd1}" style="display:none"></td>
+					<td class="optCd2"			th:text="${goods.optCd2}" style="display:none"></td>
+					<td class="itemQtyr"		th:text="${goods.itemQtyr}" style="display:none"></td>
+					<td class="orgCurrPrice" 	th:text="${goods.orgCurrPrice}"></td>
+					<td class="cpn1CpnSq" 		th:text="${goods.cpn1CpnSq}"></td>
+					<td class="cpn1DcAmt" 		th:text="${goods.orgCurrPrice} - ${goods.currPrice}"></td>
+					<td class="optAddPrice" 	th:text="${goods.optAddPrice}"></td>
+					<td class="goodsQty" 		th:text="${goods.goodsQty}"></td>
+					<td class="ordAmt">0</td>
+					<th:block th:if="${goods.applyQtySectionYn} == 'Y' and ${goods.qtyTmtbSq} > 0">
+						<td class="tmtb1Sq" 	th:text="${goods.qtyTmtbSq}"></td>
+						<td class="tmtb1DcAmt" 	th:text="${goods.tmtb1DcAmt}"></td>
+					</th:block>
+					<th:block th:if="${goods.applyQtySectionYn} != 'Y'">
+						<td class="tmtb1Sq">0</td>
+						<td class="tmtb1DcAmt">0</td>
+					</th:block>
+					<th:block th:if="${goods.applyAmtSectionYn} == 'Y' and ${goods.amtTmtbSq} > 0">
+						<td class="tmtb2Sq" 	th:text="${goods.amtTmtbSq}"></td>
+						<td class="tmtb2DcAmt" 	th:text="${goods.tmtb2DcAmt}"></td>
+					</th:block>
+					<th:block th:if="${goods.applyAmtSectionYn} != 'Y'">
+						<td class="tmtb2Sq" >0</td>
+						<td class="tmtb2DcAmt" >0</td>
+					</th:block>
+					<td class="goodsCpnSq">0</td>
+					<td class="goodsCpnDcAmt">0</td>
+					<td class="cartCpnSq">0</td>
+					<td class="cartCpnDcAmt">0</td>
+					<td class="prePntDcAmt1" 	th:text="${goods.prePntDcAmt}"></td>
+					<td class="dcSumAmt">0</td>
+					<td class="pntDcAmt1">0</td>
+					<td class="gfcdUseAmt1">0</td>
+					<td class="realOrdAmt1">0</td>
+					<td class="savePntAmt1" 	th:text="${goods.savePntAmt}"></td>
+					<td class="shotDelvYn" 		th:text="${goods.shotDelvYn}"></td>
+					<td class="foreignBuyYn" 	th:text="${goods.foreignBuyYn}"></td>
+					<td class="orderMadeYn" 	th:text="${goods.orderMadeYn}"></td>
+					<td class="delvFeeCd" 		th:text="${goods.delvFeeCd}"></td>
+				</tr>
+			</th:block>
+		</th:block>
+	</th:block>
+</table>
+
+<!-- 배송단위목록 -->
+<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none;" name="delvFeeCdInfo" id="delvFeeCdInfo">
+	<tr style="height:30px;">
+		<th>supplyCompCd</th>
+		<th>delvFeeCd</th>
+		<th>delvFee</th>
+		<th>delvCpnSq</th>
+		<th>delvCpnDcAmt</th>
+	</tr>
+	<th:block th:each="delvFeeCd, index : ${delvFeeCdList}">
+		<tr style="height:30px;">
+			<td class="supplyCompCd" th:text="${delvFeeCd.supplyCompCd}"></td>
+			<td class="delvFeeCd" th:text="${delvFeeCd.delvFeeCd}"></td>
+			<td class="delvFee" th:text="${delvFeeCd.delvFee}"></td>
+			<td class="delvCpnSq">0</td>
+			<td class="delvCpnDcAmt">0</td>
+		</tr>
+	</th:block>
+</table>
+
+<!-- 주문금액합계 -->
+<table border="1" style="font-size:10px; text-align:center;  margin-top:20px; display:none;" name="orderSumAmtInfo" id="orderSumAmtInfo">
+	<tr style="height:30px;">
+		<th>orgGoodsSumAmt</th>
+		<th>delvSumAmt</th>
+		<th>freegiftUsePnt</th>
+		<th>cpn1DcSumAmt</th>
+		<th>ordSumAmt</th>
+		<th>tmtb1DcSumAmt</th>
+		<th>tmtb2DcSumAmt</th>
+		<th>tmtbDcSumAmt</th>
+		<th>goodsCpnDcSumAmt</th>
+		<th>cartCpnDcSumAmt</th>
+		<th>delvCpnDcSumAmt</th>
+		<th>cpnDcSumAmt</th>
+		<th>prePntDcAmt</th>
+		<th>pntDcSumAmt</th>
+		<th>gfcdUseSumAmt</th>
+		<th>realOrdSumAmt</th>
+		<th>savePntSumAmt</th>
+	</tr>
+	<tr style="height:30px;">
+		<td class="orgGoodsSumAmt">0</td>
+		<td class="delvSumAmt" th:text="${sumDelvFee}"></td>
+		<td class="freegiftUsePnt">0</td>
+		<td class="cpn1DcSumAmt">0</td>
+		<td class="ordSumAmt">0</td>
+		<td class="tmtb1DcSumAmt">0</td>
+		<td class="tmtb2DcSumAmt">0</td>
+		<td class="tmtbDcSumAmt">0</td>
+		<td class="goodsCpnDcSumAmt">0</td>
+		<td class="cartCpnDcSumAmt">0</td>
+		<td class="delvCpnDcSumAmt">0</td>
+		<td class="cpnDcSumAmt">0</td>
+		<td class="prePntDcSumAmt">0</td>
+		<td class="pntDcSumAmt">0</td>
+		<td class="gfcdUseSumAmt">0</td>
+		<td class="realOrdSumAmt">0</td>
+		<td class="savePntSumAmt">0</td>
+	</tr>
+</table>
+
+<div id="container" class="container od">
+	<div class="wrap">
+		<div class="content odPayment">
+			<!-- 페이지특정 클래스 = odPayment -->
+			<div class="cont_head">
+				<h2>주문/결제</h2>
+				<div class="oder_steps">
+					<ul>
+						<li>01 쇼핑백</li>
+						<li class="on">02 주문/결제</li>
+						<li>03 주문완료</li>
+					</ul>
+				</div>
+			</div>
+			<div class="cont_body">
+				<!-- CONT-BODY -->
+				<div class="od_cont">
+					<form class="form_wrap">
+						<div class="sec_head">
+							<div class="tbl type4">
+								<table>
+									<colgroup>
+										<col width="240">
+										<col width="*">
+									</colgroup>
+									<tbody>
+										<tr>
+											<th>총 <span class="number" id="delvFeeCdCnt" th:text="${delvFeeCdCnt}"></span> 건으로 나뉘어 배송 예정</th>
+											<td>
+												<span> 총알배송<em class="number" th:text="${shotCnt}" id="shotCnt"></em>건</span> 
+												<span> STYLE24<em class="number" th:text="${wmsCnt}" id="wmsCnt"></em>건</span> 
+												<span> 업체직배송<em class="number" th:text="${delvCnt}"></em>건</span> 
+												<span> 예약배송<em class="number" th:text="${resCnt}"></em>건</span>
+											</td>
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</div>
+						<div class="sec_body">
+							<!-- -->
+							<div class="foldGroup">
+								<ul>
+									<!-- 주문고객정보 -->
+									<li class="fold_mbinfo" id="custemerInfo" style="display:none"></li>
+									<!-- //주문고객정보 -->
+									
+									<!-- 배송지정보 -->
+									<li class="fold_mbinfo" id="deliveryAddrInfo" style="display:none"></li>
+									<!-- //배송지정보 -->
+									
+									<!-- //사은품정보 -->
+									<li id="freegiftInfo" style="display:none"></li>
+									<!-- //사은품정보 -->
+									
+									<!-- 할인/혜택 사용 -->
+									<li id="dcAmtInfo" style="display:none"></li>
+									<!-- //할인/혜택 사용 -->
+									
+									<!-- 결제수단 선택 -->
+									<li class="fold_paymethod" id="paymentInfo" style="display:none"></li>
+									<!-- //결제수단 선택 -->
+								</ul>
+							</div>
+							
+							<div class="area_paymentinfo">
+								<div class="paymentinfo">
+									<div class="payinfo_blk">
+										<a href=""> 개인정보 제공에 대한 동의 <span>보기</span>
+										</a>
+										<div class="infotxt">개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+											내용입니다.개인정보제공에 대한 동의 내용입니다.</div>
+									</div>
+									<div class="payinfo_blk">
+										<a href=""> 결제대행 서비스 약관 동의 <span>보기</span>
+										</a>
+										<div class="infotxt">결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+											내용입니다.결제대행서비스 약관 동의 내용입니다.</div>
+									</div>
+								</div>
+								<div class="agree_payment">위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다.</div>
+							</div>
+							
+							<div class="area_paybtn">
+								<div class="form_field">
+									<button type="button" class="btn btn_primary btn_block" id="btn_payment">
+										<span>동의 후 <em class="realOrdAmt"></em> 결제하기</span>
+									</button>
+								</div>
+							</div>
+						</div>
+					</form>
+				</div>
+
+				<div class="od_side">
+					<div class="area_order">
+						<div class="tit_box">
+							<h3>주문내역</h3>
+							<span> <em class="number" th:text="${goodsTotCnt}"></em> 개의 상품
+							</span>
+						</div>
+						
+						<div id="orderListInfo" style="display:none"></div>
+						
+						<div class="od_amount_box">
+							<dl>
+								<div>
+									<dt>상품금액</dt>
+									<dd id="orgGoodsSumAmt" th:text="|${#numbers.formatInteger(orgGoodsSumAmt, 1, 'COMMA')} 원|"></dd>
+								</div>
+								<div>
+									<dt>배송비</dt>
+									<dd id="delvSumAmt" th:text="|${#numbers.formatInteger(sumDelvFee, 1, 'COMMA')} 원|"></dd>
+								</div>
+								<div>
+									<dt>할인금액</dt>
+									<th:block th:if="${cpn1DcSumAmt} > 0">
+										<dd><span class="disc_amount" id="cpn1DcSumAmt" th:text="|-${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')} 원|"></span></dd>
+									</th:block>
+									<th:block th:if="${cpn1DcSumAmt} < 1">
+										<dd><span class="disc_amount" id="cpn1DcSumAmt" th:text="|${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')} 원|"></span></dd>
+									</th:block>
+								</div>
+								<!-- 회원인경우 노출 -->
+								<th:block th:if="${isLogin}">
+									<div>
+										<dt>다다익선할인금액</dt>
+										<th:block th:if="${tmtbDcSumAmt} > 0">
+											<dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|-${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')} 원|"></span></dd>
+										</th:block>
+										<th:block th:if="${tmtbDcSumAmt} < 1">
+											<dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')} 원|"></span></dd>
+										</th:block>
+									</div>
+									<div>
+										<dt>쿠폰할인</dt>
+										<dd><span class="disc_amount" id="couponDcSumAmt"></span></dd>
+									</div>
+									<div>
+										<dt>선포인트 사용</dt>
+										<th:block th:if="${prePntDcAmt} > 0">
+											<dd><span class="disc_amount" id="prePntDcAmt" th:text="|-${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')} 원|"></span></dd>
+										</th:block>
+										<th:block th:if="${prePntDcAmt} < 1">
+											<dd><span class="disc_amount" id="prePntDcAmt" th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')} 원|"></span></dd>
+										</th:block>
+									</div>
+									<div>
+										<dt>포인트 사용</dt>
+										<dd><span class="disc_amount" id="pntDcAmt"></span></dd>
+									</div>
+									<div>
+										<dt>상품권 사용</dt>
+										<dd><span class="disc_amount" id="gfcdUseAmt"></span></dd>
+									</div>
+								</th:block>
+							</dl>
+							<!-- 비회원인경우 노출 -->
+							<th:blcok th:if="!${isLogin}">
+								<div class="t_info">
+									<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);" title="회원가입 하여 할인받기" class="btn_link">회원가입 하여 할인받기</a>
+								</div>
+							</th:blcok>
+						</div>
+						<div class="totalprice_box">
+							<dl>
+								<dt>총 결제 예정 금액</dt>
+								<dd><span id="realOrdAmt"></span> 원</dd>
+							</dl>
+							<p class="info_point">
+								<!-- 회원인경우 노출 -->
+								<th:blcok th:if="${isLogin}">
+									<span span class="save_point" id="savePntSumAmt" th:text="|${#numbers.formatInteger(savePntSumAmt, 1, 'COMMA')} P|"></span> 적립예정
+								</th:blcok>
+								<!-- 비회원인경우 노출 -->
+								<th:blcok th:if="!${isLogin}">
+									회원가입 후 구매하면&nbsp;&nbsp;<span span class="save_point" id="savePntSumAmt" th:text="|${#numbers.formatInteger(savePntSumAmt, 1, 'COMMA')} P|"></span> 적립예정
+								</th:blcok>
+							</p>
+						</div>
+					</div>
+				</div>
+				<!-- // CONT-BODY -->
+			</div>
+		</div>
+	</div>
+</div>
+</form>
+
+<!-- 사은품지급안내 팝업 -->
+<div class="modal fade infoGift_pop" id="infoGiftPop" tabindex="-1" role="dialog" aria-labelledby="infoGiftLabel" aria-hidden="true">
+	<div class="modal-dialog" role="document">
+		<div class="modal-content">   
+			<div class="modal-header"><h5 class="modal-title" id="infoGiftLabel">STYLE24 사은품 지급 안내</h5></div>
+			<div class="modal-body">
+				<div class="pop_cont">
+					<div class="cont_box">
+						사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다. 사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.사은품지급안내 내용입니다.
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+	<a href="#close-modal" rel="modal:close" id="infoGiftPop_close" class="close-modal">Close</a>
+</div>
+<!-- //사은품지급안내 팝업 -->
+
+<!-- 할인쿠폰 변겅 팝업 -->
+<div class="modal fade couponModify_pop" id="couponModifyPop" tabindex="-1" role="dialog" aria-labelledby="couponModifyLabel" aria-hidden="true">
+	<div class="modal-dialog" role="document">
+		<div class="modal-content">
+			<!-- 할인쿠폰 변겅 팝업 내용 -->
+		</div>
+	</div>
+	<a href="#close-modal" rel="modal:close" id="couponModifyPop_close" class="close-modal">Close</a>
+</div>
+<!-- //할인쿠폰 변겅 팝업 -->
+
+<script th:inline="javascript">
+// 배송관련정보 변수선언
+var cartGoodsList		= [[${cartGoodsList}]]			// 배송목록
+var shotCnt 			= [[${shotCnt}]];				// 자사 총알 배송건수
+var wmsCnt 				= [[${wmsCnt}]];				// 자사 일반 배송건수
+var shotWmsCnt 			= [[${shotWmsCnt}]];			// 자사 총알,일반 배송건수
+var resCnt 				= [[${resCnt}]];				// 자사 예약 배송건수
+var delvCnt 			= [[${delvCnt}]];				// 입점 일반 배송건수
+var orgSumDelvFee		= [[${sumDelvFee}]];			// 최초배송비합계
+var prePntDcAmt			= [[${prePntDcAmt}]];			// 선포인트사용가능금액
+
+var custNm				= [[${order.custNm}]];			// 주문자명
+var cellPhnno			= [[${order.cellPhnno}]];		// 핸드폰번호
+var email				= [[${order.email}]];			// 이메일
+var recipZipcode		= [[${order.recipZipcode}]];	// 우편번호
+var recipBaseAddr		= [[${order.recipBaseAddr}]];	// 기본주소
+var recipDtlAddr		= [[${order.recipDtlAddr}]];	// 상세주소
+var cartSqArr			= [[${order.cartSqArr}]];		// 장바구니시퀀스 목록
+var shotDelvUseYn		= [[${order.shotDelvUseYn}]];	// 총알배송사용여부(장바구니)
+var shotDelvYn			= [[${order.shotDelvUseYn}]];	// 총알배송사용여부(장바구니)
+var foreignBuyYn		= [[${order.foreignBuyYn}]];	// 해외구매대행
+
+var foreignBuyYn		= [[${foreignBuyYn}]];			// 해외구매대행여부
+var orderMadeYn			= [[${orderMadeYn}]];			// 주문제작상품여부
+var isLogin				= [[${isLogin}]];				// 로그인여부
+
+var custCpnSq 			= 0;
+var cpnIndex			= 0;
+var cpnApplyTemp		= false;
+
+//AJAX 로드를 위한 변수 설정
+var jsonObj 			= {};
+
+// 컨텐츠 호출
+$(document).ready( function() {
+	
+	// 장바구니시퀀스 배열 변환
+	cartSqArr = String(cartSqArr).split(",");
+	
+	// AJAX 로드를 위한 변수 설정
+	jsonObj = {
+		"custNm" 			: custNm
+		, "cellPhnno" 		: cellPhnno
+		, "email" 			: email
+		, "recipZipcode" 	: recipZipcode
+		, "recipBaseAddr" 	: recipBaseAddr
+		, "recipDtlAddr" 	: recipDtlAddr
+		, "cartSqArr"		: cartSqArr
+		, "dispYn"			: "N"
+		, "shotDelvYn"		: shotDelvUseYn
+		, "shotDelvUseYn"	: shotDelvUseYn
+		, "foreignBuyYn"	: foreignBuyYn
+		, "orderMadeYn"		: orderMadeYn
+		, "custDelvAddrSq"	: 0
+	}
+	
+	jsonData = JSON.stringify(jsonObj);
+
+	// 1. AJAX 정보(회원정보로드)
+	custemerInfoSet();
+	
+	// 999. 개발화면정보설정
+	var devTemp = false;
+	var arr = []
+	arr[0] = "orderInfo";
+	arr[1] = "freegiftInfo";
+	arr[2] = "orderDetailInfo";
+	arr[3] = "delvFeeCdInfo";
+	arr[4] = "orderSumAmtInfo";
+	
+	if (devTemp) {
+		$("table").each(function(){
+			var name = $(this).attr("name");
+			for (i=0 ; i<arr.length ; i++) {
+				if (name == arr[i]) {
+					$(this).show();
+				}
+			}
+		});
+	}
+});
+
+// 1. 함수기능 정의
+// 1.1 고객정보로드
+var custemerInfoSet = function() {
+	
+	$.ajax( {
+		type		: "POST",
+		url 		: '/order/custemerInfo',
+		data		: JSON.stringify(jsonObj),
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			if (result != null) {
+				$("#custemerInfo").css("display", "block");
+				$("#custemerInfo").html(result);
+
+				// 고객정보설정
+				$(".custNm").text($("input[name='custNm']").val());
+				$(".email").text($("input[name='email']").val());
+				$(".cellPhnno").text($("input[name='cellPhnno']").val());
+			}
+			// 1.2 배송정보로드
+			deliveryAddrInfoSet(jsonObj, true);
+		}
+	});
+}
+
+// 1.2 배송정보로드
+var deliveryAddrInfoSet = function(delvObj, temp) {
+	$.ajax( {
+		type		: "POST",
+		url 		: '/order/deliveryAddrInfo',
+		data		: JSON.stringify(delvObj),
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			$("#deliveryAddrInfo").css("display", "block");
+			$("#deliveryAddrInfo").html(result);
+			
+			// 배송정보설정
+			$(".recipNm").text($("#orderForm input[name='recipNm']").val());
+			$(".recipPhnno").text($("#orderForm input[name='recipPhnno']").val());
+			$(".recipZipcode").text($("#orderForm input[name='recipZipcode']").val());
+			$(".recipBaseAddr").text($("#orderForm input[name='recipBaseAddr']").val());
+			$(".recipDtlAddr").text($("#orderForm input[name='recipDtlAddr']").val());
+			$(".delvMemo").text($("#orderForm input[name='delvMemo']").val());
+			
+			// 2. 버튼기능구현
+			// 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');
+							gagajf.showProgressbar(true);
+						},
+						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');
+							gagajf.showProgressbar(true);
+						},
+						success 	: function(result) {
+							$("#adrsAddPop .modal-dialog .modal-content").html(result);
+							$("#adrsAddPop").modal("show");
+						}
+					});	
+				}
+			});
+			
+			// 2.2 배송요청사항 팝업열기
+			$("#btn_rqstModify_pop").on("click", function(e){
+				var jsonObj = new Object();
+				jsonObj.delvMemo = $("#orderForm input[name=delvMemo]").val();
+
+				$.ajax({
+					type		: "POST",
+					url 		: "/common/delvMemoChangePop",
+					data		: JSON.stringify(jsonObj),
+					dataType 	: "html",
+					beforeSend 	: function(xhr, settings) {
+						xhr.setRequestHeader("AJAX"			, "true");
+						xhr.setRequestHeader('Accept'		, 'application/json');
+						xhr.setRequestHeader('Content-Type'	, 'application/json');
+						gagajf.showProgressbar(true);
+					},
+					success 	: function(result) {
+						if (result != null) {
+							$("#rqstModifyPop .modal-dialog .modal-content").html(result);
+							$("#rqstModifyPop").modal("show");
+						}
+					}
+				});
+				
+				return false;
+			});
+
+			// 1.3 총알배송가능 지역, 총알배송 가능 시간 체크(초기로드정보)
+			fnGetDailyDeliveryCheck(temp);
+		}
+	});
+}
+
+// 1.3 총알배송가능 지역, 총알배송 가능 시간 체크
+var fnGetDailyDeliveryCheck = function (temp) {
+	
+	jsonData = JSON.stringify(jsonObj);
+	
+	// 장바구니 총알배송 사용여부 체크 N
+	if (shotDelvUseYn == "N") {
+		// 초기에 한번 데이타 로드
+		if (temp) {
+			// 1.4 주문상품목록로드
+			orderListInfoSet(jsonData, temp);
+		}
+	} else {
+		// 배송지 우편번호 체크
+		var zipcode		= $("input[name='recipZipcode']").val();
+	
+		// 총알배송여부 체크 배송지정보 존재여부 체크
+		if (zipcode == null || zipcode == '') {
+			//alert("배송지정보가 없습니다. 기본 총알배송 가능지역으로 설정 합니다.");
+			zipcode = "04320"; // 기본 서울역 우편번호로 설정
+		}
+		
+		// TODO
+		var shotDelvObj 	= {"zipNo" : zipcode};
+	
+		gagajf.ajaxJsonSubmit(
+			"/order/getDailyDeliveryCheck"
+			, JSON.stringify(shotDelvObj)
+			, function (result) {
+				// 총알배송여부체크
+				var tempShotDelvYn = "N";
+				if (parseInt(result) > 0) {
+					tempShotDelvYn = "Y";
+				}
+
+				// json 값 설정
+				var orderListObj 		= {"cartSqArr":cartSqArr, "shotDelvYn":tempShotDelvYn};
+				var orderListJsonData 	= JSON.stringify(orderListObj);
+				
+				if (temp) {
+					// 1.3 주문상품목록로드
+					orderListInfoSet(orderListJsonData, temp);
+				} else {
+					if (tempShotDelvYn != shotDelvYn) {
+						orderListInfoSet(orderListJsonData, temp);
+					}
+				}
+				shotDelvYn = tempShotDelvYn;
+			}
+		)
+	}
+}
+
+// 1.4 주문상품목록로드
+var orderListInfoSet = function(orderListJsonData, temp) {
+	$.ajax( {
+		type		: "POST",
+		url 		: '/order/orderListInfo',
+		data		: orderListJsonData,
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			if (result != null) {
+				$("#orderListInfo").css("display", "block");
+				$("#orderListInfo").html(result);
+				
+				$("#delvFeeCdCnt").text($("#orderForm input[name=delvFeeCdCnt]").val());
+				$("#shotCnt").text($("#orderForm input[name=shotCnt]").val());
+				$("#wmsCnt").text($("#orderForm input[name=wmsCnt]").val());
+				
+				// 총알배송건수가 있으면 총알배송 태그 표시
+				if (parseInt($("#orderForm input[name=shotCnt]").val()) > 0 ) {
+					$(".shotDelv").show();
+				} else {
+					$(".shotDelv").hide();
+				}
+			}
+			
+			// 1.5 사은품정보로드
+			if (temp) {
+				freegiftInfoSet();
+			}
+		}
+	});
+}
+
+// 1.5 사은품정보로드
+var freegiftInfoSet = function() {
+	
+	$.ajax( {
+		type		: "POST",
+		url 		: '/order/freegiftInfo',
+		data		: JSON.stringify(jsonObj),
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			if (result != null) {
+				$("#freegiftInfo").html(result);
+				
+				var total_gift 		= 0;
+				var total_deduct 	= 0;
+				
+				// 2.2 사은품선택 라디오 버튼 기능
+				$(".freegiftRdo").on("click", function() {
+					total_gift 		= 0;
+					total_deduct 	= 0;
+					
+					$(".freegiftRdo").each(function(){
+						if ($(this).attr("allYn") == "Y" ) {
+							total_gift 		+= 1;
+						}
+						
+						// 라디오버튼 사은품 체크
+						if ($(this).is(":checked")) {
+							// 수령거부가 아닐때 체크
+							if ($(this).val() != "noSel") {
+								total_gift 		+= 1;
+								total_deduct 	+= parseInt($(this).attr("usepoint"));
+							}
+						}
+					});
+					
+					$(".total_gift").text(total_gift);							// 사은품총선택개수
+					$(".total_deduct").text(total_deduct.addComma());			// 사은품총사용포인트
+					$(".freegiftUsePnt").text(total_deduct);
+					
+					// 포인트초기화기능
+					pntDcAmtReset();
+				});
+				
+				// 사은품테이블 그리기
+				$(".gift_box").each(function(){
+					$(this).find(".freegiftRdo").each(function(){
+						if ($(this).attr("allYn") == "Y" ) {
+							total_gift += 1;
+						}
+						$(".total_gift").text(total_gift);						// 사은품총선택개수
+					});
+				});
+			}
+			
+			// 1.6 결제타입로드
+			paymentInfoSet();
+		}
+	});
+}
+
+// 1.6 결제타입로드 (결제버튼기능구현)
+var paymentInfoSet = function() {
+	
+	$.ajax( {
+		type		: "POST",
+		url 		: '/order/paymentInfo',
+		data		: JSON.stringify(jsonObj),
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			if (result != null) {
+				$("#paymentInfo").css("display", "block");
+				$("#paymentInfo").html(result);
+				
+				// 결제타입명칭 설정
+				$("#orderForm .area_paymethod .paymethod_box ul li").on("click", function(){
+					var payType = $(this).find(".payType").text();
+					if ($(this).find("input[name=rdi-paynormal]").is(":checked")) {
+						$(".payTypeNm").text(payType);
+					}
+				});
+				
+				// 결재하기
+				$("#btn_payment").on("click", function(){
+					// 사은품정보
+					var prePntDcAmtYn		= $("input[name='rdi-beforpoint']:checked").val();
+					var paynormal			= $("input[name='rdi-paynormal']:checked").val();
+					var orderDetailList		= [];
+					var delvFeeCdList		= [];
+					var ordGoodsQty			= 0;
+					var goodsNm				= "";
+					var orgEntryNo 			= "";
+					var entryNo 			= "";
+					
+					// TODO 개인통관번호 동의 체크시 통관번호 등록
+					if (foreignBuyYn == "Y") {
+						if ($("#orderForm input[name=rdi-overseas]:checked").val() == "Y") {
+							if (gagajf.isNull($("#orderForm input[name=entryNo]").val())) {
+								mcxDialog.alert("개인통관고유부호를 입력해주세요.");
+								$('#orderForm input[name=entryNo]').focus();
+								
+								// 배송정보화면노출
+								deliveryAddrInfoDispYn("Y");
+								return false;
+							}
+							
+							orgEntryNo = $("#orderForm input[name=entryNo]").val();
+							
+							if (orgEntryNo.length < 13) {
+								mcxDialog.alert("개인통관고유부호가 유효하지 않습니다.");
+								$('#orderForm input[name=entryNo]').focus();
+								
+								// 배송정보화면노출
+								deliveryAddrInfoDispYn("Y");
+								return false;
+							}
+							
+							if (!$("#chk-overs-agr").is(":checked")) {
+								mcxDialog.alert("개인통관정보고유부호 정보 동의/저장항목을 체크해주세요.");
+								
+								// 배송정보화면노출
+								deliveryAddrInfoDispYn("Y");
+								return false;
+							}
+						}
+					}
+					
+					// 주문제작상품일때 주문제작정보동의
+					if (orderMadeYn == "Y") {
+						if (!$("#chk-custom-agr1").is(":checked")) {
+							mcxDialog.alert("주문제작상품 정보 동의를 체크해주세요.");
+							
+							// 배송정보화면노출
+							deliveryAddrInfoDispYn("Y");
+							return false;
+						}
+					}
+					
+					// 사은품지급할 경우 체크
+					if ($(".freegiftValArr").text().length > 0) {
+						if (!$("#chk-agree_gift").is(":checked")) {
+							mcxDialog.alert("사은품 지급 정보 동의를 체크해주세요.");
+							
+							// 배송정보화면노출
+							freegiftInfoDispYn("Y");
+							return false;
+						}
+					}
+					
+					// 결재수단
+					if (gagajf.isNull(paynormal)) {
+						mcxDialog.alert("결제수단을 선택해 주세요.");
+						
+						// 결제수단정보노출
+						paymentInfoDispYn("Y");
+						return false;
+					}
+					
+					var paynormalArr		= paynormal.split("|");
+					var pgGb				= paynormalArr[0];
+					var payMeans			= paynormalArr[1];
+
+					// 주문상세데이타 생성
+					$("#orderDetailInfo .cartSq").each(function(){
+						// 주문상세단위 총알배송여부 변경
+						var orderDetailShotDelvYn = $(this).parent().find(".shotDelvYn").text();
+						if (orderDetailShotDelvYn == "Y") {
+							if (shotDelvYn == "N") {
+								orderDetailShotDelvYn = "N";
+							}
+						}
+						
+						// 개인통관번호
+						if ($(this).parent().find(".foreignBuyYn").text() == "Y") {
+							entryNo = orgEntryNo;
+						} else {
+							entryNo = "";
+						}
+						
+						var orderDetailData = {
+							"cartSq"			: $(this).text()
+							,"currPrice"		: $(this).parent().find(".orgCurrPrice").text()
+							,"optAddPrice"		: $(this).parent().find(".optAddPrice").text()
+							,"ordAmt"			: $(this).parent().find(".ordAmt").text()
+							,"cpn1DcSq"			: $(this).parent().find(".cpn1DcSq").text()
+							,"cpn1DcAmt"		: $(this).parent().find(".cpn1DcAmt").text()
+							,"goodsQty"			: $(this).parent().find(".goodsQty").text()
+							,"tmtb1Sq"			: $(this).parent().find(".tmtb1Sq").text()
+							,"tmtb1DcAmt"		: $(this).parent().find(".tmtb1DcAmt").text()
+							,"tmtb2Sq"			: $(this).parent().find(".tmtb2Sq").text()
+							,"tmtb2DcAmt"		: $(this).parent().find(".tmtb2DcAmt").text()
+							,"goodsCpnSq"		: $(this).parent().find(".goodsCpnSq").text()
+							,"goodsCpnDcAmt"	: $(this).parent().find(".goodsCpnDcAmt").text()
+							,"cartCpnSq"		: $(this).parent().find(".cartCpnSq").text()
+							,"cartCpnDcAmt"		: $(this).parent().find(".cartCpnDcAmt").text()
+							,"prePntDcAmt"		: $(this).parent().find(".prePntDcAmt1").text()
+							,"pntDcAmt"			: $(this).parent().find(".pntDcAmt1").text()
+							,"gfcdUseAmt"		: $(this).parent().find(".gfcdUseAmt1").text()
+							,"realOrdAmt"		: $(this).parent().find(".realOrdAmt1").text()
+							,"savePntAmt"		: $(this).parent().find(".savePntAmt1").text()
+							,"shotDelvYn"		: orderDetailShotDelvYn
+							,"foreignBuyYn"		: $(this).parent().find(".foreignBuyYn").text()
+							,"makeGoodsYn"		: $(this).parent().find(".orderMadeYn").text()
+							,"delvFeeCd"		: $(this).parent().find(".delvFeeCd").text()
+							,"goodsCd"			: $(this).parent().find(".goodsCd").text()
+							,"itemCdArr"		: $(this).parent().find(".itemCd").text().split(",")
+							,"optCdArr"			: $(this).parent().find(".optCd").text().split(",")
+							,"itemQtyArr"		: $(this).parent().find(".itemQtyr").text().split(",")
+							,"goodsType"		: $(this).parent().find(".goodsType").text()
+							,"entryNo"			: entryNo
+						}
+						
+						// 상품수
+						ordGoodsQty++;
+						
+						orderDetailList.push(orderDetailData);
+					});
+					
+					// 주문배송업체정보 생성
+					$("#delvFeeCdInfo .delvFeeCd").each(function(){
+						var delvFeeCdData = {
+							"delvFeeCd"			: $(this).text()
+							,"supplyCompCd"		: $(this).parent().find(".supplyCompCd").text()
+							,"delvFee"			: $(this).parent().find(".delvFee").text()
+							,"delvCpnSq"		: $(this).parent().find(".delvCpnSq").text()
+							,"delvCpnDcAmt"		: $(this).parent().find(".delvCpnDcAmt").text()
+						}
+						
+						delvFeeCdList.push(delvFeeCdData);
+					});
+					
+					// 주문데이타 생성
+					var orderData = {
+						"custNm"				: $(".custNm").text()
+						,"email"				: $(".email").text()
+						,"recipNm"				: $(".recipNm").text()
+						,"recipPhnno"			: $(".recipPhnno").text()
+						,"recipZipcode"			: $(".recipZipcode").text()
+						,"recipBaseAddr"		: $(".recipBaseAddr").text()
+						,"recipDtlAddr"			: $(".recipDtlAddr").text()
+						,"delvMemo"				: $(".delvMemo").text()
+						,"prePntDcAmtYn"		: prePntDcAmtYn
+						,"orderDetailList"		: orderDetailList
+						,"delvFeeCdList"		: delvFeeCdList
+						,"shotDelvYn"			: shotDelvYn
+						,"entryNo"				: entryNo
+						,"pgGb"					: pgGb
+						,"payMeans"				: payMeans // 네이버페이, 카카오페이
+						,"payAmt"				: $(".realOrdSumAmt").text()
+						,"ordNm"				: $(".custNm").text()
+						,"ordPhnno"				: $(".cellPhnno").text()
+						,"goodsNm"				: $(".goodsNm").eq(0).text()
+						,"ordGoodsQty"			: ordGoodsQty
+						,"freegiftValArr"		: $(".freegiftValArr").text().split(",")
+						,"freegiftSqArr"		: $(".freegiftSqArr").text().split(",")
+						,"freegiftGoodsArr"		: $(".freegiftGoodsArr").text().split(",")
+						,"freegiftUsePointArr"	: $(".freegiftUsePointArr").text().split(",")
+					};
+					
+					$.ajax( {
+						type		: "POST",
+						url 		: '/order/create/preOrder',
+						data		: JSON.stringify(orderData),
+						dataType 	: 'html',
+						beforeSend : function(xhr, settings) {
+							xhr.setRequestHeader("AJAX"			, "true");
+							xhr.setRequestHeader('Accept'		, 'application/json');
+							xhr.setRequestHeader('Content-Type'	, 'application/json');
+							gagajf.showProgressbar(true);
+						},
+						success 	: function(result) {
+							// 결재정보로드
+							$("#order_info").html(result);
+							
+							var pgGb = $("#order_info input[name=pgGb]").val();
+							
+							if (pgGb == "NAVFER") {
+								fnNaverPaymentReady();
+							} else if (pgGb == "KAKAO") {
+								fnKakaoPaymentReady();
+							} else if (pgGb == "KCP" || pgGb == "PAYCO") {
+								jsf__pay(document.order_info);
+							}
+						}
+					});
+				});
+
+				// 1.8 할인영역 설정 (로그인여부일때 동작)
+				if (isLogin == true) {
+					dcAmtInfoSet();
+				} else {
+					// 금액계산초기화
+					custCpnSumAmtCal();
+				}
+			}
+		}
+	});
+}
+
+// 1.7 프로모션 쿠폰 적용 함수
+var serialCpnApply = function(){
+	
+	if (gagajf.isNull($("#serialCpnNm").val())) {
+		mcxDialog.alert("할인코드를 입력해주세요.");
+		$('#serialCpnNm').focus();
+		return false;
+	}
+	
+	let data = {
+		rdCpnNm : $("#serialCpnNm").val()
+	}
+
+	$.ajax( {
+		type			: "POST",
+		url 			: '/cart/list/serialCpnApply',
+		contentType		: 'application/json',
+		dataType 		: 'json',
+		data 			: JSON.stringify(data),
+		success 		: function(result) {
+			// 프로모션쿠폰적용 후 할인영역 노출
+			jsonObj.dispYn = "Y";
+
+			// 성공일때는 쿠폰정보 및 포인트 정보 reset
+			if (result.serialCpnInfo.result == "SUCCESS") {
+				mcxDialog.alert("쿠폰 등록이 되었습니다.");
+				// 1.8 할인영역 재로드
+				dcAmtInfoSet(jsonData);
+			} else {
+				mcxDialog.alert(result.serialCpnInfo.result);
+				$("#serialCpnNm").val("");
+			}
+		}
+	});
+}
+
+// 1.8 할인영역 설정 (쿠폰, 선포인트, 포인트, 상품권)
+var dcAmtInfoSet = function() {
+	// 1.8.1 할인정보로드
+	$.ajax( {
+		type		: "POST",
+		url 		: '/order/dcAmtInfo',
+		data		: JSON.stringify(jsonObj),
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			if (result != null) {
+				$("#dcAmtInfo").css("display", "block");
+				$("#dcAmtInfo").html(result);
+				
+				// 쿠폰팝업정보로드
+				$.ajax( {
+					type		: "POST",
+					url 		: '/order/couponApplyPop',
+					data		: JSON.stringify(jsonObj),
+					dataType 	: 'html',
+					beforeSend : function(xhr, settings) {
+						xhr.setRequestHeader("AJAX"			, "true");
+						xhr.setRequestHeader('Accept'		, 'application/json');
+						xhr.setRequestHeader('Content-Type'	, 'application/json');
+						gagajf.showProgressbar(true);
+					},
+					success 	: function(result) {
+						$("#couponModifyPop").html(result);
+						
+						// 1.8.1 선포인트기능초기환
+						prePntDcAmtReset();
+						
+						// 1.8.2 쿠폰적용초기화(할인율최고)(상품,장바구니)
+						custGoodsCpnInit();
+						
+						// 1.8.3 쿠폰적용초기화(할인율최고)(배송비)
+						custDelvCpnInit();
+						
+						// 1.8.4 쿠폰적용버튼
+						$("#btn_coupon_apply").on("click", function(){
+							
+							// 상품쿠폰적용
+							$('.goodsCpn ul li.selected').each(function(index){
+								custCpnApply($(this));
+							});
+							
+							// 장바구니쿠폰적용
+							$('.cartCpn').each(function(index){
+								if ($(this).find("input[name=rdi-cart-coupon]").is(":checked")) {
+									custCpnApply($(this));
+								}
+							});
+							
+							// 최대할인혜택적용 체크해제
+							if ($("#chk-maxdisc").is(":checked")) {
+								$("#chk-maxdisc").attr("checked", false);
+							}
+							
+							$(".close-modal").trigger("click");				// 팝업닫기
+						});
+						
+						// 1.8.5 쿠폰 최대할인금액 초기화 버튼 설정
+						$("#chk-maxdisc").on("click", function(){
+							if ($(this).is(":checked")) {
+								// 상품&장바구니쿠폰 초기환
+								custGoodsCpnInit();
+								
+								// 배송비쿠폰 초기환
+								custDelvCpnInit();
+							}
+						});
+					}
+				});
+				
+				// 쿠폰변경팝업호출
+				$("#btn_couponModify_pop").on("click", function(){
+					// 쿠폰초기화
+					custGoodsCpnInit();
+					
+					$("#couponModifyPop").modal("show");
+				});
+				
+				// 1.8.7 포인트 적용버튼 기능
+				$("#btn_point_apply").on("click", function(){
+					var rmPntAmt 			= parseInt($("#orderForm input[name='rmPntAmt']").val());
+					var freegiftUsePnt 		= parseInt($(".freegiftUsePnt").text());
+					var pntDcAmt 			= parseInt($("#orderForm input[name='pntDcAmtStr']").val());
+					var realOrdAmt 			= parseInt($(".realOrdSumAmt").text());
+					var applyPntDcAmt 		= (realOrdAmt * 40) / 100;
+					
+					rmPntAmt				= rmPntAmt - freegiftUsePnt;
+					
+					if (gagajf.isNull($("#orderForm input[name=pntDcAmtStr]").val())) {
+						mcxDialog.alert("사용할 포인트를 입력해주세요.");
+						$('#orderForm input[name=pntDcAmtStr]').focus();
+						return false;
+					}
+					
+					// 입력여부체크
+					if (pntDcAmt < 1) {
+						mcxDialog.alert("사용할 포인트를 입력해주세요");
+						// 포인트리셋기능
+						pntDcAmtReset();
+						return false;
+					}
+					
+					// 보유포인트보다 초과 사용 불가
+					if (pntDcAmt > rmPntAmt) {
+						mcxDialog.alert("보유포인트 보다 초과 사용 할 수 없습니다.");
+						// 포인트리셋기능
+						pntDcAmtReset();
+						return false;
+					}
+
+					// TODO 포인트 사용금액 1000P 이상 사용
+					if (pntDcAmt < 1000) {
+						mcxDialog.alert("포인트는 최소 1,000P이상 사용해야 합니다.");
+						// 포인트리셋기능
+						pntDcAmtReset();
+						return false;
+					}
+					
+					// 실결제금액보다 크게 적용 되었을때 적용 불가능
+					if (pntDcAmt > applyPntDcAmt) {
+						mcxDialog.alert("결제금액의 최대 40%를 초과 사용 할 수 없습니다.");
+						// 포인트리셋기능
+						pntDcAmtReset();
+						return false;
+					}
+					
+					// 포인트 적용
+					$(".pntDcSumAmt").text(pntDcAmt);
+					$("#pntDcAmt").text("-"+pntDcAmt.addComma()+" 원");
+					
+					// 상품권리렛기능
+					gfcdUseAmtReset();
+				});
+				
+				// 1.8.8 상품권 적용버튼 기능
+				$("#btn_gfcd_apply").on("click", function(){
+					var rmGfcdAmt 		= parseInt($("#orderForm input[name='rmGfcdAmt']").val());
+					var gfcdUseAmt 		= parseInt($("#orderForm input[name='gfcdUseAmtStr']").val());
+					
+					if (gagajf.isNull($("#orderForm input[name=gfcdUseAmtStr]").val())) {
+						mcxDialog.alert("사용할 금액을 입력해주세요.");
+						$('#orderForm input[name=gfcdUseAmtStr]').focus();
+						return false;
+					}
+					
+					// 입력여부체크
+					if (gfcdUseAmt < 1 || $("input[name='gfcdUseAmtStr']").val() == "") {
+						mcxDialog.alert("사용할 금액을 입력해주세요");
+						// 상품권리셋기능
+						gfcdUseAmtReset();
+						return false;
+					}
+					
+					// 보유금액보다 초과 사용 불가
+					if (gfcdUseAmt > rmGfcdAmt) {
+						mcxDialog.alert("보유금액 보다 초과 사용 할 수 없습니다.");
+						// 상품권리셋기능
+						gfcdUseAmtReset();
+						return false;
+					}
+
+					// TODO 포인트 사용금액 1000원 이상 사용
+					if (gfcdUseAmt < 1000) {
+						mcxDialog.alert("상품권 사용금액은 최소 1,000원 이상 사용해야 합니다.");
+						
+						// 상품권리셋기능
+						gfcdUseAmtReset();
+						return false;
+					}
+					
+					// 상품권 적용
+					$(".gfcdUseSumAmt").text(gfcdUseAmt);
+					$("#gfcdUseAmt").text("-"+gfcdUseAmt.addComma()+" 원");
+					
+					// 금액전체계산
+					custCpnSumAmtCal();
+				});
+				
+				// 금액계산초기화
+				custCpnSumAmtCal();
+			}
+		}
+	});
+}
+
+// 1.9.1 상품쿠폰초기화
+var custGoodsCpnInit = function() {
+	
+	// 쿠폰최대할인 적용
+	$("#chk-maxdisc").attr("checked", true);
+	
+	// 쿠폰초기화
+	$(".goodsCpn").each(function(index){
+		// select box 쿠폰 적용
+		var cpnCartSq = $(this).find("input[name='cpnCartSq']").val();
+		
+		// 장바구니시퀀스 체크
+		$(".cartSq").each(function(){
+			if (cpnCartSq == $(this).text()) {
+				$(this).parent().find(".goodsCpnSq").text("0");			// 상품쿠폰시퀀스
+				$(this).parent().find(".goodsCpnDcAmt").text("0");		// 상품쿠폰할인금액
+			}
+		});
+		
+		$(this).find("input[name='custCpnSq']").val("0");
+		$(this).find("input[name='cpnDcAmt']").val("0");
+		
+		// 적용안함 적용
+		var emptyHtml = $(this).find("ul li .item_coupon.empty").html();
+		$(this).find(".select .item_coupon").html(emptyHtml);
+		
+		$(this).find("ul li").removeClass("selected");
+	});
+
+	// 최대할인율 쿠폰적용
+	$('.goodsCpn').each(function(index){
+		cpnIndex 		= 0;
+		cpnApplyTemp 	= false;
+		
+		// select 박스 반복문 실행
+		$(this).find("ul li").each(function(i){
+			cpnIndex++;
+			if (cpnApplyTemp == false) {
+				if (custCpnDuplicationCheck($(this).attr("value"), cpnIndex)) {
+					// 쿠폰적용
+					custCpnApply($(this));
+					// 쿠폰할인적용
+					cpnApplyTemp = true;
+				}
+			}
+			
+			// 쿠폰 select 버튼기능
+			$(this).on("click", function(){
+				if (custCpnDuplicationCheck($(this).attr("value"), cpnIndex)) {
+					// 쿠폰적용
+					custCpnApplyTemp($(this));
+					// 쿠폰할인적용
+					cpnApplyTemp = true;
+				} else {
+					custCpnNotApply($(this));
+				}
+			});
+		});
+	});
+	
+	// 장바구니쿠폰초기화 
+	custCartCpnInit();
+}
+
+// 1.9.2 장바구니쿠폰초기화
+var custCartCpnInit = function() {
+	// 장바구니쿠폰 초기화 적용
+	$(".cartCpn").each(function(index) {
+		if (index == 0) {
+			custCpnApply($(this)); // 쿠폰적용
+		}
+		
+		// 쿠폰 select 버튼기능
+		$(this).on("click", function(){
+			custCpnApplyTemp($(this)); // 쿠폰적용
+			
+			// 최대할인혜택적용 체크해제
+			if ($("#chk-maxdisc").is(":checked")) {
+				$("#chk-maxdisc").attr("checked", false);
+			}
+		});
+	});
+	
+	// 포인트기능 리셋
+	pntDcAmtReset();
+}
+
+// 1.9.3 배송비쿠폰초기화
+var custDelvCpnInit = function() {
+	// 배송비쿠폰 초기화 적용
+	$(".delvCpn").each(function(index) {
+		if (index == 0) {
+			// 쿠폰적용
+			custCpnApply($(this));
+		}
+		
+		// 쿠폰 select 버튼기능
+		$(this).on("click", function(){
+			// 쿠폰적용
+			custCpnApply($(this));
+		});
+	});
+}
+
+// 1.10 쿠폰중복사용체크
+var custCpnDuplicationCheck = function(custCpnSq, index) {
+	var selCustSq 	= 0;
+	var cnt 		= 0;
+	
+	// 쿠폰적용가능
+	if (custCpnSq == 0) {
+		return true;
+	}
+
+	// 쿠폰중본사용체크
+	$(".goodsCpn input[name='custCpnSq']").each(function(i){
+		if (index != i) {
+			selCustSq = $(this).val();
+			if (selCustSq == custCpnSq) {
+				cnt++;
+			}
+		}
+	});
+	
+	// 쿠폰적용불가
+	if (cnt > 0) {
+		return false;
+	}
+	// 쿠폰적용가능
+	else {
+		return true;
+	}
+}
+
+// 1.11.0 임시로 쿠폰적용
+var custCpnApplyTemp = function(obj) {
+	// select box 쿠폰 적용
+	var cpnType 	= obj.parent().find("input[name='cpnType']").val();
+	
+	// 상품쿠폰적용
+	if (cpnType == "goodsCpn") {
+		var itemHtml = obj.find(".item_coupon").html();
+		obj.parent().parent().find(".select .item_coupon").html(itemHtml);
+		obj.parent().find("input[name='cpnDcAmt']").val(obj.attr("data"));
+		obj.parent().find("input[name='custCpnSq']").val(obj.attr("value"));
+
+		// 장바구니쿠폰 초기화 적용
+		$(".cartCpn").each(function(index) {
+			if (index == 0) {
+				custCpnApplyTemp($(this)); // 쿠폰적용
+			}
+		});
+		
+		//상품쿠폰 선택불가 처리
+		custCpnSqLiDisabled();
+	}
+	// 장바구니쿠폰적용
+	else if (cpnType == "cartCpn") {
+		var dcWay 				= obj.find("input[name='dcWay']").val();
+		var dcVal 				= obj.find("input[name='dcVal']").val();
+		var cartCpnDcSumAmt		= 0;
+		var tempSumAmt			= 0;
+		var cartSqLen			= $(".cartSq").length;
+		var leftAmt				= 0;
+		var index				= 1;
+		
+		// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
+		obj.find("input[name='cartCpnCartSq']").each(function(){
+			var cartCpnCartSq 		= $(this).val();
+			var cartCpnDcAmt		= 0;
+			
+			// 장바구니시퀀스 체크
+			$(".cartSq").each(function(){
+				if (cartCpnCartSq == $(this).text()) {
+					var orgCurrPrice 	= parseInt($(this).parent().find(".orgCurrPrice").text());
+					var cpn1DcAmt 		= parseInt($(this).parent().find(".cpn1DcAmt").text());
+					var goodsQty 		= parseInt($(this).parent().find(".goodsQty").text());
+					var tmtb1DcAmt 		= parseInt($(this).parent().find(".tmtb1DcAmt").text());
+					var tmtb2DcAmt 		= parseInt($(this).parent().find(".tmtb2DcAmt").text());
+					var goodsCpnDcAmt 	= 0;
+					
+					$(".goodsCpn input[name=cpnCartSq]").each(function(){
+						if ($(this).val() == cartCpnCartSq) {
+							goodsCpnDcAmt 	= parseInt($(this).parent().find("input[name=cpnDcAmt]").val());
+						} 
+					});
+					
+					var tempAmt 		= ((orgCurrPrice - cpn1DcAmt) * goodsQty) - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
+					tempSumAmt			= tempSumAmt + tempAmt;
+					
+					// 할인율일때 할인금액 
+					if (dcWay == "G240_11") {
+						cartCpnDcAmt = (tempAmt * dcVal) / 100;
+						cartCpnDcSumAmt = cartCpnDcSumAmt + cartCpnDcAmt;
+					}
+				}
+			});
+		});
+		
+		// 금액일때 할인금액 적용
+		if (dcWay == "G240_10") {
+			cartCpnDcSumAmt = dcVal;
+		}
+		
+		obj.find("input[name=rdi-cart-coupon]").prop("checked", true);
+		obj.parent().find("input[name=cpnDcAmt]").val(cartCpnDcSumAmt);
+		obj.parent().find("input[name=custCpnSq]").val(obj.attr("value"));
+	}
+	
+	var cpnDcSumAmt 		= 0;
+	var cpnApplyCnt 		= 0;
+	var goodsCartCpnSumAmt 	= 0;
+	var cpnType				= "";
+	
+	$("input[name='cpnDcAmt']").each(function(){
+		cpnType = $(this).parent().find("input[name=cpnType]").val();
+		
+		// 상품, 장바구니쿠폰 할인 금액만 합계 적용
+		if (cpnType == "goodsCpn" || cpnType == "cartCpn") {
+			goodsCartCpnSumAmt = goodsCartCpnSumAmt + parseInt($(this).val());
+		}
+	});
+	
+	// 상품, 장바구니쿠폰 할인 금액만 합계 적용
+	$(".modal-footer .goodsCartCpnSumAmt").text("-"+goodsCartCpnSumAmt.addComma());
+}
+
+// 1.11 쿠폰중복체크 후 적용가능
+var custCpnApply = function(obj) {
+	// select box 쿠폰 적용
+	var cpnType 	= obj.parent().find("input[name='cpnType']").val();
+	
+	// 상품쿠폰적용
+	if (cpnType == "goodsCpn") {
+		var itemHtml = obj.find(".item_coupon").html();
+		obj.parent().parent().find(".select .item_coupon").html(itemHtml);
+		obj.parent().find("input[name='cpnDcAmt']").val(obj.attr("data"));
+		obj.parent().find("input[name='custCpnSq']").val(obj.attr("value"));
+		
+		var cpnCartSq 	= obj.parent().parent().find("input[name='cpnCartSq']").val();
+		
+		// 장바구니시퀀스 체크
+		$(".cartSq").each(function(){
+			if (cpnCartSq == $(this).text()) {
+				$(this).parent().find(".goodsCpnSq").text(obj.prop("value"));			// 상품쿠폰시퀀스
+				$(this).parent().find(".goodsCpnDcAmt").text(obj.attr("data"));			// 상품쿠폰할인금액
+			}
+		});
+		
+		// 선택활성화
+		$(obj).addClass("selected");
+		
+		//상품쿠폰 선택불가 처리
+		custCpnSqLiDisabled();
+	} 
+	// 장바구니쿠폰적용
+	else if (cpnType == "cartCpn") {
+		var dcWay 				= obj.find("input[name='dcWay']").val();
+		var dcVal 				= obj.find("input[name='dcVal']").val();
+		var cartCpnDcSumAmt		= 0;
+		var tempSumAmt			= 0;
+		var cartSqLen			= $(".cartSq").length;
+		var leftAmt				= 0;
+		var index				= 1;
+		
+		// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
+		obj.find("input[name='cartCpnCartSq']").each(function(){
+			var cartCpnCartSq 		= $(this).val();
+			var cartCpnDcAmt		= 0;
+			
+			// 장바구니시퀀스 체크
+			$(".cartSq").each(function(){
+				if (cartCpnCartSq == $(this).text()) {
+					var orgCurrPrice 	= parseInt($(this).parent().find(".orgCurrPrice").text());
+					var cpn1DcAmt 		= parseInt($(this).parent().find(".cpn1DcAmt").text());
+					var goodsQty 		= parseInt($(this).parent().find(".goodsQty").text());
+					var tmtb1DcAmt 		= parseInt($(this).parent().find(".tmtb1DcAmt").text());
+					var tmtb2DcAmt 		= parseInt($(this).parent().find(".tmtb2DcAmt").text());
+					var goodsCpnDcAmt 	= parseInt($(this).parent().find(".goodsCpnDcAmt").text());
+					
+					var tempAmt 		= ((orgCurrPrice - cpn1DcAmt) * goodsQty) - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
+					tempSumAmt			= tempSumAmt + tempAmt;
+					
+					// 할인율일때 할인금액 
+					if (dcWay == "G240_11") {
+						cartCpnDcAmt = parseInt((tempAmt * dcVal) / 100);
+						cartCpnDcSumAmt = cartCpnDcSumAmt + cartCpnDcAmt;
+
+						$(this).parent().find(".cartCpnSq").text(obj.attr("value"));
+						$(this).parent().find(".cartCpnDcAmt").text(cartCpnDcAmt);
+					}
+				}
+			});
+		});
+		
+		// 장바구니쿠폰 결제가능수단목록조회
+		if (obj.find("input[name='payTypeArr']").length > 0) {
+			$("#orderForm input[name=rdi-paynormal]").attr("disabled", true);
+			$("#orderForm input[name=rdi-paynormal]").attr("checked", false);
+			
+			obj.find("input[name='payTypeArr']").each(function(i){
+				var payType = $(this).val();
+				$('#orderForm .'+payType).attr("disabled", false);
+				//$('#orderForm .'+payType).eq(0).attr("checked", true);
+				//if (i == 0) {
+					//$("#orderForm input[name=rdi-paynormal]").attr("checked", true);
+				//}
+			});
+		} else {
+			$("#orderForm input[name=rdi-paynormal]").attr("disabled", false);
+		}
+		
+		// 선택안함
+		$(".payTypeNm").text("선택없음");
+		
+		// 금액일때 할인금액 적용
+		if (dcWay == "G240_10") {
+			cartCpnDcSumAmt = dcVal;
+			leftAmt			= dcVal;
+			index = 1;
+			
+			// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
+			obj.find("input[name='cartCpnCartSq']").each(function(){
+				var cartCpnCartSq 		= $(this).val();
+				var cartCpnDcAmt		= 0;
+									
+				// 장바구니시퀀스 체크
+				$(".cartSq").each(function(){
+					if (cartCpnCartSq == $(this).text()) {
+						var orgCurrPrice 	= parseInt($(this).parent().find(".orgCurrPrice").text());
+						var tmtb1DcAmt 		= parseInt($(this).parent().find(".tmtb1DcAmt").text());
+						var tmtb2DcAmt 		= parseInt($(this).parent().find(".tmtb2DcAmt").text());
+						var goodsCpnDcAmt 	= parseInt($(this).parent().find(".goodsCpnDcAmt").text());
+						
+						var tempAmt 		= orgCurrPrice - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
+						var tempDiv 		= parseInt((tempAmt / tempSumAmt) * 100);
+						var cartCpnDcAmt	= 0;
+				
+						if (index == cartSqLen) {
+							cartCpnDcAmt 	= leftAmt;
+						} else {
+							cartCpnDcAmt	= parseInt((cartCpnDcSumAmt * tempDiv) / 100);
+							leftAmt 		= leftAmt - cartCpnDcAmt;
+						}
+						
+						$(this).parent().find(".cartCpnSq").text(obj.attr("value"));
+						$(this).parent().find(".cartCpnDcAmt").text(cartCpnDcAmt);
+						
+						index++;
+					}
+				});
+			});
+		}
+		
+		obj.find("input[name=rdi-cart-coupon]").prop("checked", true);
+		obj.parent().find("input[name=cpnDcAmt]").val(cartCpnDcSumAmt);
+		obj.parent().find("input[name=custCpnSq]").val(obj.attr("value"));
+	}
+	// 배송비쿠폰적용
+	else if (cpnType == "delvCpn") {
+		// 적용안함 적용
+		var itemHtml = obj.find(".dlvr_coupon").html();
+		obj.parent().parent().find(".select .dlvr_coupon").html(itemHtml);
+		
+		obj.parent().find("input[name='cpnDcAmt']").val(obj.attr("data"));
+		obj.parent().find("input[name='custCpnSq']").val(obj.attr("value"));
+		obj.parent().find("input[name='delvFeeCd']").val(obj.attr("delvfeecd"));
+		
+		var delvFeeCd = obj.attr("delvfeecd");
+		
+		// 배송비쿠폰 테이블 적용
+		$(".delvFeeCd").each(function(){
+			// 배송비쿠폰적용
+			if ($(this).text() == delvFeeCd) {
+				$(this).parent().find(".delvCpnSq").text(obj.attr("value"));
+				$(this).parent().find(".delvCpnDcAmt").text(obj.attr("data"));
+			} 
+			// 배송비쿠폰적용안함
+			else if (delvFeeCd == 0) {
+				$(this).parent().find(".delvCpnSq").text(obj.attr("value"));
+				$(this).parent().find(".delvCpnDcAmt").text(obj.attr("data"));
+			}
+		});
+	}
+	
+	// 포인트기능 리렛
+	pntDcAmtReset();
+	
+}
+
+// 1.11.1 상품쿠폰 선택불가 처리
+var custCpnSqLiDisabled = function() {
+	// 상품쿠폰 선택불가 처리
+	$(".goodsCpn ul li").each(function(){
+		var custCpnSq = $(this).attr("value");
+		var liObj = $(this);
+		
+		liObj.attr("aria-disabled", false);
+		
+		// 선택된 li 제외
+		if ($(this).hasClass("selected") == false) {
+			// 적용안함 제외
+			if (custCpnSq > 0) {
+				// 선택된 custCpnSq li와 같으면 선택불가처리
+				$(".area_item_coupon input[name=custCpnSq]").each(function(){
+					var inputCustCpSq = $(this).val();
+					if (custCpnSq == inputCustCpSq) {
+						// 선택불가처리
+						liObj.attr("aria-disabled", true);
+					}
+				});
+			}
+		}
+	});
+}
+
+// 1.12 쿠폰중복체크 후 적용불가
+var custCpnNotApply = function(obj) {
+	// 이전에 등록된 쿠폰시퀀스  
+	var custCpnSq = obj.parent().find("input[name='custCpnSq']").val();
+
+	// 이전에 등록된 쿠폰시퀀스 비교후 데이타 원복
+	obj.parent().find("li").each(function(){
+		if ($(this).attr("value") == custCpnSq) {
+			var itemHtml = $(this).find(".item_coupon").html();
+			obj.parent().parent().find(".select .item_coupon").html(itemHtml);
+		}
+	});
+	
+	// 포인트기능 리렛
+	pntDcAmtReset();
+}
+
+// 1.14 선포인트리셋기능 (사용안함)
+var prePntDcAmtReset = function() {
+	var rmPrePntAmt = parseInt($("input[name='rmPrePntAmt']").val());
+	$("input[name='prePntDcAmt']").val(rmPrePntAmt);
+	
+	// 선포인트사용여부 체크 후 적용
+	$("input[name='rdi-beforpoint']").each(function(){
+		// 선포인트 초기 설정 사용함
+		if ($(this).val() == "Y") {
+			$(this).attr("checked", true);
+		}
+		
+		// 버튼기능 구현
+		$(this).on("click", function(){
+			var rmPrePntAmt 		= parseInt($("input[name='rmPrePntAmt']").val());
+			
+			// 선포인트적용
+			if ($(this).val() == "Y") {
+				$("#prePntDcAmt").text("-"+rmPrePntAmt.addComma()+"원");
+			} else {
+				$("#prePntDcAmt").text("0원");
+			}
+			
+			// 쿠폰할인금액 SUM
+			custCpnSumAmtCal();
+		});
+	});
+
+	$("#prePntDcAmt").text("-"+rmPrePntAmt.addComma()+"원");
+	
+	// 포인트기능 리렛
+	pntDcAmtReset();
+}
+
+// 1.15 포인트리셋기능
+var pntDcAmtReset = function() {
+	$(".pntDcSumAmt").text("0");
+	$("input[name='pntDcAmtStr']").val("");
+	$("#pntDcAmt").text("0 원");
+	
+	// 상품권리셋기능
+	gfcdUseAmtReset();
+}
+
+// 1.16 상품권리셋기능
+var gfcdUseAmtReset = function() {
+	$(".gfcdUseSumAmt").text("0");
+	$("input[name='gfcdUseAmtStr']").val("");
+	$("#gfcdUseAmt").text("0 원");
+	
+	// 금액전체계산
+	custCpnSumAmtCal();
+}
+
+// 1.17 쿠폰할인금액합계설정(금액전체계산)
+var custCpnSumAmtCal = function() {
+	var cpnDcSumAmt 		= 0;
+	var cpnApplyCnt 		= 0;
+	var goodsCartCpnSumAmt 	= 0;
+	var cpnType				= "";
+	
+	$("input[name='cpnDcAmt']").each(function(){
+		cpnType = $(this).parent().find("input[name=cpnType]").val();
+		cpnDcSumAmt = cpnDcSumAmt + parseInt($(this).val());
+		
+		// 적용된 쿠폰 수량
+		if (parseInt($(this).val()) > 0) {
+			cpnApplyCnt++;
+		}
+		
+		// 상품, 장바구니쿠폰 할인 금액만 합계 적용
+		if (cpnType == "goodsCpn" || cpnType == "cartCpn") {
+			goodsCartCpnSumAmt = goodsCartCpnSumAmt + parseInt($(this).val());
+		}
+	});
+
+	// 상품, 장바구니쿠폰 할인 금액만 합계 적용
+	if (goodsCartCpnSumAmt > 0) {
+		$(".maxdisc_amount .goodsCartCpnDcAmt").text("-"+goodsCartCpnSumAmt.addComma()); // 쿠폰할인금액합계
+		$(".goodsCartCpnSumAmt").text("-"+goodsCartCpnSumAmt.addComma()); // 쿠폰할인금액합계
+	} else {
+		$(".maxdisc_amount .goodsCartCpnDcAmt").text(goodsCartCpnSumAmt.addComma()); // 쿠폰할인금액합계
+		$(".goodsCartCpnSumAmt").text(goodsCartCpnSumAmt.addComma()); // 쿠폰할인금액합계
+	}
+	
+	// 전체쿠폰 할인 금액 합계 적용
+	if (cpnDcSumAmt > 0) {
+		$(".maxdisc_amount .cpnDcAmt").text("-"+cpnDcSumAmt.addComma()); // 쿠폰할인금액합계
+		$("#couponDcSumAmt").text("-" + cpnDcSumAmt.addComma() + " 원"); // 쿠폰할인금액합계
+	} else {
+		$(".maxdisc_amount .cpnDcAmt").text(cpnDcSumAmt.addComma()); // 쿠폰할인금액합계
+		$("#couponDcSumAmt").text(cpnDcSumAmt.addComma() + " 원"); // 쿠폰할인금액합계
+	}
+
+	$(".cpnDcSumAmt").text(cpnDcSumAmt);
+	
+	var delvSumAmt = orgSumDelvFee;
+	
+	// 배송비할인적용
+	$("input[name='cpnType']").each(function(){
+		if ($(this).val() == "delvCpn") {
+			var delvSumAmt = parseInt(orgSumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val());
+			
+			// 최종배송비
+			$("#delvSumAmt").text(delvSumAmt.addComma() + " 원");
+			$(".delvSumAmt").text(delvSumAmt);
+		}
+	});
+	
+	// 2021.03.06 주문상세 테이블 적용
+	// 포인트금액 상품상세에 포인트금액 분배 작업
+	var prePntDcAmtYn 		= $("input[name='rdi-beforpoint']:checked").val();
+	var leftPntAmt			= parseInt($(".pntDcSumAmt").text());
+	var leftGfcdAmt			= parseInt($(".gfcdUseSumAmt").text());
+	var cartSqLenght		= $(".cartSq").length; 
+	var index				= 1;
+	
+	var orgGoodsSumAmt		= 0;
+	var cpn1DcSumAmt		= 0;
+	var ordSumAmt			= 0;
+	var tmtb1DcSumAmt		= 0;
+	var tmtb2DcSumAmt		= 0;
+	var tmtbDcSumAmt		= 0;
+	var goodsCpnDcSumAmt	= 0;
+	var cartCpnDcSumAmt		= 0;
+	var delvCpnDcSumAmt		= 0;
+	var cpnDcSumAmt			= 0;
+	var prePntDcSumAmt		= 0;
+	var pntDcSumAmt 		= parseInt($(".pntDcSumAmt").text());
+	var gfcdUseSumAmt 		= parseInt($(".gfcdUseSumAmt").text());
+	var realOrdSumAmt		= 0;
+	var savePntSumAmt		= 0;
+	
+	$(".cartSq").each(function(){
+		var orgCurrPrice 	= parseInt($(this).parent().find(".orgCurrPrice").text());
+		var cpn1DcAmt		= parseInt($(this).parent().find(".cpn1DcAmt").text());
+		var optAddPrice 	= parseInt($(this).parent().find(".optAddPrice").text());
+		var goodsQty 		= parseInt($(this).parent().find(".goodsQty").text());
+		var tmtb1DcAmt		= parseInt($(this).parent().find(".tmtb1DcAmt").text());
+		var tmtb2DcAmt		= parseInt($(this).parent().find(".tmtb2DcAmt").text());
+		var goodsCpnDcAmt	= parseInt($(this).parent().find(".goodsCpnDcAmt").text());
+		var cartCpnDcAmt	= parseInt($(this).parent().find(".cartCpnDcAmt").text());
+		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
+		var dcSumAmt		= 0;
+		var savePntAmt1		= parseInt($(this).parent().find(".savePntAmt1").text());
+		
+		// 주문금액 = ((판매가 - 즉시할인가) + 옵션추가금액) * 장바구니수량
+		orgGoodsSumAmt		= orgGoodsSumAmt + (orgCurrPrice + optAddPrice) * goodsQty;
+		cpn1DcSumAmt		= cpn1DcSumAmt + (cpn1DcAmt * goodsQty);
+		tmtb1DcSumAmt		= tmtb1DcSumAmt + tmtb1DcAmt;
+		tmtb2DcSumAmt		= tmtb2DcSumAmt + tmtb2DcAmt;
+		tmtbDcSumAmt		= tmtbDcSumAmt + (tmtb1DcAmt + tmtb2DcAmt);
+		goodsCpnDcSumAmt	= goodsCpnDcSumAmt + goodsCpnDcAmt;
+		cartCpnDcSumAmt		= cartCpnDcSumAmt + cartCpnDcAmt;
+		cpnDcSumAmt			= cpnDcSumAmt + (goodsCpnDcAmt + cartCpnDcAmt);
+		prePntDcSumAmt		= prePntDcSumAmt + prePntDcAmt1;
+		
+		var ordAmt			= ((orgCurrPrice +  - cpn1DcAmt) + optAddPrice) * goodsQty;
+		ordSumAmt			= ordSumAmt + ordAmt;
+		
+		// 선포인트사용여부
+		// 할인금액합계 = 다다익선수량금액 + 다다익선금액금액 + 상품쿠폰금액 + 장바구니금액 + 선포인트금액
+		if (prePntDcAmtYn == "Y") {
+			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt + prePntDcAmt1;
+		} else {
+			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt;
+		}
+		
+		// 주문금액설정
+		$(this).parent().find(".ordAmt").text(ordAmt);
+		$(this).parent().find(".dcSumAmt").text(dcSumAmt);
+		
+		savePntSumAmt		= savePntSumAmt + savePntAmt1;
+	});
+	
+	// 포인트, 상품권 금액 분배
+	$(".cartSq").each(function(){
+		var ordAmt 			= parseInt($(this).parent().find(".ordAmt").text());
+		var dcSumAmt		= parseInt($(this).parent().find(".dcSumAmt").text()); 
+		var tempDiv 		= parseInt((ordAmt / ordSumAmt) * 100);
+		var pntDcAmt1 		= 0;
+		var gfcdUseAmt1		= 0;
+		
+		if (index == cartSqLenght) {
+			pntDcAmt1 		= leftPntAmt;
+			gfcdUseAmt1		= leftGfcdAmt;
+		} else {
+			pntDcAmt1 		= parseInt((pntDcSumAmt * tempDiv) / 100);
+			gfcdUseAmt1		= parseInt((gfcdUseSumAmt * tempDiv) / 100);
+			leftPntAmt		= leftPntAmt - pntDcAmt1;
+			leftGfcdAmt		= leftGfcdAmt - gfcdUseAmt1;
+		}
+		
+		var realOrdAmt1		= ordAmt - dcSumAmt - (pntDcAmt1 - gfcdUseAmt1);
+		realOrdSumAmt		= realOrdSumAmt + realOrdAmt1;
+		
+		$(this).parent().find(".pntDcAmt1").text(pntDcAmt1);
+		$(this).parent().find(".gfcdUseAmt1").text(gfcdUseAmt1);
+		$(this).parent().find(".realOrdAmt1").text(realOrdAmt1);
+		
+		index++;
+	});
+	
+	realOrdSumAmt = realOrdSumAmt + delvSumAmt;
+	
+	$(".orgGoodsSumAmt").text(orgGoodsSumAmt);
+	$(".cpn1DcSumAmt").text(cpn1DcSumAmt);
+	$(".ordSumAmt").text(ordSumAmt);
+	$(".tmtb1DcSumAmt").text(tmtb1DcSumAmt);
+	$(".tmtb2DcSumAmt").text(tmtb2DcSumAmt);
+	$(".tmtbDcSumAmt").text(tmtbDcSumAmt);
+	$(".goodsCpnDcSumAmt").text(goodsCpnDcSumAmt);
+	$(".cartCpnDcSumAmt").text(cartCpnDcSumAmt);
+	$(".cpnDcSumAmt").text(cpnDcSumAmt);
+	$(".prePntDcSumAmt").text(prePntDcSumAmt);
+	$(".realOrdSumAmt").text(realOrdSumAmt);
+	$(".savePntSumAmt").text(savePntSumAmt);
+	
+	$("#realOrdAmt").text(realOrdSumAmt.addComma()); // 총 결제 예정 금액
+	$(".realOrdAmt").text(realOrdSumAmt.addComma() + " 원"); // 총 결제 예정 금액
+	
+	var tempSavePnt			= savePntSumAmt - prePntDcAmt;
+	
+	// 사은품사용 후 보유포인트	
+	var rmPntAmt 			= parseInt($("input[name='rmPntAmt']").val());
+	var freegiftUsePnt 		= parseInt($(".freegiftUsePnt").text());
+	rmPntAmt 				= rmPntAmt - freegiftUsePnt; 
+	$(".rmPntAmt").text(rmPntAmt.addComma());
+	
+	// 걸제영역
+	//$("#btn_payment").text("동의 후 "+realOrdSumAmt.addComma()+" 원 결제하기");
+	
+	// 적립포인트
+	$("#savePntSumAmt").text(savePntSumAmt.addComma()+" P");
+	
+	// 사은품정보 설정
+	var freegiftValArr 			= [];
+	var freegiftUsePointArr 	= [];
+		
+	$(".gift_box").each(function(){
+		$(this).find(".freegiftRdo").each(function(){
+			// 사은품필수
+			if ($(this).attr("allYn") == "Y" ) {
+				freegiftValArr.push($(this).val());
+				freegiftUsePointArr.push($(this).attr("usepoint"));
+			}
+			
+			// 라디오버튼 선택 사은품 체크
+			if ($(this).is(":checked")) {
+				// 수령거부가 아닐때 체크
+				if ($(this).val() != "noSel") {
+					freegiftValArr.push($(this).val());
+					freegiftUsePointArr.push($(this).attr("usepoint"));
+				}
+			}
+		});
+	});
+	
+	$(".freegiftValArr").text(freegiftValArr);				// 사은품시퀀스배열
+	$(".freegiftUsePointArr").text(freegiftUsePointArr);	// 사은품사용포인트배열
+};
+
+// 1.18 배송지정보 설정
+var delvAddrSet = function(delvObj) {
+	
+	var rtnStr = "";
+	rtnStr += "| recipNm 			::: " + delvObj.recipNm;
+	rtnStr += "| recipPhnno 		::: " + delvObj.recipPhnno;
+	rtnStr += "| recipZipcode 		::: " + delvObj.recipZipcode;
+	rtnStr += "| recipBaseAddr 		::: " + delvObj.recipBaseAddr;
+	rtnStr += "| recipDtlAddr 		::: " + delvObj.recipDtlAddr;
+	rtnStr += "| delvMemo 			::: " + delvObj.delvMemo;
+	
+	// 배송지정보로드실행
+	deliveryAddrInfoSet(delvObj, false);
+}
+
+// 1.19 배송메모설정
+var delvMemoSet = function(delvMemoObj) {
+	
+	var rtnStr = "";
+	rtnStr += "| delvMemo 			::: " + delvMemoObj.delvMemo;
+	
+	$("#orderForm input[name=delvMemo]").val(delvMemoObj.delvMemo);		// input 값에 설정
+	$("#delvMemo").text(delvMemoObj.delvMemo);							// 메모 text 설정
+	$(".delvMemo").text(delvMemoObj.delvMemo);							// 메모 text 설정
+}
+</script>
+
+<script th:inline="javascript">
+
+$(document).ready( function() {
+	//해외배송 입력
+	$(document).on('change','.odPayment .area_overseas #rdi-overs1',function(e){
+		$('.info_box.overs2').hide();
+		$('.info_box.overs1').show();
+		return false;
+	}).on('change','.odPayment .area_overseas #rdi-overs2',function(e){
+		$('.info_box.overs1').hide();
+		$('.info_box.overs2').show();
+		return false;
+	});
+
+	//할인쿠폰 확인
+	$(document).on('click','.odPayment .area_seldiscount .btn_coupon_toggle',function(e){
+		$('.coupon_list').toggle();
+		$(this).toggleClass('on');
+		return false;
+	});
+
+	//결제수단 선택
+	$(document).on('change','.odPayment .area_paymethod .paymethod_radio input',function(e){
+		$('.radio_blk').removeClass('on');
+		$(this).parents('.radio_blk').addClass('on');
+		$(this).parents('.radio_blk').find('.paymethod_box').show();
+		$(this).parents('.radio_blk').siblings('div').find('.paymethod_box').hide();
+
+		var paymethodlabel =  $(this).prop('labels');
+		$(this).parents('li').find('.fold_head .data span').text($(paymethodlabel).text());
+
+		//간편결제 카드추가 슬라이드
+		var swiper = new Swiper('.paymethod_box .card_quickpay .list_card.swiper-container', {
+			slidesPerView: 'auto',
+			spaceBetween: 160,
+			centeredSlides: true,
+			navigation: {
+				nextEl: '.list_card .swiper-button-next',
+				prevEl: '.list_card .swiper-button-prev',
+			},
+		});
+		return false;
+	});
+
+	//STYLE24 간편결제 배너닫기
+	$(document).on('click','.odPayment .area_paymethod .quickpay_bnr .btn_close_bnr',function(e){
+		$('.quickpay_bnr').hide();
+	});
+
+	//결제수단 선택 > 즐겨찾기 추가시 
+	$(document).on('click','.odPayment .area_paymethod .paymethod_box .card .etc .btn_favorcard',function(e){
+		$(this).toggleClass('active');
+		return false;
+	});
+
+	//결제수단 > 일반결제> 실시간계좌이체 선택시            
+	$(document).on('change','.odPayment input:radio[name=rdi-paynormal]',function(e){
+		var paynormalValue = $(this).attr('id');
+		if (paynormalValue == 'rdi-paynormal2') {
+			$('.area_paymethod .agree_insurance').show();
+		} else {
+			$('.area_paymethod .agree_insurance').hide();
+		}
+		return false;
+	});
+
+	// 개인정보동의 열고닫기
+	$(document).on('click','.area_paymentinfo .payinfo_blk a',function(e){
+		e.preventDefault();
+		$(this).parents('.payinfo_blk').toggleClass('on');
+		var privacyToggle = $(this).find('span');
+		$(privacyToggle).text($(privacyToggle).text() == '보기' ? '닫기' : '보기');
+		return false;
+	});
+
+	//배송지수정 팝업열기
+	$(document).on('click','#btn_addrModify_pop',function(e){
+		$("#adrsModifyPop").modal("show");
+		return false;
+	});
+
+	//배송요청사항 팝업열기
+	$(document).on('click','#btn_rqstModify_pop',function(e){
+		$("#rqstModifyPop").modal("show");
+		return false;
+	});
+
+	//사은품지급안내 팝업열기
+	$(document).on('click','#btn_infoGift_pop',function(e){
+		$("#infoGiftPop").modal("show");
+		return false;
+	});
+
+	//간편결제등록 > STEP1.이용약관 팝업열기
+	$(document).on('click','.btn_addcard',function(e){
+		$("#qPayAgree_pop").modal("show");
+		return false;
+	});
+
+	//간편결제등록 > STEP1.이용약관 체크
+	$(document).on('click','.area_QpayCk .agr_select button',function(e){
+		$(this).parents('.area_QpayCk').find('.info_agrQpay').toggle();
+		var payagrToggle = $(this).find('span');
+		$(payagrToggle).text($(payagrToggle).text() == '약관열기' ? '약관닫기' : '약관열기');
+		return false;
+	});
+
+	//간편결제등록 > STEP1.이용약관 체크박스 전체선택
+	$(document).on('click','#chk-Qpay-agrAll',function(e){
+		$(this).parents(".qPayAgree_pop").find('.agree_Qpay input').prop("checked", $(this).is(":checked"));
+	});
+
+	//간편결제등록 > STEP1.이용약관 체크박스 개별선택
+	$(document).on("click", ".agree_Qpay input",function(e){
+		var is_checked = true;
+		$(".agree_Qpay input").each(function(){
+			is_checked = is_checked && $(this).is(":checked");
+		});
+		$("#chk-Qpay-agrAll").prop("checked", is_checked);
+	});
+
+	//간편결제등록 > 본인인증 팝업열기
+	$(document).on('click','#btn_qPayidConfirm_pop',function(e){
+		$("#qPayidConfirm_pop").modal("show");
+		return false;
+	});
+});
+
+// PG 카카오페이 결제준비 처리
+var fnKakaoPaymentReady = function() {
+	let nextRedirectUrl = $('#order_info input[name=nextRedirectPcUrl]').val();
+	let option = 'width=420, height=520';
+	
+	window.open(nextRedirectUrl, 'kakaoPaymentPopup', option);
+}
+
+// PG 카카오페이 결제 승인 요청
+var fnKakaoPaymentRequest = function(pgToken) {
+	// Token 값 설정
+	$('#order_info input[name=pgToken]').val(pgToken);
+	
+	// Form Submit
+	document.order_info.submit();
+	
+	return true;
+}
+
+// PG 네이버페이 결제준비 처리
+var fnNaverPaymentReady = function() {
+	let naverPayUrl = 'https://' + [[${@environment.getProperty('naverPay.payUrl.web')}]];
+	let reserveId = $('#order_info input[name=reserveId]').val();
+	let url = naverPayUrl + '/payments/' + reserveId;
+	let option = 'width=750, height=' + $(window).height();
+	
+	window.open(url, 'naverPaymentPopup', option);
+}
+
+// PG 네이버페이 결제 승인 요청
+var fnNaverPaymentRequest = function(paymentId) {
+	// TID 설정
+	$('#order_info input[name=pgTid]').val(paymentId);
+
+	// Form Submit
+	document.order_info.submit();
+
+	return true;
+}
+</script>
+
+</th:block>
+</body>
+</html>

+ 225 - 0
src/main/webapp/WEB-INF/views/mob/order/OrderNoMemberMob.html

@@ -0,0 +1,225 @@
+<!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/SubLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : OrderNoMemberMob.html
+ * @desc    : 비회원 주문/결제 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.04   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+
+<!-- 회원 -->
+<th:block th:if="${isLogin}">
+	<form class="form_wrap form_col_c form_full" id="nomemberForm" th:action="@{'/order/form'}" th:method="post">
+		<input type="hidden" name="shotDelvUseYn" th:value="${order.shotDelvUseYn}" />
+		<th:block th:each="cartSq , index : ${order.cartSqArr}">
+			<input type="hidden" name="cartSqArr" th:value="${cartSq}" />
+		</th:block>
+		<script>$("#nomemberForm").submit();</script>
+	</form>
+</th:block>
+<!-- //회원 -->
+
+<!-- 비회원 -->
+<th:block th:if="${!isLogin}">
+	<main role="" id="" class="container od">
+		<section class="content nonMBorder">
+			<div class="inner">
+				<div class="nonMBorder_tit">
+					<div class="text_box">
+						<p>비회원 주문을 위한 주문자 정보 입력 및<br>개인정보 수집/이용 동의에 체크하신 후 주문을<br>완료하실 수 있습니다.</p>
+					</div>
+				</div>
+				
+				<form class="form_wrap form_full" id="orderForm" th:action="@{'/order/form'}" th:method="post">
+					<input type="hidden" name="shotDelvUseYn" th:value="${order.shotDelvUseYn}" />
+					<th:block th:each="cartSq , index : ${order.cartSqArr}">
+						<input type="hidden" name="cartSqArr" th:value="${cartSq}" />
+					</th:block>
+						
+					<div class="form_field">
+						<label class="input_label sr-only">이름(주문자명)</label>
+						<div class="input_wrap"> 
+							<input type="text" class="form_control" name="custNm" placeholder="이름(주문자명)" >
+						</div>
+					</div>
+					
+					<div class="form_field">
+						<label class="input_label sr-only">휴대폰 번호</label>
+						<div class="input_wrap"> 
+							<input type="text" class="form_control" name="cellPhnno" placeholder="휴대폰 번호" onfocus="this.blur();" readonly="readonly">
+						</div>
+					</div>
+					<div class="form_field">
+						<label class="input_label sr-only">이메일주소</label>
+						<div class="input_wrap"> 
+							<input type="text" class="form_control" name="email" placeholder="이메일주소">
+						</div>
+					</div>	
+					<div class="form_field">
+						<label class="input_label sr-only">배송주소</label>
+						<div class="input_wrap">
+							<input type="hidden" class="form_control" name="recipZipcode" placeholder="우편번호" readonly="readonly" value="">
+							<input type="hidden" class="form_control" name="recipBaseAddr" placeholder="기본주소" readonly="readonly" value="">
+							<input type="text" class="form_control" name="recipAddr" placeholder="배송주소" readonly="readonly">
+							<button type="button" class="btn btn_addr_sch" onclick="fnOpenDaumAddr();">
+								<span class="sr-only">우편번호 찾기</span>
+							</button>
+						</div>
+					</div>
+					<div class="form_field">
+						<label class="input_label sr-only">상세주소</label>
+						<div class="input_wrap"> 
+							<input type="text" class="form_control" name="recipDtlAddr" placeholder="상세주소">
+						</div>
+					</div>
+					<div class="form_field">
+						<div class="agree_nomb_txt_box">
+							<div class="agree_nombPrivacy">
+								<input id="chk-nombPrivacy-agr" type="checkbox" checked="">
+								<label for="chk-nombPrivacy-agr"><span>비회원 개인정보 수집&#47;이용 동의&nbsp;&nbsp;<em class="tmark_required">(필수)</em></span></label>
+							</div>
+							<div>
+								(1) "iSTYLE24"는 비회원 주문의 경우에도 배송, 대금결제, 주문내역 조회 및 구매확인, 실명여부 확인을 위하여 필요한 개인정보만을 요청하고 있으며, 이 경우 그 정보는 대금결제 및 상품의 배송에 관련된 용도 이외에는 다른 어떠한 용도로도 사용되지 않습니다.<br>
+								(2) 비회원의 개인정보 수집/이용 목적 및 항목<br>
+								① 성명<br>
+								② 원활한 구매/판매 진행, 본인의사의 확인, 불만 및 분쟁처리, 고지 및 정보 안내 등 : 전화번호, 이동전화번호, e-mail<br>
+								③ 대금결제서비스의 제공 등 : 은행계좌정보, 신용카드정보<br>
+								④ 상품, 경품배송 : 주소, 전화번호, e-mail<br>
+								⑤ 부정 이용방지, 전자금융거래기록보관 : IP address, 방문일시<br>
+								(3) 비회원 서비스 이용의 경우에는 회원 서비스 내용을 제외한 "iSTYLE24" 개인정보 처리방침의 모든 내용이 동일하게 적용됩니다.<br>
+								(4) "iSTYLE24"는 회원의 개인정보와 동일한 수준으로 비회원의 개인정보를 보호합니다.
+							</div>
+						</div>
+					</div>
+					<div class="btn_group btn_group_flex">
+						<div><button type="button" class="btn btn_default btn_block" id="btn_cancel"><span>취소</span></button></div>
+						<div><button type="button" class="btn btn_dark btn_block" id="btn_order"><span>주문하기</span></button></div>
+					</div>
+				</form>
+			</div>
+			<div class="inner wide bg_beige">
+				<div class="join_txt">
+					<p><span>STYLE24에 회원가입</span>을 하시면<br>더 많은 혜택을 받으실 수 있습니다.</p>
+					<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);" id="btn_join_member">회원가입</a>
+				</div>
+			</div>
+		</section>
+	</main>
+</th:block>
+<!-- 비회원 -->
+
+
+<script th:inline="javascript">
+// 컨텐츠 호출
+$(document).ready( function() {
+	// 1. 타이틀설정
+	$("#htopTitle").text("비회원 주문하기");
+});
+	
+// 주문하기버튼
+$("#btn_order").on("click", function() {
+	/*
+	// TODO 유효성 체크 추가
+	if (gagajf.isNull($("#orderForm input[name=custNm]").val())) {
+		mcxDialog.alert("이름을 입력해주세요.");
+		$('#orderForm input[name=custNm]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderForm input[name=cellPhnno]").val())) {
+		mcxDialog.alert("본인인증을 완료해 주세요.");
+		$('#orderForm input[name=cellPhnno]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderForm input[name=email]").val())) {
+		mcxDialog.alert("이메일을 입력해주세요.");
+		$('#orderForm input[name=email]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderForm input[name=email]").val())) {
+		mcxDialog.alert("이메일 주소를 다시 확인해주세요.");
+		$('#orderForm input[name=email]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderForm input[name=recipZipcode]").val())) {
+		mcxDialog.alert("배송주소를 입력해주세요.");
+		$('#orderForm input[name=recipAddr]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderForm input[name=recipBaseAddr]").val())) {
+		mcxDialog.alert("배송주소를 입력해주세요.");
+		$('#orderForm input[name=recipAddr]').focus();
+		return false;
+	}
+	
+	if (gagajf.isNull($("#orderForm input[name=recipDtlAddr]").val())) {
+		mcxDialog.alert("상세주소를 입력해주세요.");
+		$('#orderForm input[name=recipDtlAddr]').focus();
+		return false;
+	}
+	
+	if (!$("#chk-nombPrivacy-agr").is(":checked")) {
+		mcxDialog.alert("비회원 개인정보 수집 이용에 동의해주세요.");
+		return false;
+	}
+	*/
+	
+	// 주문서전송
+	$("#orderForm").submit();
+});
+
+// 나이스 본인인증 후 콜백
+var fnNiceCallBack = function(encData) {
+	if (!gagajf.isNull(encData)) {
+		let custInfo 		= {};
+		custInfo.encData 	= encData;
+		let jsonData 		= JSON.stringify(custInfo);
+		gagajf.ajaxJsonSubmit('/order/customer/auth', jsonData, fnUpdateAuthInfoCallback);
+	}
+};
+	
+// 고객정보 데이터
+var fnUpdateAuthInfoCallback = function (result) {
+	// 인정후처리
+	$("#orderForm .beforeAuth").hide();
+	$("#orderForm .afterAuth").show();
+	
+	$('#orderForm input[name=custNm]').val(result.sName);
+	$('#orderForm input[name=cellPhnno]').val(result.sMobileNo);
+}
+
+// 우편번호 DAUM을 이용한 우편번호 팝업 레이어
+var fnOpenDaumAddr = function() {
+	
+	$("body").css("overflow", "hidden");
+	
+	let daumZip = new daum.Postcode({
+		oncomplete: function(data) {
+			$("#orderForm input[name=recipAddr]").val(data.zonecode + '    ' + cfnGetDaumRoadAddr(data));
+			$('#orderForm input[name=recipZipcode]').val(data.zonecode);
+			$('#orderForm input[name=recipBaseAddr]').val(cfnGetDaumRoadAddr(data));
+			$('#orderForm input[name=recipDtlAddr]').focus();
+			cfnCloseDaumAddr();
+		},
+		width: '100%'
+	});
+	cfnOpenDaumAddr(daumZip);
+}
+</script>
+
+</th:block>
+</body>
+</html>

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

@@ -23,14 +23,14 @@
 		<div class="breadcrumb">
 			<ul>
 				<li class="bread_home"><a href="index.html">홈</a></li>
-				<li class="bread_2depth">여성</li>
+				<li class="bread_2depth" id="navNm">여성</li>
 			</ul>
 		</div>
 		<div class="wrap">
 			<div class="content dp_list"> <!-- 페이지특정 클래스 = dp_list -->
 				<div class="cont_head">
 					<div>
-						<h3>여성</h3>
+						<h3 id="formTitle"></h3>
 					</div>
 				</div>
 				<div class="lnb">
@@ -39,76 +39,7 @@
 					</div>
 					<div class="lnb_category">
 						<ul class="category" id="ulAllCate">
-							<!--<li>
-								<a href="javascript:;">전체</a>
-							</li>
-							<li>
-								<a href="javascript:;">여성</a>
-								&lt;!&ndash; 2뎁스 &ndash;&gt;
-								<div class="sub_cate">
-									<ul>
-										<li><a href="javascript:;">원피스</a></li>
-										<li>
-											<a href="javascript:;">니트/가디건/베스트</a>
-											<div class="sub_cate">
-												<ul>
-													<li><a href="javascript:;">티셔츠/셔츠01</a></li>
-													<li><a href="javascript:;">니트/가디건/베스트01</a></li>
-													<li><a href="javascript:;">팬츠/레깅스01</a></li>
-												</ul>
-											</div>
-										</li>
-										<li>
-											<a href="javascript:;">팬츠/레깅스</a>
-											&lt;!&ndash; 3뎁스 &ndash;&gt;
-											<div class="sub_cate">
-												<ul>
-													<li>
-														<a href="javascript:;">티셔츠/셔츠02</a>
-														&lt;!&ndash; 4뎁스 &ndash;&gt;
-														<div class="sub_cate">
-															<ul>
-																<li><a href="javascript:;">티셔츠/셔츠03</a></li>
-																<li><a href="javascript:;">니트/가디건/베스트03</a></li>
-																<li><a href="javascript:;">팬츠/레깅스03</a></li>
-															</ul>
-														</div>
-													</li>
-													<li><a href="javascript:;">니트/가디건/베스트02</a></li>
-													<li><a href="javascript:;">팬츠/레깅스02</a></li>
-												</ul>
-											</div>
-										</li>
-									</ul>
-								</div>
-							</li>
-							<li>
-								<a href="javascript:;">남성</a>
-								<div class="sub_cate">
-									<ul>
-										<li><a href="javascript:;">티셔츠/셔츠</a></li>
-										<li><a href="javascript:;">트레이닝/스포츠</a></li>
-										<li><a href="javascript:;">언더웨어</a></li>
-									</ul>
-								</div>
-							</li>
-							<li>
-								<a href="javascript:;">유아동</a>
-								<div class="sub_cate">
-									<ul>
-										<li><a href="javascript:;">티셔츠/셔츠</a></li>
-										<li><a href="javascript:;">언더웨어</a></li>
-									</ul>
-								</div>
-							</li>
-							<li>
-								<a href="javascript:;">라이프</a>
-								<div class="sub_cate">
-									<ul>
-										<li><a href="javascript:;">잡화</a></li>
-									</ul>
-								</div>
-							</li>-->
+
 						</ul>
 					</div>
 				</div>
@@ -117,25 +48,25 @@
 						<div class="filter_list">
 							<!-- 1depth -->
 							<ul>
-								<li data-id="tap02">
+								<li data-id="tap02" th:if="${filterBrandList!=null and !filterBrandList.empty}">
 									<a href="javascript:void(0)">브랜드</a>
 								</li>
-								<li data-id="tap03">
+								<li data-id="tap03" th:if="${filterSizeList!=null and !filterSizeList.empty}">
 									<a href="javascript:void(0)">사이즈</a>
 								</li>
-								<li data-id="tap04">
+								<li data-id="tap04" th:if="${filterPriceList!=null and !filterPriceList.empty}">
 									<a href="javascript:void(0)">가격</a>
 								</li>
 								<li data-id="tap05">
 									<a href="javascript:void(0)">할인율</a>
 								</li>
-								<li data-id="tap06">
+								<li data-id="tap06" th:if="${filterAgeList!=null and !filterAgeList.empty}">
 									<a href="javascript:void(0)">연령</a>
 								</li>
-								<li data-id="tap07">
+								<li data-id="tap07" th:if="${filterSeasonList!=null and !filterSeasonList.empty}">
 									<a href="javascript:void(0)">시즌</a>
 								</li>
-								<li data-id="tap08">
+								<li data-id="tap08" th:if="${filterColorList!=null and !filterColorList.empty}">
 									<a href="javascript:void(0)">컬러</a>
 								</li>
 								<li data-id="tap09">
@@ -153,254 +84,45 @@
 						</div>
 						<div class="filter_content">
 							<!-- 브랜드 -->
-							<div class="sort tap02">
+							<div class="sort tap02" th:if="${filterBrandList!=null and !filterBrandList.empty}">
 								<ul>
+									<th:block th:each="filterBrandData, filterBrandStat : ${filterBrandList}">
 									<li>
 										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand00" data-name="chkFilterBrand00" name="filterBrandCds" value=""><span>모이몰른</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand01" data-name="chkFilterBrand01" name="filterBrandCds" value=""><span>컬리수</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand02" data-name="chkFilterBrand02" name="filterBrandCds" value=""><span>NBA</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand03" data-name="chkFilterBrand03" name="filterBrandCds" value=""><span>밀크마일</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand04" data-name="chkFilterBrand04" name="filterBrandCds" value=""><span>ANDEW</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand05" data-name="chkFilterBrand05" name="filterBrandCds" value=""><span>nba Kid's</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand06" data-name="chkFilterBrand06" name="filterBrandCds" value=""><span>몰리멜리</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand07" data-name="chkFilterBrand07" name="filterBrandCds" value=""><span>ab.plus</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand08" data-name="chkFilterBrand08" name="filterBrandCds" value=""><span>milkmile</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand09" data-name="chkFilterBrand09" name="filterBrandCds" value=""><span>버커루</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand10" data-name="chkFilterBrand10" name="filterBrandCds" value=""><span>BUCKAROO</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand11" data-name="chkFilterBrand11" name="filterBrandCds" value=""><span>sellys</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand12" data-name="chkFilterBrand12" name="filterBrandCds" value=""><span>올리비에스클로젯</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand13" data-name="chkFilterBrand13" name="filterBrandCds" value=""><span>FRJ</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand14" data-name="chkFilterBrand14" name="filterBrandCds" value=""><span>Olivier's CLOSET</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand15" data-name="chkFilterBrand15" name="filterBrandCds" value=""><span>지오지아</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand16" data-name="chkFilterBrand16" name="filterBrandCds" value=""><span>LPGA</span>
-										</label>
-									</li>
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBrand17" data-name="chkFilterBrand17" name="filterBrandCds" value=""><span>TRUZEN</span>
+											<input type="checkbox" group="filterValue" th:id="${'chkFilterBrand'+filterBrandStat.count}" name="filterBrandCds" th:value="${filterBrandData.brandGroupNo}"><span th:text="${filterBrandData.brandGroupNm}"></span>
 										</label>
 									</li>
+									</th:block>
 								</ul>
 								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 							</div>
 							<!-- //브랜드 -->
 							<!-- 사이즈 -->
-							<div class="sort tap03">
+							<div class="sort tap03" th:if="${filterSizeList!=null and !filterSizeList.empty}">
 								<ul>
 									<li>
 										<strong>상의</strong>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize01" data-name="chkFilterSize01" name="filterSizeCds" value=""><span>80</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize02" data-name="chkFilterSize02" name="filterSizeCds" value=""><span>85</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize03" data-name="chkFilterSize03" name="filterSizeCds" value=""><span>90</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize04" data-name="chkFilterSize04" name="filterSizeCds" value=""><span>95</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize05" data-name="chkFilterSize05" name="filterSizeCds" value=""><span>100</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize06" data-name="chkFilterSize06" name="filterSizeCds" value=""><span>105</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize07" data-name="chkFilterSize07" name="filterSizeCds" value=""><span>110</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize08" data-name="chkFilterSize08" name="filterSizeCds" value=""><span>115</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize09" data-name="chkFilterSize09" name="filterSizeCds" value=""><span>S</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize10" data-name="chkFilterSize10" name="filterSizeCds" value=""><span>M</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize11" data-name="chkFilterSize11" name="filterSizeCds" value=""><span>L</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize12" data-name="chkFilterSize12" name="filterSizeCds" value=""><span>XL</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize13" data-name="chkFilterSize13" name="filterSizeCds" value=""><span>FREE</span>
-										</label>
+										<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.sizeGb == 'T'}">
+											<label class="size_btn" onclick="filterSel();">
+												<input type="checkbox" group="filterValue" th:id="${'chkFilterTSize'+filterSizeStat.count}" name="filterSizeCds" th:vale="${filterSizeData.optCd2}"><span th:text="${filterSizeData.optCd2}">80</span>
+											</label>
+										</th:block>
 									</li>
 									<li>
 										<strong>하의</strong>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize14" data-name="chkFilterSize14" name="filterSizeCds" value=""><span>44</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize15" data-name="chkFilterSize15" name="filterSizeCds" value=""><span>55</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize16" data-name="chkFilterSize16" name="filterSizeCds" value=""><span>66</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize17" data-name="chkFilterSize17" name="filterSizeCds" value=""><span>77</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize18" data-name="chkFilterSize18" name="filterSizeCds" value=""><span>26</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize19" data-name="chkFilterSize19" name="filterSizeCds" value=""><span>27</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize20" data-name="chkFilterSize20" name="filterSizeCds" value=""><span>28</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize21" data-name="chkFilterSize21" name="filterSizeCds" value=""><span>29</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize22" data-name="chkFilterSize22" name="filterSizeCds" value=""><span>30</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize23" data-name="chkFilterSize23" name="filterSizeCds" value=""><span>32</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize24" data-name="chkFilterSize24" name="filterSizeCds" value=""><span>33</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize25" data-name="chkFilterSize25" name="filterSizeCds" value=""><span>34</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize26" data-name="chkFilterSize26" name="filterSizeCds" value=""><span>M</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize27" data-name="chkFilterSize27" name="filterSizeCds" value=""><span>L</span>
-										</label>
+										<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.sizeGb == 'B'}">
+											<label class="size_btn" onclick="filterSel();">
+												<input type="checkbox" group="filterValue" th:id="${'chkFilterBSize'+filterSizeStat.count}" name="filterSizeCds" th:vale="${filterSizeData.optCd2}"><span th:text="${filterSizeData.optCd2}">80</span>
+											</label>
+										</th:block>
 									</li>
 									<li>
 										<strong>신발</strong>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize28" data-name="chkFilterSize28" name="filterSizeCds" value=""><span>120</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize29" data-name="chkFilterSize29" name="filterSizeCds" value=""><span>130</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize30" data-name="chkFilterSize30" name="filterSizeCds" value=""><span>140</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize31" data-name="chkFilterSize31" name="filterSizeCds" value=""><span>150</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize32" data-name="chkFilterSize32" name="filterSizeCds" value=""><span>140</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize33" data-name="chkFilterSize33" name="filterSizeCds" value=""><span>150</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize34" data-name="chkFilterSize34" name="filterSizeCds" value=""><span>220</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize35" data-name="chkFilterSize35" name="filterSizeCds" value=""><span>230</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize36" data-name="chkFilterSize36" name="filterSizeCds" value=""><span>235</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize37" data-name="chkFilterSize37" name="filterSizeCds" value=""><span>240</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize38" data-name="chkFilterSize38" name="filterSizeCds" value=""><span>245</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize39" data-name="chkFilterSize39" name="filterSizeCds" value=""><span>250</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize40" data-name="chkFilterSize40" name="filterSizeCds" value=""><span>255</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize41" data-name="chkFilterSize41" name="filterSizeCds" value=""><span>260</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize42" data-name="chkFilterSize42" name="filterSizeCds" value=""><span>265</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize43" data-name="chkFilterSize43" name="filterSizeCds" value=""><span>270</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize44" data-name="chkFilterSize44" name="filterSizeCds" value=""><span>275</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize45" data-name="chkFilterSize45" name="filterSizeCds" value=""><span>280</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize46" data-name="chkFilterSize46" name="filterSizeCds" value=""><span>285</span>
-										</label>
-										<label class="size_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSize47" data-name="chkFilterSize47" name="filterSizeCds" value=""><span>290</span>
-										</label>
+										<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.sizeGb == 'S'}">
+											<label class="size_btn" onclick="filterSel();">
+												<input type="checkbox" group="filterValue" th:id="${'chkFilterSSize'+filterSizeStat.count}" name="filterSizeCds" th:vale="${filterSizeData.optCd2}"><span th:text="${filterSizeData.optCd2}">80</span>
+											</label>
+										</th:block>
 									</li>
 								</ul>
 								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
@@ -435,189 +157,59 @@
 							</div>
 							<!-- //할인율 -->
 							<!-- 연령 -->
-							<div class="sort tap06">
+							<div class="sort tap06" th:if="${filterAgeList!=null and !filterAgeList.empty}">
 								<ul>
-									<li>
-										<label class="Age_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterAge00" data-name="chkFilterAge00" name="filterAgeCds" value=""><span>베이비(0~18개월)</span>
-										</label>
-									</li>
-									<li>
-										<label class="Age_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterAge00" data-name="chkFilterAge00" name="filterAgeCds" value=""><span>토들러(18~36개월)</span>
-										</label>
-									</li>
-									<li>
-										<label class="Age_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterAge00" data-name="chkFilterAge00" name="filterAgeCds" value=""><span>키즈(4~7세)</span>
-										</label>
-									</li>
-									<li>
-										<label class="Age_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterAge00" data-name="chkFilterAge00" name="filterAgeCds" value=""><span>주니어(7~13세)</span>
-										</label>
-									</li>
+									<th:block th:each="filterAgeData, filterAgeStat : ${filterAgeList}">
+										<li>
+											<label class="Age_btn" onclick="filterSel();">
+												<input type="checkbox" group="filterValue" th:id="${'chkFilterAge'+filterAgeStat.count}" name="filterAgeCds" th:value="${filterAgeData.agesCd}"><span th:text="${filterAgeData.agesNm}">베이비(0~18개월)</span>
+											</label>
+										</li>
+									</th:block>
 								</ul>
 								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 							</div>
 							<!-- //연령 -->
 							<!-- 시즌 -->
-							<div class="sort tap07">
+							<div class="sort tap07" th:if="${filterSeasonList!=null and !filterSeasonList.empty}">
 								<ul>
-									<li>
-										<label class="Season_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSeason00" data-name="chkFilterSeason00" name="filterSeasonCds" value=""><span>봄</span>
-										</label>
-									</li>
-									<li>
-										<label class="Season_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSeason00" data-name="chkFilterSeason00" name="filterSeasonCds" value=""><span>여름</span>
-										</label>
-									</li>
-									<li>
-										<label class="Season_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSeason00" data-name="chkFilterSeason00" name="filterSeasonCds" value=""><span>가을</span>
-										</label>
-									</li>
-									<li>
-										<label class="Season_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterSeason00" data-name="chkFilterSeason00" name="filterSeasonCds" value=""><span>겨울</span>
-										</label>
-									</li>
+									<th:block th:each="filterSeasonData, filterSeasonStat : ${filterSeasonList}">
+										<li>
+											<label class="Season_btn" onclick="filterSel();">
+												<input type="checkbox" group="filterValue"  th:id="${'chkFilterSeason'+filterAgeStat.count}" name="filterSeasonCds" th:value="${filterSeasonData.seasonCd}"><span th:text="${filterSeasonData.seasonNm}">봄</span>
+											</label>
+										</li>
+									</th:block>
 								</ul>
 								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 							</div>
 							<!-- //시즌 -->
 							<!-- 컬러 -->
-							<div class="sort tap08">
+							<div class="sort tap08" th:if="${filterColorList!=null and !filterColorList.empty}">
 								<ul>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color01"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color02"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color03"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color04"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color05"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color06"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color07"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color08"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color09"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color10"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color11"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color12"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color13"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color14"></span>
-										</label>
-									</li>
-									<li>
-										<label class="color-check" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterColor0" data-name="chkFilterColor0" name="filterColorCds" value="DM^BEIGE^color35,E1^BEIGE^color35,T3^BEIGE^color35,VM^BEIGE^color35" filtervalue="">
-											<span class="pdColor-color15"></span>
-										</label>
-									</li>
+									<th:block th:each="filterColorData, filterColorStat : ${filterColorList}">
+										<li>
+											<label class="color-check" onclick="filterSel();">
+												<input type="checkbox" group="filterValue" th:id="${'chkFilterColor'+filterColorStat.count}" name="filterColorCds" th:value="${filterColorData.colorChip}" >
+												<span class="pdColor-color" th:if="${filterColorData.colorChip=='#FFFFFF'}" th:style="${'background-color:'+filterColorData.colorChip+';'+' border:1px solid #aaa;'}"></span>
+												<span class="pdColor-color" th:if="${filterColorData.colorChip!='#FFFFFF'}" th:style="${'background-color:'+filterColorData.colorChip}"></span>
+											</label>
+										</li>
+									</th:block>
 								</ul>
 								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 							</div>
 							<!-- //컬러 -->
 							<!-- 혜택 -->
-							<div class="sort tap09">
+							<div class="sort tap09" th:if="${filterBenefitList!=null and !filterBenefitList.empty}">
 								<ul>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>할인쿠폰</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>사은품</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>단독특가</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>온라인단독</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterBenefitsCds" value=""><span>무료배송</span>
-										</label>
-									</li>
-									<li>
-										<label class="Benefits_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" id="chkFilterBenefits00" data-name="chkFilterBenefits00" name="filterAgeCds" value=""><span>총알배송</span>
-										</label>
-									</li>
+									<th:block th:each="filterBenefitData, filterBenefitStat : ${filterBenefitList}">
+										<li>
+											<label class="Benefits_btn" onclick="filterSel();">
+												<input type="checkbox" group="filterValue" th:id="${'chkFilterBenefits'+filterBenefitStat.count}" name="filterBenefitsCds" th:value="${filterBenefitData.benefitCd}"><span th:text="${filterBenefitData.benefitNm}"></span>
+											</label>
+										</li>
+									</th:block>
 								</ul>
 								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 							</div>
@@ -916,7 +508,7 @@
 		<input type="hidden" name="pageSize" value ="32"/>
 		<input type="hidden" name="cateNo"/>
 		<input type="hidden" name="cateGb" th:value="${cateGb}"/>
-		<input type="hidden" name="brandCd" th:value="${brandCd}"/>
+		<input type="hidden" name="brandGroupNo" th:value="${brandGroupNo}"/>
 		<input type="hidden" name="formalGb" th:value="${formalGb}"/>
 		<input type="hidden" name="cate1No" th:value="${cate1No}"/>
 		<input type="hidden" name="cate2No" th:value="${cate2No}"/>
@@ -927,16 +519,31 @@
 
 	<script th:inline="javascript">
 		/*<![CDATA[*/
+		var filterPriceList = [[${filterPriceList}]];
+
 		// 컨텐츠 호출
 		$(document).ready( function() {
 			//가격 슬라이드
-			var custom_values = ['9,000원', '230,000원', '487,000원', '700,000원', '1,360,000원', '1,799,000원'];
-			var my_from = custom_values.indexOf('9,000원');
-			var my_to = custom_values.indexOf('230,000원');
+			//var custom_values = ['9,000원', '230,000원', '487,000원', '700,000원', '1,360,000원', '1,799,000원'];
+			var custom_values = [];
+			$.each(filterPriceList, function (priceIdx, priceItem){
+				custom_values[0] = priceItem.price1;
+				custom_values[1] = priceItem.price2;
+				custom_values[2] = priceItem.price3;
+				custom_values[3] = priceItem.price4;
+				custom_values[4] = priceItem.price5;
+				custom_values[5] = priceItem.price6;
+			});
+
+			var my_from = custom_values.indexOf(custom_values[0]); //custom_values.indexOf('9,000원');
+			var my_to = custom_values.indexOf(custom_values[5]); //custom_values.indexOf('230,000원');
+			var minValue = custom_values[0];
+			var maxValue = custom_values[5];
+
 			$(".dp .js-range-slider01, .sch_result .js-range-slider01").ionRangeSlider({
 				type: "double",
-				min: 9000,
-				max: 1799000,
+				min: minValue,
+				max: maxValue,
 				from: my_from,
 				to: my_to,
 				grid: true,
@@ -949,7 +556,7 @@
 			//할인율
 			var custom_values02 = ['0%', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'];
 			var my_from02 = custom_values02.indexOf('0%');
-			var my_to02 = custom_values02.indexOf('10%');
+			var my_to02 = custom_values02.indexOf('100%');
 			$(".dp .js-range-slider02, .sch_result .js-range-slider02").ionRangeSlider({
 				type: "double",
 				min: 0,
@@ -990,15 +597,16 @@
 		}
 
 		let fnGetCategoryList = function (cate1){
-			var brandCd = [[${brandCd}]];
+			var brandGroupNo = [[${brandGroupNo}]];
 			var formalGb = [[${formalGb}]];
 			var cate1No = [[${cate1No}]];
 			var cate2No = [[${cate2No}]];
 			var cate3No = [[${cate3No}]];
 			var cate4No = [[${cate4No}]];
 
-			console.log('1.'+cate1.cate1No);
-			console.log('2.'+cate1No);
+			var navNm = "";
+			var formTitle = "";
+
 			let tag = '';
 			if (cate1 != null) {
 				tag += '<li';
@@ -1009,6 +617,10 @@
 				tag += '	<a href="javascript:;"';
 				if(cate1.cate1No == cate1No){
 					tag += ' class="on"';
+					formTitle = cate1.cate1Nm;
+					navNm = cate1.cate1Nm;
+					$("#navNm").text(navNm);
+					$("#formTitle").text(formTitle);
 				}
 				tag += '	>' + cate1.cate1Nm + '</a>\n';
 				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
@@ -1027,9 +639,11 @@
 						tag += '		<a href="javascript:;" ';
 						if(cate2.cate2No == cate2No){
 							tag += ' class="on"';
+							navNm = navNm +' > ' + cate2.cate2Nm;
+							$("#navNm").text(navNm);
 						}
 						tag += '		>' + cate2.cate2Nm + '</a>\n';
-						if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
+ 						if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
 							tag += '<div class="sub_cate"';
 							if(cate2.cate2No == cate2No){
 								tag += ' style="display: block;"';
@@ -1045,6 +659,8 @@
 								tag += '<a href="javascript:;"';
 								if(cate3.cate3No == cate3No){
 									tag += ' class="on"';
+									navNm = navNm +' > ' + cate3.cate3Nm;
+									$("#navNm").text(navNm);
 								}
 								tag += '>' + cate3.cate3Nm + '</a>';
 								tag += '</li>\n';
@@ -1059,12 +675,8 @@
 				}
 				tag += '</li>\n';
 			}
-			return tag;
-		}
-
-		var test1 = $("#searchGoodsForm").find("input[name=cate2No]").val();
-		if(test1 == '1101'){
 
+			return tag;
 		}
 
 		/*]]>*/

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

@@ -73,14 +73,14 @@
 	let oneData = [[${oneData}]];
 	let chgQty = [[${chgQty}]];
 	let checkedOrdDtlItemSqArr = [];
-	
+
 	$(document).ready( function() {
 		// 셀렉트박스 활성화
 		$('#exchangePop .select_custom.exchange_option').each(function() {
 			new sCombo($(this));
 		});
 	});
-	
+
 	// 구성상품 선택 및 전체 적용 클릭 이벤트
 	var fnSelectOptionChange = function() {
 		checkedOrdDtlItemSqArr = [];
@@ -93,19 +93,19 @@
 				cnt++;
 			}
 		});
-		
+
 		// 옵션변경영역 처리
 		if (cnt > 0) {
 			$('#modifyOptionArea').css('display', '');
 		} else {
 			$('#modifyOptionArea').css('display', 'none');
 		}
-		
+
 		$.each($('.modify_box'), function(idx, item) {
 			let ordDtlItemSq = $(item).attr('ordDtlItemSq');
 			let num = $(item).attr('num');
 			let id = '#' + ordDtlItemSq + '_checkAll';
-			
+
 			if (checkedOrdDtlItemSqArr.includes(ordDtlItemSq)) {
 				if (num == 1) {
 					$(item).css('display', '');
@@ -132,10 +132,10 @@
 				$(item).css('display', 'none');
 			}
 		});
-		
+
 		fnChangeCss();
 	}
-	
+
 	// 라디오 클릭 이벤트
 	var fnRadioOption = function(param) {
 		let ordDtlItemSq = $(param).attr('ordDtlItemSq');
@@ -143,7 +143,7 @@
 		let optCd2 = $(param).val();
 		let checkAllId = '#' + ordDtlItemSq + '_checkAll';
 		let radioId = '.' + ordDtlItemSq + ' input:radio';
-		
+
 		$(param).parent().parent().parent().find('input[name=chgOptCd2]').val(optCd2);
 
 		if (num == 1 && $(checkAllId).is(':checked')) {
@@ -154,7 +154,7 @@
 			});
 		}
 	}
-	
+
 	// 셀렉트박스 클릭 이벤트
 	var fnSelectOption = function(param) {
 		let ordDtlItemSq = $(param).attr('ordDtlItemSq');
@@ -228,7 +228,7 @@
 				selectOptionCheck = false;
 			}
 		});
-		
+
 		// 옵션 선택 여부 체크
 		if (!selectOptionCheck) {
 			mcxDialog.alert('교환 옵션을 선택해주세요.');
@@ -244,13 +244,12 @@
 		data.goodsType = goodsType;
 		data.chgOptCd2Arr = fnOptionCount(chgOptCd2Arr);
 		dataArr.push(data);
-		
+
 		fnChangeOptionCallback(dataArr)
-		console.log(dataArr);
-		
+
 		$('.close-modal').trigger('click');
 	}
-	
+
 	// 변경 옵션별 수량 처리
 	var fnOptionCount = function(param) {
 		var result = [];
@@ -265,7 +264,7 @@
 		
 		return result;
 	}
-	
+
 	// 옵션 선택 영역 CSS 수정
 	var fnChangeCss = function() {
 		let index = 0;

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

@@ -31,171 +31,183 @@
 				</div>
 			</div>
 			<div class="cont">
-				<input type="hidden" name="accountNo" th:value="${oneData.accountNo}"/>
-				<input type="hidden" name="accountNm" th:value="${oneData.accountNm}"/>
-				<input type="hidden" name="bankCd" th:value="${oneData.bankCd}"/>
-				<div class="sec_head">
-					<h3 class="subH1">주문취소</h3>
-					<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${oneData.ordNo}"></em></span>
-				</div>
-				<div class="sec_body">
-					<div class="part_goods">
-						<div class="goods_head">
-							<p th:unless="${oneData.giftPackYn == 'Y'}">주문일 <span th:text="${oneData.ordDt}"></span></p>
-							<p th:if="${oneData.giftPackYn == 'Y'}">선물일 <span th:text="${oneData.ordDt}"></span></p>
-						</div>
-						<div class="goods_cont">
-							<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
-							<!-- 주문상품 -->
-							<div class="goods_info">
-								<div class="order_desc">
-									<div class="goods_box">
-										<div class="gd_item">
-											<a href="javascript:void(0)" th:attr="goodsCd=${cancel.goodsCd}" onclick="fnGoToGoodsDetail(this)">
-												<span class="thumb">
-													<img th:src="${imageUrl + '/' + cancel.sysImgNm}" width="100%" alt="">
-												</span>
+				<form id="cancelForm">
+					<input type="hidden" name="accountNo" th:value="${oneData.accountNo}"/>
+					<input type="hidden" name="accountNm" th:value="${oneData.accountNm}"/>
+					<input type="hidden" name="bankCd" th:value="${oneData.bankCd}"/>
+					<div class="sec_head">
+						<h3 class="subH1">주문취소</h3>
+						<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${oneData.ordNo}"></em></span>
+					</div>
+					<div class="sec_body">
+						<div class="part_goods">
+							<div class="goods_head">
+								<p th:unless="${oneData.giftPackYn == 'Y'}">주문일 <span th:text="${oneData.ordDt}"></span></p>
+								<p th:if="${oneData.giftPackYn == 'Y'}">선물일 <span th:text="${oneData.ordDt}"></span></p>
+							</div>
+							<div class="goods_cont">
+								<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<!-- 주문상품 -->
+								<div class="goods_info">
+									<div class="order_desc">
+										<div class="goods_box">
+											<div class="gd_item">
+												<a href="javascript:void(0)" th:attr="goodsCd=${cancel.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+													<span class="thumb">
+														<img th:src="${imageUrl + '/' + cancel.sysImgNm}" width="100%" alt="">
+													</span>
+													<p>
+														<span class="brand" th:text="${cancel.brandNm}"></span>
+														<span class="tag primary" th:if="${cancel.shotDelvYn == 'Y'}">총알배송</span>
+														<span class="tag" th:if="${cancel.shotDelvYn == 'N' and cancel.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+														<span class="tag" th:if="${cancel.selfGoodsYn == 'N'}">업체직배송</span>
+													</p>
+													<p>
+														<span class="name" th:text="${cancel.goodsNm}"></span>
+													</p>
+												</a>
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title sr-only">주문 옵션</span>
+													<span class="option" th:if="${cancel.goodsType == 'G056_S'}" th:each="option, status : ${cancel.colorNmArr}" th:text="|${cancel.itemNmArr[status.index]} / ${option} / ${cancel.optCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${cancel.goodsType == 'G056_S'}" th:text="|${cancel.colorNm} / ${cancel.optCd2}|"></span>
+												</div>
+											</div>
+											<div class="gd_calc">
 												<p>
-													<span class="brand" th:text="${cancel.brandNm}"></span>
-													<span class="tag primary" th:if="${cancel.shotDelvYn == 'Y'}">총알배송</span>
-													<span class="tag" th:if="${cancel.shotDelvYn == 'N' and cancel.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
-													<span class="tag" th:if="${cancel.selfGoodsYn == 'N'}">업체직배송</span>
+													<span class="count"><em th:text="${cancel.ordQty - cancel.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="name" th:text="${cancel.goodsNm}"></span>
+													<span class="price_org" th:if="${(cancel.ordAmt - cancel.cnclRtnAmt - cancel.cpn1DcAmt) > (cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(cancel.ordAmt - cancel.cnclRtnAmt - cancel.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_sale"><em th:text="${#numbers.formatInteger(cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
-											</a>
-										</div>
-										<div class="gd_opt">
-											<div class="option_wrap">
-												<span class="title sr-only">주문 옵션</span>
-												<span class="option" th:if="${cancel.goodsType == 'G056_S'}" th:each="option, status : ${cancel.colorNmArr}" th:text="|${cancel.itemNmArr[status.index]} / ${option} / ${cancel.optCd2Arr[status.index]}|"></span>
-												<span class="option" th:unless="${cancel.goodsType == 'G056_S'}" th:text="|${cancel.colorNm} / ${cancel.optCd2}|"></span>
 											</div>
 										</div>
-										<div class="gd_calc">
-											<p>
-												<span class="count"><em th:text="${cancel.ordQty - cancel.cnclRtnQty}"></em>개</span>
-											</p>
-											<p>
-												<span class="price_org" th:if="${(cancel.ordAmt - cancel.cnclRtnAmt - cancel.cpn1DcAmt) > (cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(cancel.ordAmt - cancel.cnclRtnAmt - cancel.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
-												<span class="price_sale"><em th:text="${#numbers.formatInteger(cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
-											</p>
-										</div>
-									</div>
-									<div class="button_box">
-										<div class="count_modify">
-											<span class="txt">수량</span>
-											<form class="form_wrap">
-												<div class="form_field">
-													<div class="select_custom select_count">
-														<div class="combo">
-															<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${cancel.ordDtlNo}, ordCanChgQty=${cancel.ordCanChgQty}"/>
-															<div class="select">선택</div>
-															<ul class="list">
-																<li class="selected" qty="0" onclick="fnChangeCancelQty(this);">선택</li>
-																<li th:if="${cancel.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,cancel.ordCanChgQty)}" th:attr="qty=${num}" th:text="${num}" onclick="fnChangeCancelQty(this);"></li>
-															</ul>
+										<div class="button_box">
+											<div class="count_modify">
+												<span class="txt">수량</span>
+												<form class="form_wrap">
+													<div class="form_field">
+														<div class="select_custom select_count">
+															<div class="combo">
+																<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${cancel.ordDtlNo}, ordCanChgQty=${cancel.ordCanChgQty}"/>
+																<div class="select">선택</div>
+																<ul class="list">
+																	<li class="selected" qty="0" onclick="fnChangeCancelQty(this);">선택</li>
+																	<li th:if="${cancel.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,cancel.ordCanChgQty)}" th:attr="qty=${num}" th:text="${num}" onclick="fnChangeCancelQty(this);"></li>
+																</ul>
+															</div>
 														</div>
 													</div>
-												</div>
-											</form>
+												</form>
+											</div>
 										</div>
 									</div>
+									<div class="order_text">
+										<p>취소하실 수량을 선택하신 후 주문 취소를 하실 수 있습니다.</p>
+									</div>
 								</div>
-								<div class="order_text">
-									<p>취소하실 수량을 선택하신 후 주문 취소를 하실 수 있습니다.</p>
-								</div>
+								<!-- //주문상품 -->
+								</th:block>
 							</div>
-							<!-- //주문상품 -->
-							</th:block>
+						</div>
+						<h4 class="subH3">환불정보</h4>
+						<div class="tbl type6">
+							<table>
+								<colgroup>
+									<col width="50%">
+									<col width="50%">
+								</colgroup>
+								<tr>
+									<td>
+										<dl>
+											<div>
+												<dt>환불 예정 금액</dt>
+												<dd>
+													<div class="price">
+														<span class="return_total_price"><em id="returnAmt">0</em>원</span>
+													</div>
+												</dd>
+											</div>
+											<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
+												<dt>상품 취소 금액</dt>
+												<dd><em id="goodsCancelAmt">0</em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>배송비</dt>
+												<dd><em id="deliveryFee">0</em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>할인 금액 차감</dt>
+												<dd><em id="deductDcAmt">0</em>원</dd>
+											</div>
+										</dl>
+									</td>
+									<td>
+										<dl>
+											<div>
+												<dt>환불 수단</dt>
+												<dd th:if="${paymentInfo.pgGb == 'KCP'}" th:text="${paymentInfo.payMeansNm}"></dd>
+												<dd th:if="${paymentInfo.pgGb == 'NAVER'}" th:text="|네이버페이|"></dd>
+												<dd th:if="${paymentInfo.pgGb == 'KAKAO'}" th:text="|카카오페이|"></dd>
+												<dd th:if="${paymentInfo.pgGb == 'PAYCO'}" th:text="|PAYCO|"></dd>
+											</div>
+											<div>
+												<dt>결제 금액 환불</dt>
+												<dd>
+													<em id="refundPayAmt">0</em>원
+												</dd>
+											</div>
+											<div>
+												<dt>포인트 환불</dt>
+												<dd>
+													<em id="refundPoint">0</em>P
+												</dd>
+											</div>
+											<div>
+												<dt>상품권 환불</dt>
+												<dd>
+													<em id="refundGiftCard">0</em>원
+												</dd>
+											</div>
+										</dl>
+									</td>
+								</tr>
+							</table>
+						</div>
+						<div class="txt_info">
+							<ul>
+								<li>
+									카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
+								</li>
+							</ul>
+						</div>
+						<div class="info_footer_area" id="addDeliveryFee" style="display:none">
+							<p>
+								<span id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.
+								<input type="hidden" name="addPayCost"/>
+							</p>
+						</div>
+						<div class="btn_footer_area">
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);"><span>취소</span></button>
+							<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnCancel();"><span>주문 취소</span></button>
 						</div>
 					</div>
-					<h4 class="subH3">환불정보</h4>
-					<div class="tbl type6">
-						<table>
-							<colgroup>
-								<col width="50%">
-								<col width="50%">
-							</colgroup>
-							<tr>
-								<td>
-									<dl>
-										<div>
-											<dt>환불 예정 금액</dt>
-											<dd>
-												<div class="price">
-													<span class="return_total_price"><em id="returnAmt">0</em>원</span>
-												</div>
-											</dd>
-										</div>
-										<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
-											<dt>상품 취소 금액</dt>
-											<dd><em id="goodsCancelAmt">0</em>원</dd>
-										</div>
-										<div class="include_item">
-											<dt>배송비</dt>
-											<dd><em id="deliveryFee">0</em>원</dd>
-										</div>
-										<div class="include_item">
-											<dt>할인 금액 차감</dt>
-											<dd><em id="deductDcAmt">0</em>원</dd>
-										</div>
-									</dl>
-								</td>
-								<td>
-									<dl>
-										<div>
-											<dt>환불 수단</dt>
-											<dd th:if="${paymentInfo.pgGb == 'KCP'}" th:text="${paymentInfo.payMeansNm}"></dd>
-											<dd th:if="${paymentInfo.pgGb == 'NAVER'}" th:text="|네이버페이|"></dd>
-											<dd th:if="${paymentInfo.pgGb == 'KAKAO'}" th:text="|카카오페이|"></dd>
-											<dd th:if="${paymentInfo.pgGb == 'PAYCO'}" th:text="|PAYCO|"></dd>
-										</div>
-										<div>
-											<dt>결제 금액 환불</dt>
-											<dd>
-												<em id="refundPayAmt">0</em>원
-											</dd>
-										</div>
-										<div>
-											<dt>포인트 환불</dt>
-											<dd>
-												<em id="refundPoint">0</em>P
-											</dd>
-										</div>
-										<div>
-											<dt>상품권 환불</dt>
-											<dd>
-												<em id="refundGiftCard">0</em>원
-											</dd>
-										</div>
-									</dl>
-								</td>
-							</tr>
-						</table>
-					</div>
-					<div class="txt_info">
-						<ul>
-							<li>
-								카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
-							</li>
-						</ul>
-					</div>
-					<div class="info_footer_area" id="addDeliveryFee" style="display:none">
-						<p>
-							<span id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.
-							<input type="hidden" name="addPayCost"/>
-						</p>
-					</div>
-					<div class="btn_footer_area">
-						<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);"><span>취소</span></button>
-						<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnCancel();"><span>주문 취소</span></button>
-					</div>
-				</div>
+				</form>
 			</div>
 			<!-- // CONT-BODY -->
 		</div>
+
+		<!-- 환불계좌 등록 팝업 -->
+		<div class="modal fade refund_pop" id="refundPop" tabindex="-1" role="dialog" aria-labelledby="refundLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content"></div>
+			</div>
+			<a href="#close-modal" rel="modal:close" id="refundPop_close" class="close-modal">Close</a>
+			<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
+		</div>
+		<!-- //환불계좌 등록 팝업 -->
 	</div>
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
@@ -228,7 +240,7 @@
 		let ordDtlNoArr = [];
 		let cnclRtnReqQtyArr = [];
 		let chkQty = 0;
-		$.each($('input[name=chgQty]'), function(idx, item) {
+		$.each($('#cancelForm input[name=chgQty]'), function(idx, item) {
 			let chgQty = $(item).val();
 			let ordDtlNo = $(item).attr('ordDtlNo');
 			
@@ -244,13 +256,33 @@
 		}
 
 		// 환불계좌 체크
-		let accountNo = $('input[name=accountNo]').val();
-		let accountNm = $('input[name=accountNm]').val();
-		let bankCd = $('input[name=bankCd]').val();
-
-		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_00' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
-			// TODO
-			// 환불계좌 등록 팝업
+		let accountNo = $('#cancelForm input[name=accountNo]').val();
+		let accountNm = $('#cancelForm input[name=accountNm]').val();
+		let bankCd = $('#cancelForm input[name=bankCd]').val();
+
+		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+			let data = {};
+			data.ordNo = oneData.ordNo;
+			data.accountNm = oneData.accountNm;
+
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type		: "POST",
+				url 		: '/mypage/refund/account/register/popup/form',
+				data		: jsonData,
+				dataType 	: 'html',
+				beforeSend : function(xhr, settings) {
+					xhr.setRequestHeader("AJAX"			, "true");
+					xhr.setRequestHeader('Accept'		, 'application/json');
+					xhr.setRequestHeader('Content-Type'	, 'application/json');
+					gagajf.showProgressbar(true);
+				},
+				success 	: function(result) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
 			
 			return false;
 		}
@@ -295,7 +327,7 @@
 		let cnclRtnReqQtyArr = [];
 		let ordDtlNoArr = [];
 		let ordCanChgQtyArr = [];
-		$.each($('input[name=chgQty]'), function(idx, item) {
+		$.each($('#cancelForm input[name=chgQty]'), function(idx, item) {
 			let chgQty = $(item).val();
 			let ordDtlNo = $(item).attr('ordDtlNo');
 			let ordCanChgQty = $(item).attr('ordCanChgQty');
@@ -393,6 +425,17 @@
 
 		return refundGiftCard;
 	}
+
+	// 환불계좌 등록 콜백 처리
+	var fnRegisterAccountCallback = function(result) {
+		// 환불계좌 정보 설정
+		$('#cancelForm input[name=accountNo]').val(result.accountNo);
+		$('#cancelForm input[name=accountNm]').val(result.accountNm);
+		$('#cancelForm input[name=bankCd]').val(result.bankCd);
+
+		// 취소처리
+		fnCancel();
+	}
 </script>
 
 </th:block>

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

@@ -31,180 +31,212 @@
 				</div>
 			</div>
 			<div class="cont">
-				<div class="sec_head">
-					<h3 class="subH1">교환 신청</h3>
-					<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${oneData.ordNo}"></em></span>
-				</div>
-				<div class="sec_body">
-					<div class="part_goods">
-						<div class="goods_head">
-							<p th:unless="${oneData.giftPackYn == 'Y'}">주문일 <span th:text="${oneData.ordDt}"></span></p>
-							<p th:if="${oneData.giftPackYn == 'Y'}">선물일 <span th:text="${oneData.ordDt}"></span></p>
-						</div>
-						<div class="goods_cont">
-							<th:block th:if="${exchangeList.returnList}" th:each="exchange, status : ${exchangeList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
-							<!-- 주문상품 -->
-							<div class="goods_info">
-								<div class="order_desc">
-									<div class="goods_box">
-										<div class="gd_item">
-											<a href="javascript:void(0)" th:attr="goodsCd=${exchange.goodsCd}" onclick="fnGoToGoodsDetail(this)">
-												<span class="thumb">
-													<img th:src="${imageUrl + '/' + exchange.sysImgNm}" width="100%" alt="">
-												</span>
+				<form id="exchangeForm">
+					<div class="sec_head">
+						<h3 class="subH1">교환 신청</h3>
+						<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${oneData.ordNo}"></em></span>
+					</div>
+					<div class="sec_body">
+						<div class="part_goods">
+							<div class="goods_head">
+								<p th:unless="${oneData.giftPackYn == 'Y'}">주문일 <span th:text="${oneData.ordDt}"></span></p>
+								<p th:if="${oneData.giftPackYn == 'Y'}">선물일 <span th:text="${oneData.ordDt}"></span></p>
+							</div>
+							<div class="goods_cont">
+								<th:block th:if="${exchangeList.returnList}" th:each="exchange, status : ${exchangeList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<!-- 주문상품 -->
+								<div class="goods_info">
+									<div class="order_desc">
+										<div class="goods_box">
+											<div class="gd_item">
+												<a href="javascript:void(0)" th:attr="goodsCd=${exchange.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+													<span class="thumb">
+														<img th:src="${imageUrl + '/' + exchange.sysImgNm}" width="100%" alt="">
+													</span>
+													<p>
+														<span class="brand" th:text="${exchange.brandNm}"></span>
+														<span class="tag primary" th:if="${exchange.shotDelvYn == 'Y'}">총알배송</span>
+														<span class="tag" th:if="${exchange.shotDelvYn == 'N' and exchange.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+														<span class="tag" th:if="${exchange.selfGoodsYn == 'N'}">업체직배송</span>
+													</p>
+													<p>
+														<span class="name" th:text="${exchange.goodsNm}"></span>
+													</p>
+												</a>
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title sr-only">주문 옵션</span>
+													<span class="option" th:if="${exchange.goodsType == 'G056_S'}" th:each="option, status : ${exchange.colorNmArr}" th:text="|${exchange.itemNmArr[status.index]} / ${option} / ${exchange.optCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${exchange.goodsType == 'G056_S'}" th:text="|${exchange.colorNm} / ${exchange.optCd2}|"></span>
+												</div>
+												<div class="option_wrap exchangeOption" style="display:none" th:attr="ordDtlNo=${exchange.ordDtlNo}"></div>
+											</div>
+											<div class="gd_calc">
 												<p>
-													<span class="brand" th:text="${exchange.brandNm}"></span>
-													<span class="tag primary" th:if="${exchange.shotDelvYn == 'Y'}">총알배송</span>
-													<span class="tag" th:if="${exchange.shotDelvYn == 'N' and exchange.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
-													<span class="tag" th:if="${exchange.selfGoodsYn == 'N'}">업체직배송</span>
+													<span class="count"><em th:text="${exchange.ordQty - exchange.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="name" th:text="${exchange.goodsNm}"></span>
+													<span class="price_org" th:if="${(exchange.ordAmt - exchange.cnclRtnAmt - exchange.cpn1DcAmt) > (exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(exchange.ordAmt - exchange.cnclRtnAmt - exchange.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_sale"><em th:text="${#numbers.formatInteger(exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
-											</a>
-										</div>
-										<div class="gd_opt">
-											<div class="option_wrap">
-												<span class="title sr-only">주문 옵션</span>
-												<span class="option" th:if="${exchange.goodsType == 'G056_S'}" th:each="option, status : ${exchange.colorNmArr}" th:text="|${exchange.itemNmArr[status.index]} / ${option} / ${exchange.optCd2Arr[status.index]}|"></span>
-												<span class="option" th:unless="${exchange.goodsType == 'G056_S'}" th:text="|${exchange.colorNm} / ${exchange.optCd2}|"></span>
 											</div>
-											<div class="option_wrap exchangeOption" style="display:none" th:attr="ordDtlNo=${exchange.ordDtlNo}"></div>
-										</div>
-										<div class="gd_calc">
-											<p>
-												<span class="count"><em th:text="${exchange.ordQty - exchange.cnclRtnQty}"></em>개</span>
-											</p>
-											<p>
-												<span class="price_org" th:if="${(exchange.ordAmt - exchange.cnclRtnAmt - exchange.cpn1DcAmt) > (exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(exchange.ordAmt - exchange.cnclRtnAmt - exchange.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
-												<span class="price_sale"><em th:text="${#numbers.formatInteger(exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
-											</p>
 										</div>
-									</div>
-									<div class="button_box">
-										<div class="count_modify">
-											<span class="txt">수량</span>
-											<form class="form_wrap">
-												<div class="form_field">
-													<div class="select_custom select_count">
-														<div class="combo">
-															<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${exchange.ordDtlNo}, ordCanChgQty=${exchange.ordCanChgQty}"/>
-															<input type="hidden" name="chgOptionList" th:attr="ordDtlNo=${exchange.ordDtlNo}"/>
-															<div class="select">선택</div>
-															<ul class="list">
-																<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
-																<li class="selected" qty="0" onclick="fnChangeExchangeQty(this);">선택</li>
-																<li th:if="${exchange.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,exchange.ordCanChgQty)}" th:attr="qty=${num}" th:text="${num}" onclick="fnChangeExchangeQty(this);"></li>
-															</ul>
+										<div class="button_box">
+											<div class="count_modify">
+												<span class="txt">수량</span>
+												<form class="form_wrap">
+													<div class="form_field">
+														<div class="select_custom select_count">
+															<div class="combo">
+																<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${exchange.ordDtlNo}, ordCanChgQty=${exchange.ordCanChgQty}"/>
+																<input type="hidden" name="chgOptionList" th:attr="ordDtlNo=${exchange.ordDtlNo}"/>
+																<div class="select">선택</div>
+																<ul class="list">
+																	<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+																	<li class="selected" qty="0" onclick="fnChangeExchangeQty(this);">선택</li>
+																	<li th:if="${exchange.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,exchange.ordCanChgQty)}" th:attr="qty=${num}" th:text="${num}" onclick="fnChangeExchangeQty(this);"></li>
+																</ul>
+															</div>
 														</div>
 													</div>
-												</div>
-											</form>
-											<button type="button" id="btn_exchange_pop" class="btn btn_dark btn_sm" th:attr="ordNo=${exchange.ordNo}, ordDtlNo=${exchange.ordDtlNo}" onclick="fnChangeOption(this)"><span>교환 옵션 변경</span></button>
+												</form>
+												<button type="button" id="btn_exchange_pop" class="btn btn_dark btn_sm" th:attr="ordNo=${exchange.ordNo}, ordDtlNo=${exchange.ordDtlNo}" onclick="fnChangeOption(this)"><span>교환 옵션 변경</span></button>
+											</div>
 										</div>
 									</div>
+									<div class="order_text">
+										<p>교환하실 상품의 수량 및 옵션을 선택하신 후 교환 신청을 하실 수 있습니다.</p>
+									</div>
 								</div>
-								<div class="order_text">
-									<p>교환하실 상품의 수량 및 옵션을 선택하신 후 교환 신청을 하실 수 있습니다.</p>
-								</div>
+								<!-- //주문상품 -->
+								</th:block>
 							</div>
-							<!-- //주문상품 -->
-							</th:block>
 						</div>
-					</div>
-					<h4 class="subH3">교환 사유</h4>
-					<div class="tbl type1">
-						<table>
-							<tbody>
-								<tr>
-									<td>
-										<div class="form_field">
-											<div class="select_custom select_reason">
-												<div class="combo">
-													<input type="hidden" name="chgReason"/>
-													<div class="select">교환 사유를 선택하세요.</div>
-													<ul class="list">
-														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
-														<li class="selected">교환 사유를 선택하세요.</li>
-														<li th:if="${exchangeReason}" th:each="oneData, status : ${exchangeReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeExchangeReason(this);"></li>
-													</ul>
+						<h4 class="subH3">교환 사유</h4>
+						<div class="tbl type1">
+							<table>
+								<tbody>
+									<tr>
+										<td>
+											<div class="form_field">
+												<div class="select_custom select_reason">
+													<div class="combo">
+														<input type="hidden" name="chgReason"/>
+														<div class="select">교환 사유를 선택하세요.</div>
+														<ul class="list">
+															<li class="selected">교환 사유를 선택하세요.</li>
+															<li th:if="${exchangeReason}" th:each="oneData, status : ${exchangeReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeExchangeReason(this);"></li>
+														</ul>
+													</div>
 												</div>
 											</div>
-										</div>
-									</td>
-								</tr>
+										</td>
+									</tr>
+									<tr>
+										<td>
+											<div class="form_field">
+												<div class="input_wrap">
+													<textarea class="doc_reason" name="chgMemo" id="chgMemo" cols="30" rows="10" placeholder="자세한 사유를 입력해주세요." style="resize: none;"></textarea>
+													<p class="txt_cnt"><span id="reason_cnt" class="c_primary">0</span>/200</p>
+												</div>
+											</div>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						<h4 class="subH3">반품 방식 선택</h4>
+						<div class="tbl type1">
+							<table>
+								<tbody>
 								<tr>
 									<td>
-										<div class="form_field">
-											<div class="input_wrap">
-												<textarea class="doc_reason" name="chgMemo" id="chgMemo" cols="30" rows="10" placeholder="자세한 사유를 입력해주세요." style="resize: none;"></textarea>
-												<p class="txt_cnt"><span id="reason_cnt" class="c_primary">0</span>/200</p>
+										<div class="retrieve_method">
+											<div class="form_field">
+												<div>
+													<input type="radio" name="wdGb" id="withdraw" value="W" checked>
+													<label for="withdraw"><span>방문회수<em>택배사에서 고객에게 방문하여 회수</em></span></label>
+												</div>
+												<div>
+													<input type="radio" name="wdGb" id="direct" value="D">
+													<label for="direct"><span>직접배송<em>고객이 반품지로 직접 반송</em></span></label>
+												</div>
 											</div>
 										</div>
 									</td>
 								</tr>
-							</tbody>
-						</table>
-					</div>
-					<h4 class="subH3">반품 방식 선택</h4>
-					<div class="tbl type1">
-						<table>
-							<tbody>
-							<tr>
-								<td>
-									<div class="retrieve_method">
-										<div class="form_field">
-											<div>
-												<input type="radio" name="wdGb" id="withdraw" value="W" checked>
-												<label for="withdraw"><span>방문회수<em>택배사에서 고객에게 방문하여 회수</em></span></label>
-											</div>
-											<div>
-												<input type="radio" name="wdGb" id="direct" value="D">
-												<label for="direct"><span>직접배송<em>고객이 반품지로 직접 반송</em></span></label>
-											</div>
-										</div>
-									</div>
-								</td>
-							</tr>
-							</tbody>
-						</table>
-					</div>
-					<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
-						<h4 class="subH3">교환 회수지 주소 <span class="tit_info">택배사에서 교환 상품을 직접 회수할 장소 선택</span></h4>
-						<div class="tbl type1">
-							<table>
-								<colgroup>
-									<col width="210">
-									<col width="*">
-								</colgroup>
-								<tbody>
-									<tr>
-										<th>성명</th>
-										<td id="chgerNm" th:text="${deliveryAddrInfo.recipNm}"></td>
-										<input type="hidden" name="chgerNm" th:value="${deliveryAddrInfo.recipNm}">
-									</tr>
+								</tbody>
+							</table>
+						</div>
+						<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
+							<h4 class="subH3">교환 회수지 주소 <span class="tit_info">택배사에서 교환 상품을 직접 회수할 장소 선택</span></h4>
+							<div class="tbl type1">
+								<table>
+									<colgroup>
+										<col width="210">
+										<col width="*">
+									</colgroup>
+									<tbody>
+										<tr>
+											<th>성명</th>
+											<td id="chgerNm" th:text="${deliveryAddrInfo.recipNm}"></td>
+											<input type="hidden" name="chgerNm" th:value="${deliveryAddrInfo.recipNm}">
+										</tr>
+										<tr>
+											<th>연락처</th>
+											<td id="chgerPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></td>
+											<input type="hidden" name="chgerPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
+										</tr>
+										<tr>
+											<th>주소</th>
+											<td id="chgerAddr">
+												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
+												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
+											</td>
+											<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}">
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</div>
+						<div class="retrieve_box direct" style="display:none;" id="returnLocation">
+							<h4 class="subH3">반송 정보</h4>
+							<div class="tbl type1">
+								<table>
+									<colgroup>
+										<col width="210">
+										<col width="*">
+									</colgroup>
+									<tbody>
 									<tr>
-										<th>연락처</th>
-										<td id="chgerPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></td>
-										<input type="hidden" name="chgerPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
+										<th>
+											반송주소
+										</th>
+										<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
 									</tr>
 									<tr>
-										<th>주소</th>
-										<td id="chgerAddr">
-											<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr('chger');"><span>회수지 변경</span></button>
+										<th>
+											반송 송장번호
+										</th>
+										<td>
+											<form class="form_wrap">
+												<div class="form_field">
+													<div class="input_wrap">
+														<input type="text" class="form_control" name="wdInvoiceNo" placeholder="송장번호를 입력해주세요.">
+													</div>
+												</div>
+											</form>
 										</td>
-										<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}">
 									</tr>
-								</tbody>
-							</table>
+									</tbody>
+								</table>
+							</div>
 						</div>
-					</div>
-					<div class="retrieve_box direct" style="display:none;" id="returnLocation">
-						<h4 class="subH3">반송 정보</h4>
+						<h4 class="subH3">교환 상품 배송지</h4>
 						<div class="tbl type1">
 							<table>
 								<colgroup>
@@ -212,83 +244,52 @@
 									<col width="*">
 								</colgroup>
 								<tbody>
-								<tr>
-									<th>
-										반송주소
-									</th>
-									<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
-								</tr>
-								<tr>
-									<th>
-										반송 송장번호
-									</th>
-									<td>
-										<form class="form_wrap">
-											<div class="form_field">
-												<div class="input_wrap">
-													<input type="text" class="form_control" name="wdInvoiceNo" placeholder="송장번호를 입력해주세요.">
-												</div>
+									<tr>
+										<th>
+											배송지 정보
+										</th>
+										<td>
+											<div class="block_line">
+												<ul>
+													<li>
+														<span id="recipNm" th:text="${deliveryAddrInfo.recipNm}"></span>
+													</li>
+													<li>
+														<span id="recipPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></span>
+													</li>
+													<li>
+														<span id="recipAddr" th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
+														<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr('recip')"><span>배송지 변경</span></button>
+													</li>
+													<li>
+														배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${deliveryAddrInfo.delvMemo}"></span>
+														<button type="button" class="btn_underline" onclick="fnChangeDeliveryMemo()"><span>변경하기</span></button>
+													</li>
+												</ul>
 											</div>
-										</form>
-									</td>
-								</tr>
+										</td>
+										<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}">
+									</tr>
 								</tbody>
 							</table>
 						</div>
+						<div class="info_footer_area" id="addDeliveryFee" style="display:none">
+							<p>
+								<span id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.
+								<input type="hidden" name="addPayCost"/>
+							</p>
+						</div>
+						<div class="btn_footer_area">
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>취소</span></button>
+							<button type="button" id="btn_confirm_exchange" class="btn btn_dark btn_md" onclick="fnExchange()"><span>교환 신청</span></button>
+						</div>
 					</div>
-					<h4 class="subH3">교환 상품 배송지</h4>
-					<div class="tbl type1">
-						<table>
-							<colgroup>
-								<col width="210">
-								<col width="*">
-							</colgroup>
-							<tbody>
-								<tr>
-									<th>
-										배송지 정보
-									</th>
-									<td>
-										<div class="block_line">
-											<ul>
-												<li>
-													<span id="recipNm" th:text="${deliveryAddrInfo.recipNm}"></span>
-												</li>
-												<li>
-													<span id="recipPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></span>
-												</li>
-												<li>
-													<span id="recipAddr" th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
-													<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr('recip')"><span>배송지 변경</span></button>
-												</li>
-												<li>
-													배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${deliveryAddrInfo.delvMemo}"></span>
-													<button type="button" class="btn_underline" onclick="fnChangeDeliveryMemo()"><span>변경하기</span></button>
-												</li>
-											</ul>
-										</div>
-									</td>
-									<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}">
-								</tr>
-							</tbody>
-						</table>
-					</div>
-					<div class="info_footer_area" id="addDeliveryFee" style="display:none">
-						<p>
-							<span id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.
-							<input type="hidden" name="addPayCost"/>
-						</p>
-					</div>
-					<div class="btn_footer_area">
-						<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>취소</span></button>
-						<button type="button" id="btn_confirm_exchange" class="btn btn_dark btn_md" onclick="fnExchange()"><span>교환 신청</span></button>
-					</div>
-				</div>
+				</form>
 			</div>
 			<!-- // CONT-BODY -->
 		</div>
@@ -296,6 +297,9 @@
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	var isLogin = [[${isLogin}]];
+	let ordNo = [[${oneData.ordNo}]];
+	let oneData = [[${oneData}]];
+	let isCustomer = true;
 	let addrGb = '';
 
 	$(document).ready(function() {
@@ -309,12 +313,16 @@
 		$('.select_custom').each(function() {
 			new sCombo($(this));
 		});
+
+		// 입점업체의 경우 회수방식 직접배송 처리
+		if (oneData.selfGoodsYn == 'Y') {
+			$('#direct').click();
+			$('#wdGb').css('display','none');
+		}
 	});
 
 	// 교환 옵션 변경 팝업
 	var fnChangeOption = function(param) {
-		// TODO
-		// 옵션변경 처리
 		let ordNo = $(param).attr('ordNo');
 		let ordDtlNo = $(param).attr('ordDtlNo');
 
@@ -322,7 +330,7 @@
 		let chgQtyArr = [];
 		let chgOrdDtlNoArr = [];
 
-		$.each($('input[name=chgQty]'), function(idx, item) {
+		$.each($('#exchangeForm input[name=chgQty]'), function(idx, item) {
 			chgQtyArr.push($(item).val());
 			chgOrdDtlNoArr.push($(item).attr('ordDtlNo'));
 		});
@@ -390,32 +398,19 @@
 			}
 		});
 
-		$.each($('input[name=chgOptionList]'), function(index, option) {
-			if (ordDtlNo == $(option).attr('ordDtlNo')) {
-				$(option).val(JSON.stringify(chgOptionList));
+		// 교환옵션 값 JSON 형태로 설정
+		$.each($('#exchangeForm input[name=chgOptionList]'), function(idx, item) {
+			if (ordDtlNo == $(item).attr('ordDtlNo')) {
+				$(item).val(JSON.stringify(chgOptionList));
 			}
 		});
-		
-		$.each($('input[name=chgOptionList]'), function(index, item) {
+
+		// 교환옵션 값 파싱 처리 예제
+		$.each($('#exchangeForm input[name=chgOptionList]'), function(idx, item) {
 			let json = $(item).val();
 			let jsonData = JSON.parse(json);
 		});
 	}
-	
-	// 변경 옵션별 수량 처리
-	var fnOptionCount = function(param) {
-		var result = [];
-		param.reduce(function(res, value) {
-			if (!res[value.chgOptCd2]) {
-				res[value.chgOptCd2] = { chgOptCd2: value.chgOptCd2, qty: 0 };
-				result.push(res[value.chgOptCd2])
-			}
-			res[value.chgOptCd2].qty += value.qty;
-			return res;
-		}, {});
-		
-		return result;
-	}
 
 	// 교환 처리
 	var fnExchange = function() {
@@ -424,9 +419,9 @@
 	}
 
 	// 반품 방식 변경 이벤트
-	$('input[name=wdGb]').on('change', function() {
-		let wdGb = $('input[name=wdGb]:radio:checked').val();
-		
+	$('#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');
@@ -434,23 +429,68 @@
 			$('#chgerLocation').css('display', 'none');
 			$('#returnLocation').css('display', '');
 		}
-		
-		// 환불금액 계산
-		fnChangeReturnQty();
+
+		// 추가 배송비 계산
+		fnAddCost();
 	});
 
-	// 교환 사유 변경 이벤트
-	var fnChangeExchangeReason = function(param) {
-		let chgReason = $(param).val();
-		// TODO
-		// 사유 변경 처리
-	}
-	
 	// 교환 수량 변경 이벤트
 	var fnChangeExchangeQty = function(param) {
 		if (param != null) {
 			$(param).parent().parent().find('input[name=chgQty]').val($(param).attr('qty'));
 		}
+		
+		// 추가 배송비 계산
+		fnAddCost();
+	}
+
+	// 교환 사유 변경 이벤트
+	var fnChangeExchangeReason = function(param) {
+		var customerReasonArr = ['G689_10', 'G689_30'];
+		let chgReason = $(param).attr('chgReason');
+
+		// 귀책사유체크(취소,반품,교환)
+		isCustomer = customerReasonArr.includes(chgReason);
+
+		// 교환 사유 설정
+		$(param).parent().parent().find('input[name=chgReason]').val(chgReason);
+
+		// 추가 배송비 계산
+		fnAddCost();
+	}
+
+	// 추가 배송비 계산
+	var fnAddCost = function() {
+		// 자사상품만 처리, 입점업체는 SCM에서 별도 처리
+		if (oneData.selfGoodsYn == 'Y') {
+			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);
+			}
+		}
 	}
 
 	// 배송지 정보 설정
@@ -461,13 +501,13 @@
 		let recipBaseAddr = delvObj.recipBaseAddr;
 		let recipDtlAddr = delvObj.recipDtlAddr;
 		let delvMemo = delvObj.delvMemo;
-		
+
 		if (addrGb == 'recip') {
 			$('#recipNm').text(recipNm);
 			$('#recipPhnno').text(recipPhnno);
 			$('#recipAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
 			$('#delvMemo').text(delvMemo);
-			
+
 			$('input[name=recipNm]').val(recipNm);
 			$('input[name=recipPhnno]').val(recipPhnno);
 			$('input[name=recipZipcode]').val(recipZipcode);
@@ -475,18 +515,18 @@
 			$('input[name=recipDtlAddr]').val(recipDtlAddr);
 			$('input[name=delvMemo]').val(delvMemo);
 		} else {
-			let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr + '\n';
-			chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr(\'chger\');"><span>회수지 변경</span></button>';
-			
+			let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr + '\n';
+			chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr(\'chger\');"><span>회수지 변경</span></button>';
+
 			$('input[name=chgerNm]').val(recipNm);
 			$('input[name=chgerPhnno]').val(recipPhnno);
 			$('input[name=chgerZipcode]').val(recipZipcode);
 			$('input[name=chgerBaseAddr]').val(recipBaseAddr);
 			$('input[name=chgerDtlAddr]').val(recipDtlAddr);
 			$('input[name=chgerRtnMemo]').val(delvMemo);
-			
-			$('#chgerNm').text(chgerNm);
-			$('#chgerPhnno').text(chgerPhnno);
+
+			$('#chgerNm').text(recipNm);
+			$('#chgerPhnno').text(recipPhnno);
 			$('#chgerAddr').html(chgerAddr);
 		}
 	}
@@ -497,6 +537,12 @@
 		$('input[name=delvMemo]').val(delvMemo);
 		$("#delvMemo").text(delvMemo);
 	}
+
+	// 배송지 및 교환지 변경 처리
+	var fnChangeAddr = function(param) {
+		addrGb = param;
+		fnChangeDeliveryAddr();
+	}
 </script>
 
 </th:block>

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

@@ -32,399 +32,401 @@
 				</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}">
-						<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}"/>
-						<div class="part_goods">
-							<div class="goods_head">
-								<p th:unless="${order.giftPackYn == 'Y'}">주문일 <span th:text="${order.ordDt}"></span></p>
-								<p th:if="${order.giftPackYn == 'Y'}">선물일 <span th:text="${order.ordDt}"></span></p>
-								<li><a href="javascript:void(0)" th:if="${order.allCanYn == 'Y' and order.ordReqChgQty == 0}" onclick="fnAllCancel();">주문전체취소</a></li>
-							</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}" width="100%" alt="">
-														</span>
+				<form id="orderDetailForm">
+					<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}">
+							<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}"/>
+							<div class="part_goods">
+								<div class="goods_head">
+									<p th:unless="${order.giftPackYn == 'Y'}">주문일 <span th:text="${order.ordDt}"></span></p>
+									<p th:if="${order.giftPackYn == 'Y'}">선물일 <span th:text="${order.ordDt}"></span></p>
+									<li><a href="javascript:void(0)" th:if="${order.allCanYn == 'Y' and order.ordReqChgQty == 0}" onclick="fnAllCancel();">주문전체취소</a></li>
+								</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}" 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="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>
+															<span class="count"><em th:text="${ordDtl.ordQty - ordDtl.cnclRtnQty}"></em>개</span>
 														</p>
 														<p>
-															<span class="name" th:text="${ordDtl.goodsNm}"></span>
+															<span class="price_org" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+															<span class="price_sale"><em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
+														</p>
+														<p>
+															<span class="point"><em th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></em><stong>P</stong>&nbsp;적립예정</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.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
-														<span class="price_sale"><em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
-													</p>
-													<p>
-														<span class="point"><em th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></em><stong>P</stong>&nbsp;적립예정</span>
-													</p>
-												</div>
-											</div>
-											<div class="status_box">
-												<!-- 선물 -->
-												<th:block th:if="${order.giftPackYn == 'Y'}">
-													<p th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">주소 입력 대기중</p>
-													<p th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">선물 완료</p>
-													<p th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">선물 취소</p>
-												</th:block>
-												<!-- 주문 -->
-												<th:block th:unless="${order.giftPackYn == 'Y'}">
-													<p th:text="${ordDtl.ordDtlStatNm}"></p>
-												</th:block>
-											</div>
-											<div class="button_box">
-												<!-- 선물 -->
-												<th:block th:if="${order.giftPackYn == 'Y'}">
-													<!-- SMS 재발송 버튼 -->
-													<th:block th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">
-														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>
+												<div class="status_box">
+													<!-- 선물 -->
+													<th:block th:if="${order.giftPackYn == 'Y'}">
+														<p th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">주소 입력 대기중</p>
+														<p th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">선물 완료</p>
+														<p th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">선물 취소</p>
 													</th:block>
-													
-													<!-- 리뷰 쓰기 버튼 -->
-													<th:block th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99' and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
-														<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+													<!-- 주문 -->
+													<th:block th:unless="${order.giftPackYn == 'Y'}">
+														<p th:text="${ordDtl.ordDtlStatNm}"></p>
 													</th:block>
-												</th:block>
-												<!-- 주문 -->
-												<th:block th:unless="${order.giftPackYn == 'Y'}">
-													<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
-													<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40'}">
-														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+												</div>
+												<div class="button_box">
+													<!-- 선물 -->
+													<th:block th:if="${order.giftPackYn == 'Y'}">
+														<!-- SMS 재발송 버튼 -->
+														<th:block th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>
+														</th:block>
+														
+														<!-- 리뷰 쓰기 버튼 -->
+														<th:block th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99' and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
+															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+														</th:block>
 													</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}, supplyCompCd=${ordDtl.supplyCompCd}" 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}, supplyCompCd=${ordDtl.supplyCompCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
+													<!-- 주문 -->
+													<th:block th:unless="${order.giftPackYn == 'Y'}">
+														<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+														<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40'}">
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateChange(this, 'cancel');"><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}, supplyCompCd=${ordDtl.supplyCompCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
+														<!-- 교환/반품 신청 버튼(배송중, 출고완료, 배송완료) -->
+														<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}, supplyCompCd=${ordDtl.supplyCompCd}" 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}, supplyCompCd=${ordDtl.supplyCompCd}" 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}, supplyCompCd=${ordDtl.supplyCompCd}" 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}, supplyCompCd=${ordDtl.supplyCompCd}" 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>
+	
+															<!-- 교환/반품 신청 불가 상품 -->
+															<th:block th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'N'}">
+																<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
+															</th:block>
 														</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}, supplyCompCd=${ordDtl.supplyCompCd}" 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 th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55'}">
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnGoToDelivery(this);"><span>배송 조회</span></button></p>
 														</th:block>
-
-														<!-- 교환/반품 신청 불가 상품 -->
-														<th:block th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'N'}">
+	
+														<!-- 구매확정 버튼(배송완료) -->
+														<th:block th:if="${ordDtl.ordDtlStat == 'G013_60'}">
+															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></p>
+														</th:block>
+	
+														<!-- 리뷰작성 버튼(구매확정) -->
+														<th:block th:if="${(ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60' or ordDtl.ordDtlStat == 'G013_70') and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
+															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+														</th:block>
+	
+														<!-- 쇼핑백담기 버튼(구매확정) -->
+														<th:block th:if="${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_70' and (ordDtl.reviewableYn == 'N' or ordDtl.reviewSq > 0)}">
 															<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
 														</th:block>
 													</th:block>
-													
-													<!-- 배송조회 버튼(배송중) -->
-													<th:block th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55'}">
-														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnGoToDelivery(this);"><span>배송 조회</span></button></p>
-													</th:block>
-
-													<!-- 구매확정 버튼(배송완료) -->
-													<th:block th:if="${ordDtl.ordDtlStat == 'G013_60'}">
-														<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></p>
-													</th:block>
-
-													<!-- 리뷰작성 버튼(구매확정) -->
-													<th:block th:if="${(ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60' or ordDtl.ordDtlStat == 'G013_70') and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
-														<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
-													</th:block>
-
-													<!-- 쇼핑백담기 버튼(구매확정) -->
-													<th:block th:if="${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_70' and (ordDtl.reviewableYn == 'N' or ordDtl.reviewSq > 0)}">
-														<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
-													</th:block>
-												</th:block>
-											</div>
-										</div>
-										<!-- 선물 -->
-										<th:block th:if="${order.giftPackYn == 'Y'}">
-											<!-- 주소 입력 대기중 -->
-											<div class="order_text" th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">
-												<p th:text="|${ordDtl.recipNm}님이 주소를 입력하기 전입니다. (입력기한 ${ordDtl.giftLimitDt})|"></p>
-											</div>
-
-											<!-- 선물 완료 -->
-											<div class="order_text" th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">
-												<p th:text="|${ordDtl.recipNm}님께 선물이 발송되었습니다.|"></p>
-											</div>
-
-											<!-- 선물 취소 -->
-											<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_98' and ordDtl.ordDtlStat == 'G013_99'}">
-												<p th:text="|주소 입력 기한이 경과되어 선물이 취소 되었습니다.|"></p>
-											</div>
-										</th:block>
-										
-										<!-- 주문 -->
-										<th:block th:unless="${order.giftPackYn == 'Y'}">
-											<!-- 주문 접수 -->
-											<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>
-											
-											<!-- 배송중, 배송완료 -->
-											<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60'}">
-												<p th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'Y'}">해당 상품은 교환이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>
-												<p th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'N'}">해당 상품은 반품이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>
-												<p th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'N'}">해당 상품은 교환/반품이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>
-												<p th:if="${ordDtl.ordDtlStat == 'G013_60'}">15일 후 자동으로 구매확정됩니다.</p>
+												</div>
 											</div>
+											<!-- 선물 -->
+											<th:block th:if="${order.giftPackYn == 'Y'}">
+												<!-- 주소 입력 대기중 -->
+												<div class="order_text" th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">
+													<p th:text="|${ordDtl.recipNm}님이 주소를 입력하기 전입니다. (입력기한 ${ordDtl.giftLimitDt})|"></p>
+												</div>
+	
+												<!-- 선물 완료 -->
+												<div class="order_text" th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">
+													<p th:text="|${ordDtl.recipNm}님께 선물이 발송되었습니다.|"></p>
+												</div>
+	
+												<!-- 선물 취소 -->
+												<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_98' and ordDtl.ordDtlStat == 'G013_99'}">
+													<p th:text="|주소 입력 기한이 경과되어 선물이 취소 되었습니다.|"></p>
+												</div>
+											</th:block>
 											
-											<!-- 구매확정 -->
-											<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_70' and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
-												<p>리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다.</p>
-											</div>
-										</th:block>
+											<!-- 주문 -->
+											<th:block th:unless="${order.giftPackYn == 'Y'}">
+												<!-- 주문 접수 -->
+												<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>
+												
+												<!-- 배송중, 배송완료 -->
+												<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60'}">
+													<p th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'Y'}">해당 상품은 교환이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>
+													<p th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'N'}">해당 상품은 반품이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>
+													<p th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'N'}">해당 상품은 교환/반품이 불가능한 상품입니다. 문의사항은 1:1문의를 이용해주세요.</p>
+													<p th:if="${ordDtl.ordDtlStat == 'G013_60'}">15일 후 자동으로 구매확정됩니다.</p>
+												</div>
+												
+												<!-- 구매확정 -->
+												<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_70' and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
+													<p>리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다.</p>
+												</div>
+											</th:block>
+										</div>
+									</th:block>
+									<!-- //주문상품 -->
+								</div>
+								<div class="goods_foot" th:if="${order.freeGiftList.size() > 0}">
+									<div class="order_gift">
+										<span class="title">사은품</span>
+										<ul>
+											<li th:each="freeGift, status : ${order.freeGiftList}" th:text="${freeGift.goodsNm}">
+												<span th:text="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
+											</li> 
+										</ul>
 									</div>
-								</th:block>
-								<!-- //주문상품 -->
-							</div>
-							<div class="goods_foot" th:if="${order.freeGiftList.size() > 0}">
-								<div class="order_gift">
-									<span class="title">사은품</span>
-									<ul>
-										<li th:each="freeGift, status : ${order.freeGiftList}" th:text="${freeGift.goodsNm}">
-											<span th:text="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
-										</li> 
-									</ul>
 								</div>
 							</div>
-						</div>
-					</th:block>
-					<th:block th:if="${paymentInfo.payMeans == 'G014_20'}">
-						<h4 class="subH3">무통장 입금 정보</h4>
+						</th:block>
+						<th:block th:if="${paymentInfo.payMeans == 'G014_20'}">
+							<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="${paymentInfo.vaBank}"></span>&nbsp;<span th:text="|(${paymentInfo.vaNm})|"></span></li>
+													<li><span th:text="${paymentInfo.vaNo}"></span></li>
+													<li><span th:text="${paymentInfo.vaDeadlineYmd}"></span>&nbsp;<span th:text="${paymentInfo.vaDeadlineHms}"></span>&nbsp;까지</li>
+												</ul>
+											</div>
+										</td>
+									</tr>
+									</tbody></table>
+							</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="${paymentInfo.vaBank}"></span>&nbsp;<span th:text="|(${paymentInfo.vaNm})|"></span></li>
-												<li><span th:text="${paymentInfo.vaNo}"></span></li>
-												<li><span th:text="${paymentInfo.vaDeadlineYmd}"></span>&nbsp;<span th:text="${paymentInfo.vaDeadlineHms}"></span>&nbsp;까지</li>
-											</ul>
-										</div>
-									</td>
-								</tr>
-								</tbody></table>
+								<tbody>
+									<tr>
+										<th>
+											주문 고객
+										</th>
+										<td>
+											<div class="single_line">
+												<ul>
+													<li><span th:text="${orderInfo.ordNm}"></span></li>
+													<li><span th:text="${orderInfo.ordEmail}"></span></li>
+													<li><span th:text="${orderInfo.ordPhnno}"></span></li>
+												</ul>
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<th>
+											배송지 정보
+										</th>
+										<td>
+											<div class="block_line">
+												<ul>
+													<li>
+														<span th:text="${deliveryAddrInfo.recipNm}" id="recipNm"></span>
+													</li>
+													<li>
+														<span th:text="${deliveryAddrInfo.recipPhnno}" id="recipPhnno"></span>
+													</li>
+													<li>
+														<span th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|" id="recipAddr"></span>
+														<button type="button" class="btn btn_default btn_sm" th:if="${allCanYn == 'Y'}" onclick="fnChangeDeliveryAddr()"><span>배송지 변경</span></button>
+													</li>
+													<li>
+														배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${deliveryAddrInfo.delvMemo}"></span>
+														<button type="button" class="btn_underline" th:if="${allCanYn == 'Y'}" onclick="fnChangeDeliveryMemo()"><span>변경하기</span></button>
+													</li>
+												</ul>
+											</div>
+										</td>
+									</tr>
+								</tbody>
+							</table>
 						</div>
-					</th:block>
-					<h4 class="subH3">주문자/배송지 정보</h4>
-					<div class="tbl type1">
-						<table>
-							<colgroup>
-								<col width="210">
-								<col width="*">
-							</colgroup>
-							<tbody>
-								<tr>
-									<th>
-										주문 고객
-									</th>
+						<h4 class="subH3">결제정보</h4>
+						<div class="tbl type6">
+							<table>
+								<colgroup>
+									<col width="50%">
+									<col width="50%">
+								</colgroup>
+								<tbody><tr>
 									<td>
-										<div class="single_line">
-											<ul>
-												<li><span th:text="${orderInfo.ordNm}"></span></li>
-												<li><span th:text="${orderInfo.ordEmail}"></span></li>
-												<li><span th:text="${orderInfo.ordPhnno}"></span></li>
-											</ul>
-										</div>
+										<dl>
+											<div>
+												<dt>총 주문금액 (상품금액+배송비+추가비용)</dt>
+												<dd>
+													<div class="price">
+														<span class="order_total_price"><em th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></em>원</span>
+													</div>
+												</dd>
+											</div>
+											<div class="include_item" th:if="${orderAmtInfo.cpn1DcAmt > 0}"> <!-- 할인항목 표기 class명 include_item -->
+												<dt>상품할인(즉시할인)</dt>
+												<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.cpn1DcAmt, 1, 'COMMA')}|"></em>원</dd>
+											</div>
+											<div class="include_item" th:if="${orderAmtInfo.tmtb1DcAmt + orderAmtInfo.tmtb2DcAmt > 0}">
+												<dt>다다익선 할인</dt>
+												<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.tmtb1DcAmt + orderAmtInfo.tmtb2DcAmt, 1, 'COMMA')}|"></em>원</dd>
+											</div>
+											<div class="include_item" th:if="${orderAmtInfo.cartCpnDcAmt + orderAmtInfo.goodsCpnDcAmt + orderAmtInfo.delvCpnDcAmt > 0}">
+												<dt>쿠폰할인</dt>
+												<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.cartCpnDcAmt + orderAmtInfo.goodsCpnDcAmt + orderAmtInfo.delvCpnDcAmt, 1, 'COMMA')}|"></em>원</dd>
+											</div>
+											<div class="include_item" th:if="${orderAmtInfo.prePntDcAmt > 0}">
+												<dt>선포인트 할인</dt>
+												<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.prePntDcAmt, 1, 'COMMA')}|"></em>원</dd>
+											</div>
+											<div class="include_item" th:if="${orderAmtInfo.pntDcAmt > 0}">
+												<dt>포인트 사용</dt>
+												<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.pntDcAmt, 1, 'COMMA')}|"></em>원</dd>
+											</div>
+											<div class="include_item" th:if="${orderAmtInfo.gfcdUseAmt > 0}">
+												<dt>상품권 사용</dt>
+												<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.gfcdUseAmt, 1, 'COMMA')}|"></em>원</dd>
+											</div>
+											<div class="include_item" th:if="${paymentInfo.npayPntAmt > 0}">
+												<dt>마일리지 사용</dt>
+												<dd><em th:text="|- ${#numbers.formatInteger(paymentInfo.npayPntAmt, 1, 'COMMA')}|"></em>원</dd>
+											</div>
+											<div class="include_item" th:if="${paymentInfo.pgCpnAmt > 0}">
+												<dt>제휴할인</dt>
+												<dd><em th:text="|- ${#numbers.formatInteger(paymentInfo.pgCpnAmt, 1, 'COMMA')}|"></em>원</dd>
+											</div>
+										</dl>
 									</td>
-								</tr>
-								<tr>
-									<th>
-										배송지 정보
-									</th>
 									<td>
-										<div class="block_line">
-											<ul>
-												<li>
-													<span th:text="${deliveryAddrInfo.recipNm}" id="recipNm"></span>
-												</li>
-												<li>
-													<span th:text="${deliveryAddrInfo.recipPhnno}" id="recipPhnno"></span>
-												</li>
-												<li>
-													<span th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|" id="recipAddr"></span>
-													<button type="button" class="btn btn_default btn_sm" th:if="${allCanYn == 'Y'}" onclick="fnChangeDeliveryAddr()"><span>배송지 변경</span></button>
-												</li>
-												<li>
-													배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${deliveryAddrInfo.delvMemo}"></span>
-													<button type="button" class="btn_underline" th:if="${allCanYn == 'Y'}" onclick="fnChangeDeliveryMemo()"><span>변경하기</span></button>
-												</li>
-											</ul>
-										</div>
+										<dl>
+											<div>
+												<dt>결제 금액</dt>
+												<dd>
+													<div class="price">
+														<span class="pay_total_price"><em th:text="${#numbers.formatInteger(orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></em>원</span>
+													</div>
+												</dd>
+											</div>
+											<div>
+												<dt class="sr-only">결제방법</dt>
+												<!-- TODO -->
+												<!-- Style24 간편결제 처리 (STYLE24 간편결제 : STYLE24 간편결제명 / 카드사명 / 할부개월(일시불)) -->
+												<dd th:if="${paymentInfo.pgGb == 'NAVER'}">네이버 페이</dd>
+												<dd th:if="${paymentInfo.pgGb == 'KAKAO'}">카카오 페이</dd>
+												<dd th:if="${paymentInfo.pgGb == 'PAYCO'}">PAYCO</dd>
+												<dd th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_10'}">실시간계좌이체</dd>
+												<dd th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_20'}">무통장입금</dd>
+												<dd th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" th:text="|${paymentInfo.cardNm}/${paymentInfo.cardMips}|"></dd>
+												<dd th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_60'}">휴대폰결제</dd>
+											</div>
+											<div>
+												<dt class="sr-only">영수증 확인</dt>
+												<dd>
+													<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 #strings.isEmpty(paymentInfo.cashAuthNo)}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
+												</dd>
+											</div>
+										</dl>
+										<dl>
+											<div>
+												<dt>적립 예정 포인트</dt>
+												<dd>
+													<span class="save_point"><em th:text="|${#numbers.formatInteger(orderAmtInfo.savePntAmt, 1, 'COMMA')}P|"></em></span>
+												</dd>
+											</div>
+										</dl>
 									</td>
 								</tr>
-							</tbody>
-						</table>
-					</div>
-					<h4 class="subH3">결제정보</h4>
-					<div class="tbl type6">
-						<table>
-							<colgroup>
-								<col width="50%">
-								<col width="50%">
-							</colgroup>
-							<tbody><tr>
-								<td>
-									<dl>
-										<div>
-											<dt>총 주문금액 (상품금액+배송비+추가비용)</dt>
-											<dd>
-												<div class="price">
-													<span class="order_total_price"><em th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></em>원</span>
-												</div>
-											</dd>
-										</div>
-										<div class="include_item" th:if="${orderAmtInfo.cpn1DcAmt > 0}"> <!-- 할인항목 표기 class명 include_item -->
-											<dt>상품할인(즉시할인)</dt>
-											<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.cpn1DcAmt, 1, 'COMMA')}|"></em>원</dd>
-										</div>
-										<div class="include_item" th:if="${orderAmtInfo.tmtb1DcAmt + orderAmtInfo.tmtb2DcAmt > 0}">
-											<dt>다다익선 할인</dt>
-											<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.tmtb1DcAmt + orderAmtInfo.tmtb2DcAmt, 1, 'COMMA')}|"></em>원</dd>
-										</div>
-										<div class="include_item" th:if="${orderAmtInfo.cartCpnDcAmt + orderAmtInfo.goodsCpnDcAmt + orderAmtInfo.delvCpnDcAmt > 0}">
-											<dt>쿠폰할인</dt>
-											<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.cartCpnDcAmt + orderAmtInfo.goodsCpnDcAmt + orderAmtInfo.delvCpnDcAmt, 1, 'COMMA')}|"></em>원</dd>
-										</div>
-										<div class="include_item" th:if="${orderAmtInfo.prePntDcAmt > 0}">
-											<dt>선포인트 할인</dt>
-											<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.prePntDcAmt, 1, 'COMMA')}|"></em>원</dd>
-										</div>
-										<div class="include_item" th:if="${orderAmtInfo.pntDcAmt > 0}">
-											<dt>포인트 사용</dt>
-											<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.pntDcAmt, 1, 'COMMA')}|"></em>원</dd>
-										</div>
-										<div class="include_item" th:if="${orderAmtInfo.gfcdUseAmt > 0}">
-											<dt>상품권 사용</dt>
-											<dd><em th:text="|- ${#numbers.formatInteger(orderAmtInfo.gfcdUseAmt, 1, 'COMMA')}|"></em>원</dd>
-										</div>
-										<div class="include_item" th:if="${paymentInfo.npayPntAmt > 0}">
-											<dt>마일리지 사용</dt>
-											<dd><em th:text="|- ${#numbers.formatInteger(paymentInfo.npayPntAmt, 1, 'COMMA')}|"></em>원</dd>
-										</div>
-										<div class="include_item" th:if="${paymentInfo.pgCpnAmt > 0}">
-											<dt>제휴할인</dt>
-											<dd><em th:text="|- ${#numbers.formatInteger(paymentInfo.pgCpnAmt, 1, 'COMMA')}|"></em>원</dd>
-										</div>
-									</dl>
-								</td>
-								<td>
-									<dl>
-										<div>
-											<dt>결제 금액</dt>
-											<dd>
-												<div class="price">
-													<span class="pay_total_price"><em th:text="${#numbers.formatInteger(orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></em>원</span>
-												</div>
-											</dd>
-										</div>
-										<div>
-											<dt class="sr-only">결제방법</dt>
-											<!-- TODO -->
-											<!-- Style24 간편결제 처리 (STYLE24 간편결제 : STYLE24 간편결제명 / 카드사명 / 할부개월(일시불)) -->
-											<dd th:if="${paymentInfo.pgGb == 'NAVER'}">네이버 페이</dd>
-											<dd th:if="${paymentInfo.pgGb == 'KAKAO'}">카카오 페이</dd>
-											<dd th:if="${paymentInfo.pgGb == 'PAYCO'}">PAYCO</dd>
-											<dd th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_10'}">실시간계좌이체</dd>
-											<dd th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_20'}">무통장입금</dd>
-											<dd th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" th:text="|${paymentInfo.cardNm}/${paymentInfo.cardMips}|"></dd>
-											<dd th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_60'}">휴대폰결제</dd>
-										</div>
-										<div>
-											<dt class="sr-only">영수증 확인</dt>
-											<dd>
-												<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 #strings.isEmpty(paymentInfo.cashAuthNo)}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
-											</dd>
-										</div>
-									</dl>
-									<dl>
-										<div>
-											<dt>적립 예정 포인트</dt>
-											<dd>
-												<span class="save_point"><em th:text="|${#numbers.formatInteger(orderAmtInfo.savePntAmt, 1, 'COMMA')}P|"></em></span>
-											</dd>
-										</div>
-									</dl>
-								</td>
-							</tr>
-							</tbody></table>
-					</div>
-					<div class="btn_footer_area">
-						<button type="button" class="btn btn_dark btn_md"><span>확인</span></button>
+								</tbody></table>
+						</div>
+						<div class="btn_footer_area">
+							<button type="button" class="btn btn_dark btn_md"><span>확인</span></button>
+						</div>
 					</div>
-				</div>
+				</form>
 			</div>
 			<form id="exchangeForm" name="exchangeForm" th:action="@{'/mypage/exchange/form'}" th:method="post">
 				<input type="hidden" name="ordNo"/>
@@ -442,6 +444,16 @@
 			</form>
 			<!-- // CONT-BODY -->
 		</div>
+
+		<!-- 환불계좌 등록 팝업 -->
+		<div class="modal fade refund_pop" id="refundPop" tabindex="-1" role="dialog" aria-labelledby="refundLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content"></div>
+			</div>
+			<a href="#close-modal" rel="modal:close" id="refundPop_close" class="close-modal">Close</a>
+			<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
+		</div>
+		<!-- //환불계좌 등록 팝업 -->
 	</div>
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
@@ -465,17 +477,37 @@
 	// 전체취소 버튼 클릭 이벤트
 	var fnAllCancel = function() {
 		// 환불계좌 체크
-		let accountNo = $('input[name=accountNo]').val();
-		let accountNm = $('input[name=accountNm]').val();
-		let bankCd = $('input[name=bankCd]').val();
+		let accountNo = $('#orderDetailForm input[name=accountNo]').val();
+		let accountNm = $('#orderDetailForm input[name=accountNm]').val();
+		let bankCd = $('#orderDetailForm input[name=bankCd]').val();
 
-		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_00' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
-			// TODO
-			// 환불계좌 등록 팝업
+		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+			let data = {};
+			data.ordNo = oneData.ordNo;
+			data.accountNm = oneData.accountNm;
+			
+			let jsonData = JSON.stringify(data);
+			
+			$.ajax( {
+				type		: "POST",
+				url 		: '/mypage/refund/account/register/popup/form',
+				data		: jsonData,
+				dataType 	: 'html',
+				beforeSend : function(xhr, settings) {
+					xhr.setRequestHeader("AJAX"			, "true");
+					xhr.setRequestHeader('Accept'		, 'application/json');
+					xhr.setRequestHeader('Content-Type'	, 'application/json');
+					gagajf.showProgressbar(true);
+				},
+				success 	: function(result) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
 			
 			return false;
 		}
-		
+
 		mcxDialog.confirm('전체취소 처리하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
@@ -485,13 +517,13 @@
 				
 				// 주문상세번호 설정
 				let ordDtlNoArr = [];
-				$.each($('input[name=ordDtlNoArr]'), function(idx, item) {
+				$.each($('#orderDetailForm input[name=ordDtlNoArr]'), function(idx, item) {
 					ordDtlNoArr.push($(item).val());
 				});
 				
 				// 취소 수량 설정
 				let cnclRtnReqQtyArr = [];
-				$.each($('input[name=cnclRtnReqQtyArr]'), function(idx, item) {
+				$.each($('#orderDetailForm input[name=cnclRtnReqQtyArr]'), function(idx, item) {
 					cnclRtnReqQtyArr.push($(item).val());
 				});
 				
@@ -563,6 +595,17 @@
 
 		$("#delvMemo").text(delvMemo);
 	}
+
+	// 환불계좌 등록 콜백 처리
+	var fnRegisterAccountCallback = function(result) {
+		// 환불계좌 정보 설정
+		$('#orderDetailForm input[name=accountNo]').val(result.accountNo);
+		$('#orderDetailForm input[name=accountNm]').val(result.accountNm);
+		$('#orderDetailForm input[name=bankCd]').val(result.bankCd);
+		
+		// 반품처리
+		fnReturn();
+	}
 </script>
 
 </th:block>

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

@@ -227,7 +227,7 @@
 
 		// 셀렉트박스 활성화
 		$('.select_custom.order_status').each(function(index) {
-			var selecter01 = new sCombo($(this));
+			new sCombo($(this));
 		});
 
 		// 주문 검색 기간 설정

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

@@ -32,299 +32,311 @@
 				</div>
 			</div>
 			<div class="cont">
-				<input type="hidden" name="accountNo" th:value="${oneData.accountNo}"/>
-				<input type="hidden" name="accountNm" th:value="${oneData.accountNm}"/>
-				<input type="hidden" name="bankCd" th:value="${oneData.bankCd}"/>
-				<div class="sec_head">
-					<h3 class="subH1">반품 신청</h3>
-					<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${oneData.ordNo}"></em></span>
-				</div>
-				<div class="sec_body">
-					<div class="part_goods">
-						<div class="goods_head">
-							<p th:unless="${oneData.giftPackYn == 'Y'}">주문일 <span th:text="${oneData.ordDt}"></span></p>
-							<p th:if="${oneData.giftPackYn == 'Y'}">선물일 <span th:text="${oneData.ordDt}"></span></p>
-						</div>
-						<div class="goods_cont">
-							<th:block th:if="${returnList.returnList}" th:each="return, status : ${returnList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
-							<!-- 주문상품 -->
-							<div class="goods_info">
-								<div class="order_desc">
-									<div class="goods_box">
-										<div class="gd_item">
-											<a href="javascript:void(0)" th:attr="goodsCd=${return.goodsCd}" onclick="fnGoToGoodsDetail(this)">
-												<span class="thumb">
-													<img th:src="${imageUrl + '/' + return.sysImgNm}" width="100%" alt="">
-												</span>
+				<form id="returnForm">
+					<input type="hidden" name="accountNo" th:value="${oneData.accountNo}"/>
+					<input type="hidden" name="accountNm" th:value="${oneData.accountNm}"/>
+					<input type="hidden" name="bankCd" th:value="${oneData.bankCd}"/>
+					<div class="sec_head">
+						<h3 class="subH1">반품 신청</h3>
+						<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${oneData.ordNo}"></em></span>
+					</div>
+					<div class="sec_body">
+						<div class="part_goods">
+							<div class="goods_head">
+								<p th:unless="${oneData.giftPackYn == 'Y'}">주문일 <span th:text="${oneData.ordDt}"></span></p>
+								<p th:if="${oneData.giftPackYn == 'Y'}">선물일 <span th:text="${oneData.ordDt}"></span></p>
+							</div>
+							<div class="goods_cont">
+								<th:block th:if="${returnList.returnList}" th:each="return, status : ${returnList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<!-- 주문상품 -->
+								<div class="goods_info">
+									<div class="order_desc">
+										<div class="goods_box">
+											<div class="gd_item">
+												<a href="javascript:void(0)" th:attr="goodsCd=${return.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+													<span class="thumb">
+														<img th:src="${imageUrl + '/' + return.sysImgNm}" width="100%" alt="">
+													</span>
+													<p>
+														<span class="brand" th:text="${return.brandNm}"></span>
+														<span class="tag primary" th:if="${return.shotDelvYn == 'Y'}">총알배송</span>
+														<span class="tag" th:if="${return.shotDelvYn == 'N' and return.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+														<span class="tag" th:if="${return.selfGoodsYn == 'N'}">업체직배송</span>
+													</p>
+													<p>
+														<span class="name" th:text="${return.goodsNm}"></span>
+													</p>
+												</a>
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title sr-only">주문 옵션</span>
+													<span class="option" th:if="${return.goodsType == 'G056_S'}" th:each="option, status : ${return.colorNmArr}" th:text="|${return.itemNmArr[status.index]} / ${option} / ${return.optCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${return.goodsType == 'G056_S'}" th:text="|${return.colorNm} / ${return.optCd2}|"></span>
+												</div>
+											</div>
+											<div class="gd_calc">
 												<p>
-													<span class="brand" th:text="${return.brandNm}"></span>
-													<span class="tag primary" th:if="${return.shotDelvYn == 'Y'}">총알배송</span>
-													<span class="tag" th:if="${return.shotDelvYn == 'N' and return.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
-													<span class="tag" th:if="${return.selfGoodsYn == 'N'}">업체직배송</span>
+													<span class="count"><em th:text="${return.ordQty - return.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="name" th:text="${return.goodsNm}"></span>
+													<span class="price_org" th:if="${(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_sale"><em th:text="${#numbers.formatInteger(return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
-											</a>
-										</div>
-										<div class="gd_opt">
-											<div class="option_wrap">
-												<span class="title sr-only">주문 옵션</span>
-												<span class="option" th:if="${return.goodsType == 'G056_S'}" th:each="option, status : ${return.colorNmArr}" th:text="|${return.itemNmArr[status.index]} / ${option} / ${return.optCd2Arr[status.index]}|"></span>
-												<span class="option" th:unless="${return.goodsType == 'G056_S'}" th:text="|${return.colorNm} / ${return.optCd2}|"></span>
 											</div>
 										</div>
-										<div class="gd_calc">
-											<p>
-												<span class="count"><em th:text="${return.ordQty - return.cnclRtnQty}"></em>개</span>
-											</p>
-											<p>
-												<span class="price_org" th:if="${(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
-												<span class="price_sale"><em th:text="${#numbers.formatInteger(return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
-											</p>
-										</div>
-									</div>
-									<div class="button_box">
-										<div class="count_modify">
-											<span class="txt">수량</span>
-											<form class="form_wrap">
-												<div class="form_field">
-													<div class="select_custom select_count">
-														<div class="combo">
-															<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${return.ordDtlNo}, ordCanChgQty=${return.ordCanChgQty}"/>
-															<div class="select">선택</div>
-															<ul class="list">
-																<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
-																<li class="selected" qty="0" onclick="fnChangeReturnQty(this);">선택</li>
-																<li th:if="${return.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,return.ordCanChgQty)}" th:attr="qty=${num}" th:text="${num}" onclick="fnChangeReturnQty(this);"></li>
-															</ul>
+										<div class="button_box">
+											<div class="count_modify">
+												<span class="txt">수량</span>
+												<form class="form_wrap">
+													<div class="form_field">
+														<div class="select_custom select_count">
+															<div class="combo">
+																<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${return.ordDtlNo}, ordCanChgQty=${return.ordCanChgQty}"/>
+																<div class="select">선택</div>
+																<ul class="list">
+																	<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+																	<li class="selected" qty="0" onclick="fnChangeReturnQty(this);">선택</li>
+																	<li th:if="${return.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,return.ordCanChgQty)}" th:attr="qty=${num}" th:text="${num}" onclick="fnChangeReturnQty(this);"></li>
+																</ul>
+															</div>
 														</div>
 													</div>
-												</div>
-											</form>
+												</form>
+											</div>
 										</div>
 									</div>
+									<div class="order_text">
+										<p>반품하실 상품의 수량을 선택하신 후 반품 신청을 하실 수 있습니다.</p>
+									</div>
 								</div>
-								<div class="order_text">
-									<p>반품하실 상품의 수량을 선택하신 후 반품 신청을 하실 수 있습니다.</p>
-								</div>
+								<!-- //주문상품 -->
+								</th:block>
 							</div>
-							<!-- //주문상품 -->
-							</th:block>
 						</div>
-					</div>
-					<h4 class="subH3">반품 사유</h4>
-					<div class="tbl type1">
-						<table>
-							<tbody>
-								<tr>
-									<td>
-										<div class="form_field">
-											<div class="select_custom select_reason">
-												<div class="combo">
-													<input type="hidden" name="chgReason"/>
-													<div class="select">반품 사유를 선택하세요.</div>
-													<ul class="list">
-														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
-														<li class="selected">반품 사유를 선택하세요.</li>
-														<li th:if="${returnReason}" th:each="oneData, status : ${returnReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeReturnReason(this);"></li>
-													</ul>
+						<h4 class="subH3">반품 사유</h4>
+						<div class="tbl type1">
+							<table>
+								<tbody>
+									<tr>
+										<td>
+											<div class="form_field">
+												<div class="select_custom select_reason">
+													<div class="combo">
+														<input type="hidden" name="chgReason"/>
+														<div class="select">반품 사유를 선택하세요.</div>
+														<ul class="list">
+															<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+															<li class="selected">반품 사유를 선택하세요.</li>
+															<li th:if="${returnReason}" th:each="oneData, status : ${returnReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeReturnReason(this);"></li>
+														</ul>
+													</div>
 												</div>
 											</div>
-										</div>
-									</td>
-								</tr>
-								<tr>
-									<td>
-										<div class="form_field">
-											<div class="input_wrap">
-												<textarea class="doc_reason" name="chgMemo" id="chgMemo" cols="30" rows="10" placeholder="자세한 사유를 입력해주세요."  onkeyup="cfnGetTextLength(this, 200, $('#return_cnt'));" style="resize: none;"></textarea>
-												<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
-											</div>
-										</div>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-					</div>
-					<h4 class="subH3">반품 방식 선택</h4>
-					<div class="tbl type1">
-						<table>
-							<tbody>
-								<tr>
-									<td>
-										<div class="retrieve_method">
+										</td>
+									</tr>
+									<tr>
+										<td>
 											<div class="form_field">
-												<div>
-													<input type="radio" name="wdGb" id="withdraw" value="W" checked>
-													<label for="withdraw"><span>방문회수<em>택배사에서 고객에게 방문하여 회수</em></span></label>
-												</div>
-												<div>
-													<input type="radio" name="wdGb" id="direct" value="D">
-													<label for="direct"><span>직접배송<em>고객이 반품지로 직접 반송</em></span></label>
+												<div class="input_wrap">
+													<textarea class="doc_reason" name="chgMemo" id="chgMemo" cols="30" rows="10" placeholder="자세한 사유를 입력해주세요."  onkeyup="cfnGetTextLength(this, 200, $('#return_cnt'));" style="resize: none;"></textarea>
+													<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
 												</div>
 											</div>
-										</div>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-					</div>
-					<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
-						<h4 class="subH3">반품 회수지 주소 <span class="tit_info">택배사에서 반품 상품을 직접 회수할 장소 선택</span></h4>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						<h4 class="subH3">반품 방식 선택</h4>
 						<div class="tbl type1">
 							<table>
-								<colgroup>
-									<col width="210">
-									<col width="*">
-								</colgroup>
 								<tbody>
 									<tr>
-										<th>성명</th>
-										<td id="chgerNm" th:text="${deliveryAddrInfo.recipNm}"></td>
-										<input type="hidden" name="chgerNm" th:value="${deliveryAddrInfo.recipNm}">
-									</tr>
-									<tr>
-										<th>연락처</th>
-										<td id="chgerPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></td>
-										<input type="hidden" name="chgerPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
-									</tr>
-									<tr>
-										<th>주소</th>
-										<td id="chgerAddr">
-											<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr('chger');"><span>회수지 변경</span></button>
+										<td>
+											<div class="retrieve_method">
+												<div class="form_field">
+													<div>
+														<input type="radio" name="wdGb" id="withdraw" value="W" checked>
+														<label for="withdraw"><span>방문회수<em>택배사에서 고객에게 방문하여 회수</em></span></label>
+													</div>
+													<div>
+														<input type="radio" name="wdGb" id="direct" value="D">
+														<label for="direct"><span>직접배송<em>고객이 반품지로 직접 반송</em></span></label>
+													</div>
+												</div>
+											</div>
 										</td>
-										<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.chgerZipcode}">
-										<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.chgerRtnMemo}">
 									</tr>
 								</tbody>
 							</table>
 						</div>
-					</div>
-					<div class="retrieve_box direct" style="display:none;" id="returnLocation">
-						<h4 class="subH3">반송 정보</h4>
-						<div class="tbl type1">
+						<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
+							<h4 class="subH3">반품 회수지 주소 <span class="tit_info">택배사에서 반품 상품을 직접 회수할 장소 선택</span></h4>
+							<div class="tbl type1">
+								<table>
+									<colgroup>
+										<col width="210">
+										<col width="*">
+									</colgroup>
+									<tbody>
+										<tr>
+											<th>성명</th>
+											<td id="chgerNm" th:text="${deliveryAddrInfo.recipNm}"></td>
+											<input type="hidden" name="chgerNm" th:value="${deliveryAddrInfo.recipNm}">
+										</tr>
+										<tr>
+											<th>연락처</th>
+											<td id="chgerPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></td>
+											<input type="hidden" name="chgerPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
+										</tr>
+										<tr>
+											<th>주소</th>
+											<td id="chgerAddr">
+												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
+												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
+											</td>
+											<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.chgerZipcode}">
+											<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.chgerRtnMemo}">
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</div>
+						<div class="retrieve_box direct" style="display:none;" id="returnLocation">
+							<h4 class="subH3">반송 정보</h4>
+							<div class="tbl type1">
+								<table>
+									<colgroup>
+										<col width="210">
+										<col width="*">
+									</colgroup>
+									<tbody>
+										<tr>
+											<th>
+												반송주소
+											</th>
+											<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
+										</tr>
+										<tr>
+											<th>
+												반송 송장번호
+											</th>
+											<td>
+												<form class="form_wrap">
+													<div class="form_field">
+														<div class="input_wrap">
+															<input type="text" class="form_control" name="wdInvoiceNo" placeholder="송장번호를 입력해주세요.">
+														</div>
+													</div>
+												</form>
+											</td>
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</div>
+						<h4 class="subH3">환불정보</h4>
+						<div class="tbl type6">
 							<table>
 								<colgroup>
-									<col width="210">
-									<col width="*">
+									<col width="50%">
+									<col width="50%">
 								</colgroup>
 								<tbody>
 									<tr>
-										<th>
-											반송주소
-										</th>
-										<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
-									</tr>
-									<tr>
-										<th>
-											반송 송장번호
-										</th>
 										<td>
-											<form class="form_wrap">
-												<div class="form_field">
-													<div class="input_wrap">
-														<input type="text" class="form_control" name="wdInvoiceNo" placeholder="송장번호를 입력해주세요.">
-													</div>
+											<dl>
+												<div>
+													<dt>환불 예정 금액</dt>
+													<dd>
+														<div class="price">
+															<span class="return_total_price"><em id="returnAmt">0</em>원</span>
+														</div>
+													</dd>
+												</div>
+												<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
+													<dt>상품 취소 금액</dt>
+													<dd><em id="goodsCancelAmt">0</em>원</dd>
+												</div>
+												<div class="include_item">
+													<dt>배송비</dt>
+													<dd><em id="deliveryFee">0</em>원</dd>
+												</div>
+												<div class="include_item">
+													<dt>할인 금액 차감</dt>
+													<dd><em id="deductDcAmt">0</em>원</dd>
 												</div>
-											</form>
+											</dl>
+										</td>
+										<td>
+											<dl>
+												<div>
+													<dt>환불 수단</dt>
+													<dd th:if="${paymentInfo.pgGb == 'KCP'}" th:text="${paymentInfo.payMeansNm}"></dd>
+													<dd th:if="${paymentInfo.pgGb == 'NAVER'}">네이버페이</dd>
+													<dd th:if="${paymentInfo.pgGb == 'KAKAO'}">카카오페이</dd>
+													<dd th:if="${paymentInfo.pgGb == 'PAYCO'}">PAYCO</dd>
+												</div>
+												<div>
+													<dt>결제 금액 환불</dt>
+													<dd>
+														<em id="refundPayAmt">0</em>원
+													</dd>
+												</div>
+												<div>
+													<dt>포인트 환불</dt>
+													<dd>
+														<em id="refundPoint">0</em>P
+													</dd>
+												</div>
+												<div>
+													<dt>상품권 환불</dt>
+													<dd>
+														<em id="refundGiftCard">0</em>원
+													</dd>
+												</div>
+											</dl>
 										</td>
 									</tr>
 								</tbody>
 							</table>
 						</div>
+						<div class="txt_info">
+							<ul>
+								<li>
+									카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
+								</li>
+							</ul>
+						</div>
+	
+						<div class="info_footer_area" id="addDeliveryFee" style="display:none">
+							<p>
+								<span id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.
+								<input type="hidden" name="addPayCost"/>
+							</p>
+						</div>
+						<div class="btn_footer_area">
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>취소</span></button>
+							<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnReturn()"><span>반품 신청</span></button>
+						</div>
 					</div>
-					<h4 class="subH3">환불정보</h4>
-					<div class="tbl type6">
-						<table>
-							<colgroup>
-								<col width="50%">
-								<col width="50%">
-							</colgroup>
-							<tbody>
-								<tr>
-									<td>
-										<dl>
-											<div>
-												<dt>환불 예정 금액</dt>
-												<dd>
-													<div class="price">
-														<span class="return_total_price"><em id="returnAmt">0</em>원</span>
-													</div>
-												</dd>
-											</div>
-											<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
-												<dt>상품 취소 금액</dt>
-												<dd><em id="goodsCancelAmt">0</em>원</dd>
-											</div>
-											<div class="include_item">
-												<dt>배송비</dt>
-												<dd><em id="deliveryFee">0</em>원</dd>
-											</div>
-											<div class="include_item">
-												<dt>할인 금액 차감</dt>
-												<dd><em id="deductDcAmt">0</em>원</dd>
-											</div>
-										</dl>
-									</td>
-									<td>
-										<dl>
-											<div>
-												<dt>환불 수단</dt>
-												<dd th:if="${paymentInfo.pgGb == 'KCP'}" th:text="${paymentInfo.payMeansNm}"></dd>
-												<dd th:if="${paymentInfo.pgGb == 'NAVER'}">네이버페이</dd>
-												<dd th:if="${paymentInfo.pgGb == 'KAKAO'}">카카오페이</dd>
-												<dd th:if="${paymentInfo.pgGb == 'PAYCO'}">PAYCO</dd>
-											</div>
-											<div>
-												<dt>결제 금액 환불</dt>
-												<dd>
-													<em id="refundPayAmt">0</em>원
-												</dd>
-											</div>
-											<div>
-												<dt>포인트 환불</dt>
-												<dd>
-													<em id="refundPoint">0</em>P
-												</dd>
-											</div>
-											<div>
-												<dt>상품권 환불</dt>
-												<dd>
-													<em id="refundGiftCard">0</em>원
-												</dd>
-											</div>
-										</dl>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-					</div>
-					<div class="txt_info">
-						<ul>
-							<li>
-								카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
-							</li>
-						</ul>
-					</div>
-
-					<div class="info_footer_area" id="addDeliveryFee" style="display:none">
-						<p>
-							<span id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.
-							<input type="hidden" name="addPayCost"/>
-						</p>
-					</div>
-					<div class="btn_footer_area">
-						<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>취소</span></button>
-						<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnReturn()"><span>반품 신청</span></button>
-					</div>
-				</div>
+				</form>
 			</div>
 			<!-- // CONT-BODY -->
 		</div>
+
+		<!-- 환불계좌 등록 팝업 -->
+		<div class="modal fade refund_pop" id="refundPop" tabindex="-1" role="dialog" aria-labelledby="refundLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content"></div>
+			</div>
+			<a href="#close-modal" rel="modal:close" id="refundPop_close" class="close-modal">Close</a>
+			<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
+		</div>
+		<!-- //환불계좌 등록 팝업 -->
 	</div>
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
@@ -334,9 +346,9 @@
 	let paymentInfo = [[${paymentInfo}]];
 	let usedGiftCardInfo = [[${usedGiftCardInfo}]];
 	let usedPointInfo = [[${usedPointInfo}]];
-	var isCustomer = true;
+	let isCustomer = true;
 	let jsonObj = {};
-	let addPayCost = 0;
+	//let addPayCost = 0;
 
 	$(document).ready(function() {
 		// 마이페이지 LNB 설정
@@ -363,15 +375,15 @@
 		let url = '/mypage/return';
 
 		// 반품 사유 체크
-		let chgReason = $('input[name=chgReason]').val();
+		let chgReason = $('#returnForm input[name=chgReason]').val();
 		if (gagajf.isNull(chgReason)) {
 			mcxDialog.alert('반품사유를 선택해주세요.');
 			return false;
 		}
 
 		// 반송 송장번호 체크
-		let wdGb = $('input[name=wdGb]:radio:checked').val();
-		let wdInvoiceNo = $('input[name=chgReason]').val();
+		let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+		let wdInvoiceNo = $('#returnForm input[name=chgReason]').val();
 		if (wdGb == 'D' && gagajf.isNull(wdInvoiceNo)) {
 			mcxDialog.alert('직접 반송하신 송장번호를 입력해주세요.');
 			return false;
@@ -381,7 +393,7 @@
 		let ordDtlNoArr = [];
 		let cnclRtnReqQtyArr = [];
 		let chkQty = 0;
-		$.each($('input[name=chgQty]'), function(idx, item) {
+		$.each($('#returnForm input[name=chgQty]'), function(idx, item) {
 			let chgQty = $(item).val();
 			let ordDtlNo = $(item).attr('ordDtlNo');
 			
@@ -397,18 +409,39 @@
 		}
 
 		// 환불계좌 체크
-		let accountNo = $('input[name=accountNo]').val();
-		let accountNm = $('input[name=accountNm]').val();
-		let bankCd = $('input[name=bankCd]').val();
+		let accountNo = $('#returnForm input[name=accountNo]').val();
+		let accountNm = $('#returnForm input[name=accountNm]').val();
+		let bankCd = $('#returnForm input[name=bankCd]').val();
+
+		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+			let data = {};
+			data.ordNo = oneData.ordNo;
+			data.accountNm = oneData.accountNm;
+
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type		: "POST",
+				url 		: '/mypage/refund/account/register/popup/form',
+				data		: jsonData,
+				dataType 	: 'html',
+				beforeSend : function(xhr, settings) {
+					xhr.setRequestHeader("AJAX"			, "true");
+					xhr.setRequestHeader('Accept'		, 'application/json');
+					xhr.setRequestHeader('Content-Type'	, 'application/json');
+					gagajf.showProgressbar(true);
+				},
+				success 	: function(result) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
 
-		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_00' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
-			// TODO
-			// 환불계좌 등록 팝업
-			
 			return false;
 		}
 
 		// 추가배송비 PG 처리
+		let addPayCost = $('#returnForm input[name=addPayCost]').val();
 		if (addPayCost > 0) {
 			// TODO
 			// 추가배송비 PG 처리
@@ -418,18 +451,18 @@
 		data.ordNo = oneData.ordNo;
 		data.ordChgSq = 0;
 		data.chgReason = chgReason;
-		data.chgMemo = $('input[name=chgMemo]').val();
-		data.accountNo = $('input[name=accountNo]').val();
-		data.accountNm = $('input[name=accountNm]').val();
-		data.bankCd = $('input[name=bankCd]').val();
+		data.chgMemo = $('#returnForm input[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 = wdGb;
 		data.chgerNm = $('#chgerNm').text();
-		data.chgerZipcode = $('input[name=chgerZipcode]').val();
-		data.chgerBaseAddr = $('input[name=chgerBaseAddr]').val();
-		data.chgerDtlAddr = $('input[name=chgerDtlAddr]').val();
-		data.chgerPhnno = $('input[name=chgerPhnno]').val();
-		data.chgerRtnMemo = $('input[name=chgerRtnMemo]').val();
+		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.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
 
@@ -448,14 +481,14 @@
 			$(param).parent().parent().find('input[name=chgQty]').val($(param).attr('qty'));
 		}
 
-		let chgReason = $('input[name=chgReason]').val();
+		let chgReason = $('#returnForm input[name=chgReason]').val();
 
 		if (!gagajf.isNull(chgReason)) {
 			// 반품 수량 설정
 			let cnclRtnReqQtyArr = [];
 			let ordDtlNoArr = [];
 			let ordCanChgQtyArr = [];
-			$.each($('input[name=chgQty]'), function(idx, item) {
+			$.each($('#returnForm input[name=chgQty]'), function(idx, item) {
 				let chgQty = $(item).val();
 				let ordDtlNo = $(item).attr('ordDtlNo');
 				let ordCanChgQty = $(item).attr('ordCanChgQty');
@@ -488,7 +521,7 @@
 
 				// 반품 사유 및 반품 방식 배송비 계산
 				if (result.spanRealCnclRtnAmt > 0) {
-					let wdGb = $('input[name=wdGb]:radio:checked').val();
+					let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
 
 					// 회사사유 : 추가배송비 0, 반품배송비 0
 					if (!isCustomer) {
@@ -514,9 +547,12 @@
 					refundPayAmt = spanRefundAmt;
 					$('#addDeliveryFee').css('display', '');
 					$('#addPayCost').text(addDelvFee.addComma() + '원');
-					addPayCost = addDelvFee;
+					$('#returnForm input[name=addPayCost]').val(addDelvFee);
+					//addPayCost = addDelvFee;
 				} else {
-					addPayCost = 0;
+					$('#addDeliveryFee').css('display', 'none');
+					$('#returnForm input[name=addPayCost]').val(0);
+					//addPayCost = 0;
 				}
 
 				// 금액 설정
@@ -532,8 +568,8 @@
 	}
 
 	// 반품 방식 변경 이벤트
-	$('input[name=wdGb]').on('change', function() {
-		let wdGb = $('input[name=wdGb]:radio:checked').val();
+	$('#returnForm input[name=wdGb]').on('change', function() {
+		let wdGb = $('i#returnForm nput[name=wdGb]:radio:checked').val();
 
 		if (wdGb == 'W') {
 			$('#chgerLocation').css('display', '');
@@ -613,18 +649,29 @@
 		let chgerDtlAddr = delvObj.recipDtlAddr;
 		let delvMemo = delvObj.delvMemo;
 		let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr + '\n';
-		chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr(\'chger\');"><span>회수지 변경</span></button>';
+		chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>';
 
-		$('input[name=chgerNm]').val(chgerNm);
-		$('input[name=chgerPhnno]').val(chgerPhnno);
-		$('input[name=chgerZipcode]').val(chgerZipcode);
-		$('input[name=chgerBaseAddr]').val(chgerBaseAddr);
-		$('input[name=chgerDtlAddr]').val(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);
 		
 		$('#chgerNm').text(chgerNm);
 		$('#chgerPhnno').text(chgerPhnno);
 		$('#chgerAddr').html(chgerAddr);
 	}
+
+	// 환불계좌 등록 콜백 처리
+	var fnRegisterAccountCallback = function(result) {
+		// 환불계좌 정보 설정
+		$('#returnForm input[name=accountNo]').val(result.accountNo);
+		$('#returnForm input[name=accountNm]').val(result.accountNm);
+		$('#returnForm input[name=bankCd]').val(result.bankCd);
+
+		// 반품처리
+		fnReturn();
+	}
 </script>
 
 </th:block>

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

@@ -82,7 +82,7 @@
 						<div class="form_field">
 							<label class="input_label sr-only">이메일주소</label>
 							<div class="input_wrap"> 
-								<input type="text" class="form_control" name="email" placeholder="이메일주소" value="email@email.com">
+								<input type="text" class="form_control" name="email" placeholder="이메일주소" value="">
 							</div>
 						</div>	
 						
@@ -92,7 +92,7 @@
 								<div class="input_wrap">
 									<input type="hidden" class="form_control" name="recipZipcode" placeholder="우편번호" readonly="readonly" value="">
 									<input type="hidden" class="form_control" name="recipBaseAddr" placeholder="기본주소" readonly="readonly" value="">
-									<input type="text" class="form_control" name="recipAddr" placeholder="상세주소" readonly="readonly">
+									<input type="text" class="form_control" name="recipAddr" placeholder="배송주소" readonly="readonly">
 								</div>
 							</div>
 							<div class="ui_col_3">

+ 175 - 79
src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html

@@ -18,7 +18,7 @@
  -->
  <body>
 <th:block layout:fragment="content">
-<!--  container -->
+	<!-- // container -->	
 	<div id="container" class="container dp">
 		<div class="breadcrumb"> 
 			<ul>
@@ -33,99 +33,195 @@
                         <h3>총알배송</h3>
                     </div>
 				</div>
-				<div class="cont_body">
-                     <div class="Bulletship"  th:utext="${#strings.replace(#strings.replace(shotHtml.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
-                    </div> 
-                    <div class="Bulletship_list">
-                        <div class="cont_head">
-                            <div class="bullet_sticky_nav">
-                                <ul>    
-                                    <li><a href="#brand01">모이몰른</a></li> <!-- 섹션이동 -->
-                                    <li><a href="#brand02">컬리수</a></li>
-                                </ul>
+				<div class="cont_body" th:utext="${#strings.replace(#strings.replace(shotHtml.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
+                     <div class="bulletship">
+                        <div class="bulletship_head">
+                            <img src="/images/pc/thumb/bullet_bg1.png" alt="10시까지 주문하면 당일도착">
+                        </div>
+                        <div class="bulletship_body" id="shotHtml">
+                         			<!--   비로그인 상태 or 로그인을 했지만 주소정보를 못 가져오는 경우 -->
+                            <div class="txt_result">
+                                <p>오전10시 이전 주문 당일도착</p>
+                                <p><span>총알배송이 가능한 지역</span>인지<br>확인해보세요!</p>
+                                <div class="bulletshop_btn">
+                                    <button type="button" class="btn btn_default btn_block"><span>내 배송지 확인하기</span></button>
+                                </div>
+                                <p>서울&middot;경기&middot;인천 중 일부지역은 총알배송이 불가합니다.</p>
                             </div>
+                            		<!-- 비로그인 상태 or 로그인을 했지만 주소정보를 못 가져오는 경우 -->                      
                         </div>
-                        <div class="cont_body">
-                            <div class="list_content">
-                                <div id="brand01">
-                                    <div class="item_header"> <!-- 섹션이동 -->
-                                        <h4>모이몰른</h4>
-                                    </div>
-                                    <div class="itemsGrp">
-                                        <div class="item_prod">
-                                            <div class="item_state">
-                                                <button type="button" class="itemLike">관심상품 추가</button>
-                                                <a href="#none" class="itemLink">
-                                                    <div class="rank ranker"><span>1</span></div>
-                                                    <div class="itemPic">
-                                                        <img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
-                                                    </div>
-                                                    <p class="itemBrand">BRAND NAME</p>
-                                                    <div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-                                                    <p class="itemPrice">80,100
-                                                        <span class="itemPrice_original">89,000</span>
-                                                        <span class=" itemPercent">10%</span>
-                                                    </p>
-                                                    <div class="itemcolorchip">
-                                                        <span class="chip_color35" value="ABM">BEIGE</span>
-                                                        <span class="chip_color54" value="BDS">BLACK</span>
-                                                        <span class="chip_color40" value="YBR">WHITE</span>
-                                                    </div>
-                                                    <p class="itemBadge">
-                                                        <span class="badge13">베스트 </span>
-                                                    </p>
-                                                    <div class="itemComment">#주문 폭주 상품</div>
-                                                </a>
+                        <div class="bulletship_foot">
+                            <img src="/images/pc/thumb/bullet_bg2.png" alt="주문/도착, 배송일, 대상상품">
+                        </div>
+                    </div> 
+                </div>
+		    </div>
+            <!-- 총알배송 가능 상품 리스트 -->
+			<div class="content sticky_nav_list">
+				<div class="cont_head">
+                    <div class="sticky_nav">
+                        <ul>    
+                            <li><a href="#brand01">모이몰른</a></li> <!-- 섹션이동 -->
+                        </ul>
+                    </div>
+				</div>
+				<div class="cont_body">
+                    <div class="list_content">
+                        <div id="brand01">
+                            <div class="item_header"> <!-- 섹션이동 -->
+                                <h4>모이몰른</h4>
+                            </div>
+                            <div class="itemsGrp"> <!-- itemsGrp rank hot deal -->
+                                <div class="item_prod">
+                                    <div class="item_state">
+                                        <button type="button" class="itemLike">관심상품 추가</button>
+                                        <a href="#none" class="itemLink">
+                                            <div class="rank ranker"><span>1</span></div>
+                                            <div class="itemPic">
+                                                <img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
                                             </div>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div id="brand02">
-                                    <div class="item_header" > <!-- 섹션이동 -->
-                                        <h4>컬리수</h4>
-                                    </div>
-                                    <div class="itemsGrp">
-                                        <div class="item_prod">
-                                            <div class="item_state">
-                                                <button type="button" class="itemLike">관심상품 추가</button>
-                                                <a href="#none" class="itemLink">
-                                                    <div class="rank ranker"><span>1</span></div>
-                                                    <div class="itemPic">
-                                                        <img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
-                                                    </div>
-                                                    <p class="itemBrand">BRAND NAME</p>
-                                                    <div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-                                                    <p class="itemPrice">80,100
-                                                        <span class="itemPrice_original">89,000</span>
-                                                        <span class=" itemPercent">10%</span>
-                                                    </p>
-                                                    <div class="itemcolorchip">
-                                                        <span class="chip_color35" value="ABM">BEIGE</span>
-                                                        <span class="chip_color54" value="BDS">BLACK</span>
-                                                        <span class="chip_color40" value="YBR">WHITE</span>
-                                                    </div>
-                                                    <p class="itemBadge">
-                                                        <span class="badge13">베스트 </span>
-                                                    </p>
-                                                    <div class="itemComment">#주문 폭주 상품</div>
-                                                </a>
+                                            <p class="itemBrand">BRAND NAME</p>
+                                            <div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+                                            <p class="itemPrice">80,100
+                                                <span class="itemPrice_original">89,000</span>
+                                                <span class=" itemPercent">10%</span>
+                                            </p>
+                                            <div class="itemcolorchip">
+                                                <span class="chip_color35" value="ABM">BEIGE</span>
+                                                <span class="chip_color54" value="BDS">BLACK</span>
+                                                <span class="chip_color40" value="YBR">WHITE</span>
                                             </div>
-                                        </div>             
+                                            <p class="itemBadge">
+                                                <span class="badge13">베스트 </span>
+                                            </p>
+                                            <div class="itemComment">#주문 폭주 상품</div>
+                                        </a>
                                     </div>
                                 </div>
                             </div>
                         </div>
-                    </div>
+                     </div>
                 </div>
 		    </div>
+            <!-- //총알배송 가능 상품 리스트 -->  
         </div>
     </div>    
-	<!-- // container -->	
+    
+      <!-- 총알배송 가능여부 결과 팝업 -->
+	<div class="modal fade bulletShip_pop" id="bulletShipPop" tabindex="-1" role="dialog" aria-labelledby="bulletShipPopLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+                <div class="modal-header">
+				    <h5 class="modal-title" id="bulletShipLabel"><span class="sr-only">총알배송 가능여부 결과</span></h5>
+				</div>
+				<div class="modal-body">
+				    <div class="pop_cont">
+				        <div class="txt_result">
+				            <p>고객님이 찾으시는 지역은</p>
+				            <p><span id="shotAdr"></span>&nbsp;가능 지역</p>
+				            <div class="address">
+				                <p id="addr"></p>
+				            </div>
+				            <div class="info">
+				                <p id="infoTxt"></p>
+				            </div>
+				        </div>
+				    </div>
+				</div>
+				<div class="modal-footer">
+				    <button type="button" id="" class="btn btn_dark" onclick="$.modal.close();"><span>계속 쇼핑하기</span></button>
+				</div> 
+			</div>
+		</div>
+		<a href="#close-modal" rel="modal:close" id="bulletShipPop_close" class="close-modal">Close</a>
+	</div>
+	<!-- //총알배송 가능여부 결과 팝업 -->
+	
 <script th:inline="javascript">
 /*<![CDATA[*/
+let custAddr = [[${custAddr}]];
+let customerInfo = [[${customerInfo}]];
+
+// 로그인 확인
+var shotBody = function () {
+	if (!cfCheckLogin() || (custAddr == null && custAddr == '')) {
+		html = '';
+		html += '<div class="txt_result">                                                                              ';
+		html += '     <p>오전10시 이전 주문 당일도착</p>                                                                         ';
+		html += '     <p><span>총알배송이 가능한 지역</span>인지<br>확인해보세요!</p>                                                ';
+		html += '     <div class="bulletshop_btn">                                                                      ';
+		html += '         <button type="button" class="btn btn_default btn_block" onclick="fnOpenDaumAddr();"><span>내 배송지 확인하기</span></button>     ';
+		html += '     </div>                                                                                             ';
+		html += '     <p>서울&middot;경기&middot;인천 중 일부지역은 총알배송이 불가합니다.</p>                                            ';
+		html += ' </div>                                                                                                  ';
+		
+		$("#shotHtml").append(html);
+	}else{
+		html = '';
+		html += '  <div class="txt_result">';
+		html += '      <p><span>'+customerInfo.custNm+'</span>님의 배송지는</p>';
+		if (custAddr.shotDelvUseYn  === 'Y') {
+			html += '      <p><span>총알배송</span> 가능 지역</p>';
+		}else{
+			html += '      <p><span>일반배송</span> 지역</p>';
+		}
+		html += '      <div class="bullet_able">';
+		html += '          <p>'+custAddr.recipBaseAddr+'  '+custAddr.recipDtlAddr+'</p>';
+		html += '      </div>';
+		html += '      <div class="bulletshop_btn">';
+		html += '          <button class="btn btn_default btn_block" onclick="fnOpenDaumAddr();"><span>다른 배송지 확인하기</span></button>';
+		html += '      </div>';
+		html += '  </div>                            ';
+		$("#shotHtml").append(html);
+	}
+
+}
+
+//우편번호 DAUM을 이용한 우편번호 팝업 레이어
+var fnOpenDaumAddr = function() {
+	let daumZip = new daum.Postcode({
+		oncomplete: function(data) {
+			// data.zonecode
+			
+			$.ajax( {
+						type		: "GET",
+						url 		: '/planning/shot/delivery/confirm?recipZipcode='+data.zonecode,
+						dataType 	: 'json',
+						success 	: function(result) {
+							if (result != null) {
+								$('#addr').text(cfnGetDaumRoadAddr(data));
+								if(result.shotDelvUseYn == "Y"){
+									$('#shotAdr').text("총알배송");
+									$("#infoTxt").text("오늘 오전 10시까지 주문하시면 오늘 도착합니다. (토, 일, 공휴일 휴무)")
+									
+								}else{
+									$('#shotAdr').text("일반배송");
+									$("#infoTxt").text("주문시간/배송지에 따라 2~3일 이내 도착합니다. (일, 공휴일 휴무)")
+								}
+								
+								$("#bulletShipPop").modal("show");
+								
+							}
+						}
+					}); 
+			
+			cfnCloseDaumAddr();
+		},
+		width: '100%'
+	});
+	cfnOpenDaumAddr(daumZip);
+}
+	
 
-/*]]>*/
-</script>
+$(document).ready(function() {
+	shotBody();
+	 $("#bulletShipPop_close").click(function() {
+	        $.modal.close();
+     });	
+   
+});
+ /*]]>*/
+</script> 
 
 </th:block>
 

+ 135 - 0
src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html

@@ -0,0 +1,135 @@
+<!-- 환불계좌 등록 팝업 -->
+<div class="modal-header">
+	<h5 class="modal-title" id="refundLabel">환불계좌등록</h5>
+</div>
+<div class="modal-body">
+	<div class="pop_cont">
+		<form class="form_wrap" id="refundAccountForm">
+			<table>
+				<colgroup>
+					<col width="90">
+					<col width="380">
+				</colgroup>
+				<tbody>
+					<tr>
+						<th>
+							<span>예금주</span>
+						</th>
+						<td>
+							<div class="form_field">
+								<div class="input_wrap">
+									<input type="text" class="form_control" name="accountNm" th:value="${accountNm}" disabled="">
+								</div>
+							</div>
+							<div class="txt_info">
+								<ul>
+									<li>
+										회원명 본인이 예금주인 통장으로만 환불이 가능합니다.
+									</li>
+								</ul>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th>
+							<span>은행명</span>
+						</th>
+						<td>
+							<div class="form_field">
+								<div class="select_custom select_bank">
+									<div class="combo">
+										<div class="select">은행명</div>
+										<ul class="list">
+											<li id="bankCd_" class="selected">
+												<div text="선택"></div>
+												<input type="hidden" name="bankCd" value=""/>
+											</li>
+											<th:block th:if="${bankList}" th:each="oneData, status : ${bankList}">
+												<li th:id="|bankCd_${oneData.cd}|">
+													<div th:text="${oneData.cdNm}"></div>
+													<input type="hidden" name="bankCd" th:value="${oneData.cd}"/>
+												</li>
+											</th:block>
+										</ul>
+									</div>
+								</div>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th>
+							<span>계좌번호</span>
+						</th>
+						<td>
+							<div class="form_field">
+								<div class="input_wrap">
+									<input type="text" class="form_control" name="accountNo" value="" placeholder="계좌번호를 입력해주세요.">
+									<button type="button" id="confirmAccount" class="btn btn_dark btn_sm"><span>계좌인증</span></button>
+								</div>
+							</div>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+		</form>
+	</div>
+</div>
+<div class="modal-footer">
+	<button type="button" id="registerAccount" class="btn btn_dark"><span>계좌등록 후 환불신청</span></button>
+</div>
+
+<script th:inline="javascript">
+	let ordNo = [[${ordNo}]];
+	let isValid;
+
+	$(document).ready( function() {
+		var bank_selector = new sCombo('.select_custom.select_bank');
+	});
+
+	// 계좌인증 버튼 클릭 이벤트
+	$('#confirmAccount').click(function() {
+		let url = '/mypage/account/check';
+		let accountNm = $('#refundAccountForm input[name=accountNm]').val();
+		let accountNo = $('#refundAccountForm input[name=accountNo]').val();
+		let bankCd = $('#refundAccountForm 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('계좌인증에 성공했습니다.')
+			} else {
+				mcxDialog.alert('계좌정보를 다시 확인해주세요.');
+			}
+		});
+	});
+
+	// 계좌등록 후 환불신청 버튼 클릭 이벤트
+	$('#registerAccount').click(function() {
+		if (isValid) {
+			let accountNm = $('#refundAccountForm input[name=accountNm]').val();
+			let accountNo = $('#refundAccountForm input[name=accountNo]').val();
+			let bankCd = $('#refundAccountForm input[name=bankCd]').val();
+
+			let data = {};
+			data.accountNm = accountNm;
+			data.accountNo = accountNo;
+			data.bankCd = bankCd;
+
+			// 부모창으로 정보 전달
+			fnRegisterAccountCallback(data);
+
+			// 팝업 닫기
+			$(".close-modal").trigger("click");
+		} else {
+			mcxDialog.alert('계좌인증을 해주세요.');
+		}
+	});
+</script>

+ 2 - 2
src/main/webapp/ux/mo/css/common_m.css

@@ -662,7 +662,7 @@ header {
   position: sticky;left: 0;top: 0;width: 100%;transition: top 0.3s;/* background-color: #fff; */
 }
 header .htop {position: relative;height: 55px;-webkit-box-sizing: border-box;box-sizing: border-box;/*border: rgba(0, 0, 0, 0.1) solid 1px;*/ border-bottom: 1px solid rgba(0, 0, 0, 0.1); background-color: #fff;}
-header #htopSub{border-bottom: 1px solid #e5e5e5;box-sizing: border-box;}
+header #htopSub{border-bottom: 0px solid #e5e5e5;box-sizing: border-box;}
 header #htopSubs{border-bottom: 1px solid #000000;box-sizing: border-box;}
 header .htop h1 {display: inline-block;position: relative;height: 40px;line-height: 4.0rem;vertical-align: top;margin: 10px 0 0 10px;font-size: 1.8rem;color: #222;}
 header .htop h1 img {position: relative;top: 50%;left: 0;right: 0;transform: translate(0, -50%);margin: 0px 0;}
@@ -935,7 +935,7 @@ footer .collapse .infos.on{padding: 0px 0px 20px 0; height: auto;}
 .cnb ul > li button{background-color: #fff; padding: 5px 10px; color: #666; border-radius: 100px; font-size: 1.5rem;}
 .cnb ul > li button.on{background-color: #3d3d3d; color: #fff;}
 
-/* page nav: cs 고객센터 */
+/* page nav */
 .pnb ul{border-bottom: #e5e5e5 solid 1px;}
 .pnb ul::after{content: ''; display: block; clear: both;}
 .pnb ul > li{float: left; width: auto; padding: 0 2.6rem;}

+ 5 - 5
src/main/webapp/ux/mo/js/common_m.js

@@ -683,13 +683,13 @@ $(document).ready(function () {
             return false;
         });
 
-        let autome = document.querySelector('.btPopAuto'); 
-        let headsize = this.querySelector('.btPopAuto .btPopAuto_head');
-        let bodysize = this.querySelector('.btPopAuto .btPopAuto_body');
+        //let autome = document.querySelector('.btPopAuto'); 
+        //let headsize = this.querySelector('.btPopAuto .btPopAuto_head');
+        //let bodysize = this.querySelector('.btPopAuto .btPopAuto_body');
         //console.log('★ btPop_auto헤더 높이 : ' + headsize.offsetHeight);
         //console.log('★ btPop_auto바디 높이 : ' + bodysize.clientHeight);
-
-        let autotop = appHeight - (headsize.offsetHeight + bodysize.offsetHeight);
+		
+        //let autotop = appHeight - (headsize.offsetHeight + bodysize.offsetHeight);
         //console.log('★ btPopAuto전체 높이 - 컨텐츠 높이 : ' + autotop);
         //console.log('★ btPopAuto전체 높이 - 컨텐츠 높이 /10 : ' + autotop /10);