Explorar o código

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

jsshin %!s(int64=5) %!d(string=hai) anos
pai
achega
cc8bde4931
Modificáronse 52 ficheiros con 1935 adicións e 3285 borrados
  1. 16 0
      src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java
  2. 47 0
      src/main/java/com/style24/front/biz/dao/TsfKollusDao.java
  3. 7 0
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  4. 10 2
      src/main/java/com/style24/front/biz/service/TsfGiftcardService.java
  5. 59 0
      src/main/java/com/style24/front/biz/service/TsfKollusService.java
  6. 1 1
      src/main/java/com/style24/front/biz/web/TsfCallcenterController.java
  7. 1 1
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  8. 71 0
      src/main/java/com/style24/front/biz/web/TsfKollusUploadController.java
  9. 28 28
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  10. 2 8
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  11. 12 15
      src/main/java/com/style24/front/biz/web/TsfPgController.java
  12. 1 0
      src/main/java/com/style24/persistence/domain/Goods.java
  13. 22 0
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  14. 36 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  15. 37 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml
  16. 3 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  17. 47 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfKollus.xml
  18. 8 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  19. 3 3
      src/main/webapp/WEB-INF/views/mob/goods/CardPrmtFormMob.html
  20. 1 2019
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  21. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailDeliveryFormMob.html
  22. 16 14
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  23. 31 52
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html
  24. 274 33
      src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html
  25. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaFormMob.html
  26. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewPhotoFormMob.html
  27. 220 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypagePointFormMob.html
  28. 153 144
      src/main/webapp/WEB-INF/views/mob/order/OrderCouponApplyPopMob.html
  29. 45 15
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  30. 2 2
      src/main/webapp/WEB-INF/views/mob/order/OrderGiftInfoMob.html
  31. 220 204
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  32. 3 3
      src/main/webapp/WEB-INF/views/web/goods/CardPrmtFormWeb.html
  33. 7 6
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  34. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailDeliveryFormWeb.html
  35. 47 30
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  36. 4 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailQnaFormWeb.html
  37. 3 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html
  38. 13 19
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  39. 1 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsQnaDetailFormWeb.html
  40. 2 46
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  41. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreListFormWeb.html
  42. 9 8
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  43. 11 10
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  44. 0 281
      src/main/webapp/WEB-INF/views/web/mypage/MypagePointForm2Web.html
  45. 169 127
      src/main/webapp/WEB-INF/views/web/mypage/MypagePointFormWeb.html
  46. 5 49
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  47. 134 129
      src/main/webapp/WEB-INF/views/web/order/OrderCouponApplyPopWeb.html
  48. 40 15
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  49. 97 1
      src/main/webapp/biz/goods.js
  50. 2 0
      src/main/webapp/biz/mypage.js
  51. 5 3
      src/main/webapp/ux/pc/css/layout.css
  52. 3 1
      src/main/webapp/ux/style24_link.js

+ 16 - 0
src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java

@@ -68,5 +68,21 @@ public interface TsfGiftcardDao {
 	 */
 	 Collection<GiftCard> getRecentlyDate();
 	 
+	 /**
+	 * 상품권 CUST_GFCD_SQ
+	 *
+	 * @param 
+	 * @author sowon
+	 * @since 2021. 4. 19
+	 */
+	 int getCustGiftCardSq(String gfcdNo);
 	 
+	 /**
+	 * 상품권 hst insert
+	 *
+	 * @param 
+	 * @author sowon
+	 * @since 2021. 4. 19
+	 */
+	 void createCustGiftcardHistory(GiftCard giftcard);
 }

+ 47 - 0
src/main/java/com/style24/front/biz/dao/TsfKollusDao.java

@@ -0,0 +1,47 @@
+package com.style24.front.biz.dao;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.KollusResult;
+
+/**
+ * 카테노이드 Kollus 동영상업로드 결과 Dao
+ *
+ * @author gagamel
+ * @since 2021. 4. 19
+ */
+@ShopDs
+public interface TsfKollusDao {
+
+	/**
+	 * 카테노이드 Kollus 상품동영상 업로드 결과 처리
+	 * @param result - 업로드결과 정보
+	 * @author gagamel
+	 * @since 2021. 4. 19
+	 */
+	void updateGoodsVideo(KollusResult result);
+
+	/**
+	 * 카테노이드 Kollus 리뷰동영상 업로드 결과 처리
+	 * @param result - 업로드결과 정보
+	 * @author gagamel
+	 * @since 2021. 4. 19
+	 */
+	void updateReviewVideo(KollusResult result);
+
+	/**
+	 * 카테노이드 Kollus 전시동영상 업로드 결과 처리
+	 * @param result - 업로드결과 정보
+	 * @author gagamel
+	 * @since 2021. 4. 19
+	 */
+	void updateDisplayVideoPreview(KollusResult result);
+
+	/**
+	 * 카테노이드 Kollus 전시동영상 업로드 결과 처리
+	 * @param result - 업로드결과 정보
+	 * @author gagamel
+	 * @since 2021. 4. 19
+	 */
+	void updateDisplayVideo(KollusResult result);
+
+}

+ 7 - 0
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -14,6 +14,7 @@ import org.thymeleaf.util.StringUtils;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.dao.TscEnvsetDao;
+import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.core.support.env.TscConstants;
@@ -26,6 +27,7 @@ import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.Payment;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -48,6 +50,9 @@ public class TsfCartService {
 	@Autowired
 	private TscOrderService coreOrderService;
 
+	@Autowired
+	private TscKcpService coreKcpService;
+
 	@Autowired
 	private Environment env;
 
@@ -76,6 +81,8 @@ public class TsfCartService {
 		String cartGb = params.iterator().next().getCartGb();
 		if(StringUtils.isEmpty(goodsType)) {
 			goodsType = params.iterator().next().getCartCompsList().iterator().next().getGoodsType();
+		}
+		if(StringUtils.isEmpty(cartGb)) {
 			cartGb    = params.iterator().next().getCartCompsList().iterator().next().getCartGb();
 		}
 		

+ 10 - 2
src/main/java/com/style24/front/biz/service/TsfGiftcardService.java

@@ -132,8 +132,16 @@ public class TsfGiftcardService {
 			giftcard.setRmGfcdAmt(Integer.parseInt(param[1])); // 승인금액
 			giftcard.setUseStDate(param2[0]);
 			giftcard.setUseExpDate(param3[0]);
-			
 			giftcardDao.getGiftcardUseConfirm(giftcard);
+			
+			int custGfcdSq = giftcardDao.getCustGiftCardSq(pubNo);
+			giftcard.setCustGfcdSq(custGfcdSq);
+			giftcard.setOccurGb("G074_11");
+			giftcard.setOccurDtlDesc("상품권등록");
+			giftcard.setGfcdAmt(Integer.parseInt(param[1]));
+			
+			giftcardDao.createCustGiftcardHistory(giftcard);
+			
 		}
 
 	}
@@ -148,5 +156,5 @@ public class TsfGiftcardService {
 	 public Collection<GiftCard> getRecentlyDate(){
 		 return giftcardDao.getRecentlyDate();
 	 }
-
+	 
 }

+ 59 - 0
src/main/java/com/style24/front/biz/service/TsfKollusService.java

@@ -0,0 +1,59 @@
+package com.style24.front.biz.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.style24.front.biz.dao.TsfKollusDao;
+import com.style24.persistence.domain.KollusResult;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 카테노이드 Kollus 동영상업로드 결과 Service
+ *
+ * @author gagamel
+ * @since 2021. 4. 19
+ */
+@Service
+@Slf4j
+public class TsfKollusService {
+
+	@Autowired
+	private TsfKollusDao kollusDao;
+
+	/**
+	 * 카테노이드 Kollus 상품동영상 업로드 결과 처리
+	 * @param goods
+	 * @author gagamel
+	 * @since 2021. 4. 19
+	 */
+	@Transactional("shopTxnManager")
+	public void updateGoodsVideoResult(KollusResult result) {
+		kollusDao.updateGoodsVideo(result);
+	}
+
+	/**
+	 * 카테노이드 Kollus 리뷰동영상 업로드 결과 처리
+	 * @param result - 업로드결과 정보
+	 * @author gagamel
+	 * @since 2021. 4. 19
+	 */
+	@Transactional("shopTxnManager")
+	public void updateReviewVideoResult(KollusResult result) {
+		kollusDao.updateReviewVideo(result);
+	}
+
+	/**
+	 * 카테노이드 Kollus 전시동영상 업로드 결과 처리
+	 * @param result - 업로드결과 정보
+	 * @author gagamel
+	 * @since 2021. 4. 19
+	 */
+	@Transactional("shopTxnManager")
+	public void updateDisplayVideoResult(KollusResult result) {
+		kollusDao.updateDisplayVideoPreview(result);
+		kollusDao.updateDisplayVideo(result);
+	}
+
+}

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

@@ -326,7 +326,7 @@ public class TsfCallcenterController extends TsfBaseController {
 	public GagaResponse createGoodsQna(@RequestBody Counsel counsel) {
 		log.info("createGoodsQna counsel = {}", counsel);
 		counselService.createGoodsQna(counsel);
-		return super.ok(message.getMessage("SUCC_0001"));
+		return super.ok("상품 문의가 등록되었습니다. 빠른 시일 내에 답변드리겠습니다.");
 	}
 
 	/**

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

@@ -259,7 +259,7 @@ public class TsfGoodsController extends TsfBaseController {
 			}
 			
 		}
-
+		
 		// 상품 문의건수
 		Counsel counsel = new Counsel();
 		counsel.setRelGoodsCd(goods.getGoodsCd());

+ 71 - 0
src/main/java/com/style24/front/biz/web/TsfKollusUploadController.java

@@ -0,0 +1,71 @@
+package com.style24.front.biz.web;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.style24.front.biz.service.TsfKollusService;
+import com.style24.front.support.controller.TsfBaseController;
+import com.style24.persistence.domain.KollusResult;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * Kollus Upload Controller (카테노이드 동영상 업로드)
+ *
+ * @author gagamel
+ * @since 2021. 4. 16
+ */
+@Controller
+@RequestMapping("/kollus")
+@Slf4j
+public class TsfKollusUploadController extends TsfBaseController {
+
+	@Autowired
+	private TsfKollusService kollusService;
+
+	/**
+	 * 상품 동영상 업로드 결과
+	 * @author gagamel
+	 * @since 2021. 4. 16
+	 */
+	@GetMapping("/goods/upload/result")
+	public void updateGoodsVideoResult(KollusResult result) {
+		log.info("{}", result);
+
+		if (StringUtils.isNotBlank(result.getMedia_content_key()) && StringUtils.isNotBlank(result.getUpload_file_key())) {
+			kollusService.updateGoodsVideoResult(result);
+		}
+	}
+
+	/**
+	 * 리뷰 동영상 업로드 결과
+	 * @author gagamel
+	 * @since 2021. 4. 16
+	 */
+	@GetMapping("/review/upload/result")
+	public void updateReviewVideoResult(KollusResult result) {
+		log.info("{}", result);
+
+		if (StringUtils.isNotBlank(result.getMedia_content_key()) && StringUtils.isNotBlank(result.getUpload_file_key())) {
+			kollusService.updateReviewVideoResult(result);
+		}
+	}
+
+	/**
+	 * 전시 동영상 업로드 결과
+	 * @author gagamel
+	 * @since 2021. 4. 16
+	 */
+	@GetMapping("/display/upload/result")
+	public void updateDisplayVideoResult(KollusResult result) {
+		log.info("{}", result);
+
+		if (StringUtils.isNotBlank(result.getMedia_content_key()) && StringUtils.isNotBlank(result.getUpload_file_key())) {
+			kollusService.updateDisplayVideoResult(result);
+		}
+	}
+
+}

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

@@ -582,12 +582,6 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("returnList", map);
 		mav.addObject("oneData", oneData);
 
-		// 사용 상품권 정보 조회
-		mav.addObject("usedGiftCardInfo", orderChangeService.getUsedGiftcardInfo(oneData));
-
-		// 사용 포인트 정보 조회
-		mav.addObject("usedPointInfo", orderChangeService.getUsedPointInfo(oneData));
-
 		// 주문 결제정보 조회
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
@@ -630,30 +624,38 @@ public class TsfMypageController extends TsfBaseController {
 		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo(orderChange);
 		List<Order> returnReqList = (List<Order>)refundPreInfo.get("cnclReqList");
 		String allCanYn = refundPreInfo.getString("allCanYn");
+		String allLastCanYn = refundPreInfo.getString("allLastCanYn");
 
 		// 2. 환불금액계산
 		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(returnReqList);
 
 		// 3. 주문변경 기본정보 설정
-		result.set("ordNo", orderChange.getOrdNo());				// 주문번호
-		result.set("ordChgSq", orderChange.getOrdChgSq());			// 주문변경번호
+		result.set("ordNo", orderChange.getOrdNo());					// 주문번호
+		// result.set("ordChgSq", orderChange.getOrdChgSq());			// 주문변경번호
 		result.set("chgReason", orderChange.getChgReason());			// 변경사유
-		result.set("chgMemo", orderChange.getChgMemo());			// 변경메모
+		result.set("chgMemo", orderChange.getChgMemo());				// 변경메모
 
 		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
 		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
-		result.set("bankCd", orderChange.getBankCd());				// 환불계좌은행코드
+		result.set("bankCd", orderChange.getBankCd());					// 환불계좌은행코드
 
-		result.set("allCanYn", allCanYn);							// 무통장입금전 전체취소 여부 
+		// result.set("allCanYn", allCanYn);								// 무통장입금전 전체취소 여부
+		result.setString("allLastCanYn", allLastCanYn);					// 전체 마지막 취소 여부
 		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
-		result.set("wdGb", orderChange.getWdGb());				// 회수방법
+		result.set("wdGb", orderChange.getWdGb());						// 회수방법
 		result.set("wdInvoiceNo", orderChange.getWdInvoiceNo());		// 회수송장번호
 
+		result.setString("ipAddress", TsfSession.getIpAddress());			// IP주소
+		result.setInt("custNo", custNo);									// 고객번호
+		result.setString("pgTid", refundPreInfo.getString("pgTid"));		// PG거래ID
+		result.setString("payMeans", refundPreInfo.getString("payMeans"));	// 결제수단
+		result.setString("pgGb", refundPreInfo.getString("pgGb"));			// PG구분
+
 		// 4. 주문변경 회수지정보 추가
-		result.set("chgerNm", orderChange.getChgerNm());			// 변경자명
+		result.set("chgerNm", orderChange.getChgerNm());				// 변경자명
 		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
 		result.set("chgerZipcode", orderChange.getChgerZipcode());		// 회수지우편번호
-		result.set("chgerBaseAddr", orderChange.getChgerBaseAddr());		// 회수지기본주소
+		result.set("chgerBaseAddr", orderChange.getChgerBaseAddr());	// 회수지기본주소
 		result.set("chgerDtlAddr", orderChange.getChgerDtlAddr());		// 회수지상세주소
 		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
 		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
@@ -691,12 +693,6 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("cancelList", map);
 		mav.addObject("oneData", oneData);
 
-		// 사용 상품권 정보 조회
-		mav.addObject("usedGiftCardInfo", orderChangeService.getUsedGiftcardInfo(oneData));
-
-		// 사용 포인트 정보 조회
-		mav.addObject("usedPointInfo", orderChangeService.getUsedPointInfo(oneData));
-
 		// 주문 결제정보 조회
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
@@ -736,7 +732,7 @@ public class TsfMypageController extends TsfBaseController {
 		List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
 		String allCanYn = refundPreInfo.getString("allCanYn");
 		String allLastCanYn = refundPreInfo.getString("allLastCanYn");
-		String allCanYnBeforePayment = refundPreInfo.getString("allCanYnBeforePayment");
+		// String allCanYnBeforePayment = refundPreInfo.getString("allCanYnBeforePayment");
 
 		// 전체취소, 부분취소 구분 처리 진행 
 		if ("Y".equals(allCanYn)) {
@@ -753,7 +749,7 @@ public class TsfMypageController extends TsfBaseController {
 
 			// 4. 주문변경 기본정보 설정
 			result.setInt("ordNo", orderChange.getOrdNo());						// 주문번호
-			result.setInt("ordChgSq", orderChange.getOrdChgSq());				// 주문변경번호
+			// result.setInt("ordChgSq", orderChange.getOrdChgSq());				// 주문변경번호
 			result.setString("chgReason", orderChange.getChgReason());			// 변경사유
 			result.setString("chgMemo", orderChange.getChgMemo());				// 변경메모
 
@@ -761,10 +757,10 @@ public class TsfMypageController extends TsfBaseController {
 			result.setString("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
 			result.setString("bankCd", orderChange.getBankCd());				// 환불계좌은행코드
 
-			result.setString("allCanYnBeforePayment", allCanYnBeforePayment);	// 무통장입금전 전체취소 여부
-			result.setString("allCanYn", allCanYn);								// 전체취소 여부
+			// result.setString("allCanYnBeforePayment", allCanYnBeforePayment);	// 무통장입금전 전체취소 여부
+			// result.setString("allCanYn", allCanYn);								// 전체취소 여부
 			result.setString("allLastCanYn", allLastCanYn);						// 전체 마지막 취소 여부
-			result.setString("isCustomer", orderChange.getIsCustomer());		// 변경사유 (고객, 회사)
+			// result.setString("isCustomer", orderChange.getIsCustomer());		// 변경사유 (고객, 회사)
 
 			// 5. 주문변경 회수지정보 추가
 			// result.setString("chgerNm", orderChange.getChgerNm());				// 변경자명
@@ -772,7 +768,7 @@ public class TsfMypageController extends TsfBaseController {
 			// result.setString("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
 			// result.setString("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
 
-			result.setString("reqGbn", orderChange.getReqGbn());				// 신청구분
+			// result.setString("reqGbn", orderChange.getReqGbn());				// 신청구분
 			result.setString("ipAddress", TsfSession.getIpAddress());			// IP주소
 			result.setInt("custNo", custNo);									// 고객번호
 			result.setString("pgTid", refundPreInfo.getString("pgTid"));		// PG거래ID
@@ -780,9 +776,13 @@ public class TsfMypageController extends TsfBaseController {
 			result.setString("pgGb", refundPreInfo.getString("pgGb"));			// PG구분
 
 			// 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
-			coreOrderChangeService.cnclComplete(result, custNo);
+			// coreOrderChangeService.cnclComplete(result, custNo);
+			coreOrderChangeService.partialCancel(result);
 		}
 
+		// TODO
+		// 취소 완료 알림톡 발송 에정
+
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 		result.set("message", message.getMessage("CANCEL_0001"));
 
@@ -1019,7 +1019,7 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("usePointList", pointService.getUsePointList(point));
 		// 최근 12개월
 		mav.addObject("date", pointService.getRecentlyDate());
-		mav.setViewName(super.getDeviceViewName("mypage/MypagePointForm2"));
+		mav.setViewName(super.getDeviceViewName("mypage/MypagePointForm"));
 		return mav;
 	}
 

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

@@ -171,8 +171,8 @@ public class TsfOrderController extends TsfBaseController {
 			
 			// 선물하기일때 PC 로 접근하면 
 			if ("P".equals(TsfSession.getFrontGb())) {
-				mav.setViewName("redirect:/cart/list/form");					// 장바구니화면이동
-				return mav;
+				//mav.setViewName("redirect:/cart/list/form");					// 장바구니화면이동
+				//return mav;
 			}
 		}
 
@@ -1096,11 +1096,8 @@ public class TsfOrderController extends TsfBaseController {
 	@ResponseBody
 	public ModelAndView kakaoPaymentRequest(@RequestParam(value = "pg_token", required = false) String pgToken) {
 		ModelAndView mav = new ModelAndView();
-
 		mav.addObject("pgToken", pgToken);
-
 		mav.setViewName(super.getDeviceViewName("/pg/KakaoPaymentRequest"));
-
 		return mav;
 	}
 
@@ -1116,11 +1113,8 @@ public class TsfOrderController extends TsfBaseController {
 	@ResponseBody
 	public ModelAndView naverPaymentRequest(@RequestParam(value = "paymentId", required = false) String paymentId) {
 		ModelAndView mav = new ModelAndView();
-
 		mav.addObject("paymentId", paymentId);
-
 		mav.setViewName(super.getDeviceViewName("/pg/NaverPaymentRequest"));
-
 		return mav;
 	}
 

+ 12 - 15
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
@@ -54,26 +55,22 @@ public class TsfPgController extends TsfBaseController {
 		PrintWriter out = response.getWriter();
 		String result = "0000";
 
-		// TODO 결제완료 데이터 처리 실패시 result를 0000이 아닌 다른 값으로 설정(4자리)
 		try {
-			log.info("CHECK site_cd		::::: {}", request.getParameter("site_cd")	);	// 가맹점 코드
-			log.info("CHECK tno			::::: {}", request.getParameter("tno")		);	// KCP 거래번호
-			log.info("CHECK order_no	::::: {}", request.getParameter("order_no")	);	// 가맹점 주문번호
-			log.info("CHECK tx_cd		::::: {}", request.getParameter("tx_cd")		);	// 무통장 입금 통보는 TX00(PC), TX08(MOB). 아닐경우 처리 X
-			log.info("CHECK result		::::: {}", request.getParameter("result")	);	// KCP에서 전송한 결과를 가맹점에서 받았는지 확인하는 데이터. "0000"으로 설정해야함...? model로 보내주면 되는건지 ?
-			log.info("CHECK noti_id		::::: {}", request.getParameter("noti_id")	);	// 가상계좌의 입금 통보건에 대한 고유한 값..?
-			log.info("CHECK ipgm_name	::::: {}", request.getParameter("ipgm_name")	);	// 거래에 대한 주문자명
-			log.info("CHECK ipgm_mnyx	::::: {}", request.getParameter("ipgm_mnyx")	);	// 입금자가 실제 입금한 입금 금액
-			log.info("CHECK bank_code	::::: {}", request.getParameter("bank_code")	);	// 가상계좌 은행코드
-			log.info("CHECK remitter	::::: {}", request.getParameter("remitter")	);	// 가상계좌 입금자 명(주문자명과 다를 수 있음)
-			log.info("CHECK op_cd		::::: {}", request.getParameter("op_cd")		);	// 13이 오면 입금이 잘못된 경우로 취소 노티가 온다고함. 13이 아닌 경우에만 진행해야할듯함.
-			log.info("CHECK cash_a_no	::::: {}", request.getParameter("cash_a_no")	);	// 현금영수증 승인번호
-			log.info("CHECK cash_no		::::: {}", request.getParameter("cash_no")	);	// 현금영수증 거래번호
-			
+			String opCd = request.getParameter("op_cd");		// 13이 오면 입금이 잘못된 경우로 취소 노티가 온다고함. 13이 아닌 경우에만 진행해야할듯함.
+			String txCd = request.getParameter("tx_cd");		// 무통장 입금 통보는 TX00(PC), TX08(MOB). 아닐경우 처리 X
+
+			if("13".equals(opCd) || !("TX00".equals(txCd) || "TX08".equals(txCd))) {
+				return null;
+			}
+
 			// TODO 2021.03.15 jsh77b 무통장입금 결제완료 처리
 			Order order = new Order();
 			order.setOrdNo(Integer.parseInt(request.getParameter("order_no")));
+			order.setPgTid(request.getParameter("tno"));
+			order.setCashAuthNo(request.getParameter("cash_a_no"));
+			order.setCashTradeNo(request.getParameter("cash_no"));
 			order.setCustNo(0);
+			order.setUpdNo(0);
 			coreOrderService.updateOrderInfoVBank(order);
 			
 		} catch(Exception e) {

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

@@ -150,6 +150,7 @@ public class Goods extends TscBaseDomain {
 	private String goodsStatNm;
 	private String regDtMonth;
 	
+	private int goodsQnaCnt;	// 상품문의건수
 
 	private String sizeGb;		// 사이즈구분(T:상의, B:하의, S:신발)
 	private String optionSoldoutSkip; 	//품절제외 Y, N

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

@@ -1,5 +1,6 @@
 package com.style24.persistence.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
 import lombok.Data;
@@ -66,4 +67,25 @@ public class GoodsSearch extends TscBaseDomain {
 
     private String contentsLoc;
     private int maxRow;
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] brandSearch;
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] sizeSearch;
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] priceSearch;
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] dcrateSearch;
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] seasonSearch;
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] colorSearch;
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] benefitSearch;
 }

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

@@ -698,8 +698,43 @@
 		  AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
 		  AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
 		  AND S.STOCK_QTY > 0 /*재고있는상품*/
+		<include refid="getCategoryGoodsList_sql"/>
 	</select>
 
+	<!-- 카테고리 상품별  목록 필터 조건 -->
+	<sql id="getCategoryGoodsList_sql">
+		<if test='brandSearch != null and brandSearch.length > 0'>
+		     AND EXISTS ( SELECT 1 FROM TB_BRAND
+		     WHERE BRAND_CD = G.BRAND_CD
+		     AND BRAND_GROUP_NO IN
+		     <foreach collection="brandSearch" item="item" index="index" open="(" close=")" separator=",">
+		        #{item}
+		     </foreach>
+		     )
+		</if>
+		<if test='sizeSearch != null and sizeSearch.length > 0'>
+		     AND G.GOODS_CD IN (
+		          SELECT GOODS_CD
+		          FROM VW_STOCK
+		          WHERE OPT_CD2 IN
+		     <foreach collection="sizeSearch" item="item" index="index"  open="(" close=")" separator=",">
+		         #{item}
+		     </foreach>
+		     )
+		</if>
+		<if test='colorSearch != null and colorSearch.length > 0'>
+		     AND G.MAIN_COLOR_CD IN (
+		          SELECT OPT_CD1
+		          FROM TB_OPTION
+		          WHERE GOODS_CD = G.GOODS_CD
+		          AND  OPT_CD1 IN
+		     <foreach collection="colorSearch" item="item" index="index"  open="(" close=")" separator=",">
+		     	#{item}
+		     </foreach>
+		     )
+		</if>
+	</sql>
+
 	<!-- 카테고리별 상품 총 리스트 -->
 	<select id="getCategoryGoodsList" parameterType="GoodsSearch" resultType="Goods">
 		/* TsfDisplay.getCategoryGoodsList */
@@ -784,6 +819,7 @@
 		          AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
 		          AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
 		          AND S.STOCK_QTY > 0 /*재고있는상품*/
+		          <include refid="getCategoryGoodsList_sql"/>
 		          <if test="contentsLoc == 'SBM013'">
 		          GROUP BY G.GOODS_CD
 		          </if>

+ 37 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml

@@ -135,6 +135,7 @@
 	</insert>
 	
 	<select id="getRecentlyDate" resultType="GiftCard">
+		/*TsfGiftcard.getRecentlyDate*/  
 		SELECT A.*
 		FROM
 		    (		
@@ -164,6 +165,42 @@
 		    )A	
 	</select>
 	
+	<select id="getCustGiftCardSq" parameterType="GiftCard" resultType="int">
+		/*TsfGiftcard.getCustGiftCardSq*/  
+		SELECT CUST_GFCD_SQ 
+		FROM TB_CUST_GIFTCARD 
+		WHERE GFCD_NO = #{gfcdNo}
+	</select>
+	
+	<insert id="createCustGiftcardHistory"  parameterType="GiftCard" >
+		/* TsfGiftcard.createCustGiftcardHistorys */
+		INSERT INTO TB_CUST_GIFTCARD_HST ( 
+		      CUST_NO
+		    , OCCUR_GB
+		    , OCCUR_DTL_DESC
+		    , GFCD_AMT
+		    , CUST_GFCD_SQ
+		    , ORD_NO
+		    , ORD_DTL_NO
+		    , REG_NO
+		    , REG_DT
+		    , UPD_NO
+		    , UPD_DT
+		) VALUES (
+		      #{custNo}
+		    , #{occurGb}
+		    , #{occurDtlDesc}
+		    , #{gfcdAmt}
+		    , #{custGfcdSq}
+		    , #{ordNo}
+		    , #{ordDtlNo}
+		    , #{custNo}
+		    , NOW()
+		    , #{custNo}
+		    , NOW()
+		)	
+	</insert>
+	
 	<!-- 페이징을 위한 select절 상단 -->
 	<sql id="selectForPagingHeader">
 		SELECT *

+ 3 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -454,8 +454,11 @@
 		        WHERE GOODS_CD = G.GOODS_CD
 		        GROUP BY GOODS_CD 
 		        ) AS STOCK_QTY
+		     , GS.REVIEW_REG_CNT
+		     , GS.GOODS_QNA_CNT
 		FROM TB_GOODS_COMPOSE C
 		INNER JOIN TB_GOODS G ON C.COMPS_GOODS_CD = G.GOODS_CD
+		INNER JOIN TB_GOODS_SUMMARY GS ON G.GOODS_CD = GS.GOODS_CD
 		INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
 		                      AND B.USE_YN = 'Y'
 		INNER JOIN TB_SITE_BRAND SB ON B.BRAND_CD = SB.BRAND_CD

+ 47 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfKollus.xml

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.front.biz.dao.TsfKollusDao">
+
+	<!-- 카테노이드 Kollus 상품동영상 업로드 결과 처리 -->
+	<update id="updateGoodsVideo" parameterType="KollusResult">
+		/* TsfKollus.updateGoodsVideo */
+		UPDATE TB_GOODS_VIDEO
+		SET    KMC_KEY = #{media_content_key}
+		     , UPD_NO = 0
+		     , UPD_DT = NOW()
+		WHERE  KUF_KEY = #{upload_file_key}
+	</update>
+	
+	<!-- 카테노이드 Kollus 리뷰동영상 업로드 결과 처리 -->
+	<update id="updateReviewVideo" parameterType="KollusResult">
+		/* TsfKollus.updateReviewVideo */
+		UPDATE TB_REVIEW_ATTACH
+		SET    KMC_KEY = #{media_content_key}
+		     , UPD_NO = 0
+		     , UPD_DT = NOW()
+		WHERE  KUF_KEY = #{upload_file_key}
+	</update>
+	
+	<!-- 카테노이드 Kollus 전시동영상 업로드 결과 처리 -->
+	<update id="updateDisplayVideoPreview" parameterType="KollusResult">
+		/* TsfKollus.updateDisplayVideoPreview */
+		UPDATE TB_CONTENTS_PREVIEW
+		SET    STR_VAR3 = #{media_content_key}
+		     , UPD_NO = 0
+		     , UPD_DT = NOW()
+		WHERE  STR_VAR1 = 'M' /*MP4*/
+		AND    STR_VAR2 = #{upload_file_key}
+	</update>
+	
+	<!-- 카테노이드 Kollus 전시동영상 업로드 결과 처리 -->
+	<update id="updateDisplayVideo" parameterType="KollusResult">
+		/* TsfKollus.updateDisplayVideo */
+		UPDATE TB_CONTENTS
+		SET    STR_VAR3 = #{media_content_key}
+		     , UPD_NO = 0
+		     , UPD_DT = NOW()
+		WHERE  STR_VAR1 = 'M' /*MP4*/
+		AND    STR_VAR2 = #{upload_file_key}
+	</update>
+	
+</mapper>

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

@@ -136,6 +136,9 @@
 		           AND O.ORD_NM = #{orderNm}
 			</otherwise>
 		</choose>
+		<if test="supplyCompCd != null and supplyCompCd != ''">
+		           AND OD.DELV_FEE_CD = #{delvFeeCd}
+		</if>
 		           AND O.DISP_YN = 'Y'
 		           AND OD.ORD_QTY - OD.CNCL_RTN_QTY > 0
 		       ) Z
@@ -280,7 +283,7 @@
 		           AND O.ORD_NO = #{ordNo}
 		</if>
 		<if test="supplyCompCd != null and supplyCompCd != ''">
-		           AND OD.SUPPLY_COMP_CD = #{supplyCompCd}
+		           AND OD.DELV_FEE_CD = #{delvFeeCd}
 		</if>
 		       ) Z
 		 GROUP BY Z.ORD_NO, Z.ORD_DT, Z.GIFT_ADDR_INP_YN, Z.ORD_DTL_NO, Z.ORD_EXCH_GB, Z.GOODS_CD, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM
@@ -330,6 +333,7 @@
 		     , 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.PG_GB
 		     , P.PG_TID
 		     , P.PAY_MEANS
 		     , P.PAY_STAT
@@ -368,7 +372,7 @@
 		                  ) DF
 		    ON OD.DELV_FEE_CD = DF.DELV_FEE_CD
 		  LEFT OUTER JOIN TB_DELV_FEE_POLICY DFP
-		    ON DF.DELV_FEE_CD = DFP.DELV_FEE_CD
+		    ON OD.DELV_FEE_CD = DFP.DELV_FEE_CD
 		   AND DFP.USE_YN = 'Y'
 		<where>
 			<choose>
@@ -835,8 +839,8 @@
 		             , ODI.ORD_DTL_ITEM_SQ
 		             , ODI.OPT_CD1
 		             , ODI.OPT_CD2
-		             , ((ODH.ORD_AMT - ODH.CPN1_DC_AMT) * (OCD.CHG_QTY / ODH.ORD_QTY)) AS PRICE_ORG
-		             , ((ODH.REAL_ORD_AMT + ODH.PNT_DC_AMT + ODH.GFCD_USE_AMT) * (OCD.CHG_QTY / OD.ORD_QTY)) AS PRICE_SALE
+		             , ROUND((ODH.ORD_AMT - ODH.CPN1_DC_AMT) * (OCD.CHG_QTY / ODH.ORD_QTY)) AS PRICE_ORG
+		             , ROUND((ODH.REAL_ORD_AMT + ODH.PNT_DC_AMT + ODH.GFCD_USE_AMT) * (OCD.CHG_QTY / OD.ORD_QTY)) AS PRICE_SALE
 		             , OC.ADD_PAY_COST
 		             , CASE WHEN G1.GOODS_TYPE != 'G056_S' AND G1.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
 		                    ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = IFNULL(G1.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM

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

@@ -77,18 +77,18 @@
 				</th:block>
 				<th:block th:each="cardInfo, status : ${cardInfoList}" >
 				<div class="benefit_blk"  th:if="${cardInfo.prmtGb == 'B' and not #strings.isEmpty(cardInfo.note) and cardInfo.rownum ==  1}">
-					<th:block >
 					<h6>부분 무이자 할부</h6>
 					<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(cardInfo.note))}"></th:block>
+				</div>
+				</th:block>
+				<div class="benefit_blk" >
 					<div class="info_txt">
 						<ul>
 							<li>무이자할부는 행사기간 동안 실 결제금액 기준으로 가능</li>
 							<li>법인, 체크, 기프트 카드는 부분 무이자 할부 제외</li>
 						</ul>
 					</div>
-					</th:block>
 				</div>
-				</th:block>
 			</div>
 		</div>
 	</div>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 2019
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html


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

@@ -27,7 +27,7 @@
 				<h3>배송비</h3>
 				<p class="dot">
 					<th:block th:if="${goodsInfo.delvFee <= 0}">무료배송</th:block>
-					<th:block th:if="${goodsInfo.delvFee > 0}" th:text="${#numbers.formatInteger(goodsInfo.delvFee, 0,'COMMA')}" ></th:block>
+					<th:block th:if="${goodsInfo.delvFee > 0}" th:text="|${#numbers.formatInteger(goodsInfo.delvFee, 0,'COMMA')}원|" ></th:block>
 					<th:block th:if="${goodsInfo.minOrdAmt > 0}">(<th:block th:text="${#numbers.formatInteger(goodsInfo.minOrdAmt, 0,'COMMA')}" ></th:block>원 이상 무료배송)</th:block>
 				</p>
 			</div>

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

@@ -724,7 +724,7 @@
 											</div>
 										</div>
 										<div class="form_field"> 
-											<div class="select_custom item_opt2 item_opt2_1" th:classappend="${goodsInfo.goodsCd}"  disabled>
+											<div class="select_custom item_opt2 item_opt2_1" th:classappend="${goodsInfo.goodsCd}"  disabled th:attr="qty=${goodsInfo.minOrdQty}">
 												<div class="combo">
 													<div class="select">선택</div>
 													<ul class="list" th:id="|goodsOpt2${goodsInfo.goodsCd}|" >
@@ -795,10 +795,13 @@
 						<button class="gift">
 							<span><span>선물해보세요!</span></span>
 						</button>
-						<th:block  th:if="${goodsInfo.stockQty > 0}">
+						<th:block  th:if="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 							<button type="button" class="cart" id="btnGoodsWish" onclick="fnAddCart('C');"><span>쇼핑백</span></button>
 							<button type="button" class="buyNow" id="btnGoodsCart" onclick="fnAddCart('O');"><span>바로구매</span></button>
 						</th:block>
+						<th:block  th:unless="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
+						<button class="cantbuying" style="display:block;">SOLD OUT</button>
+						</th:block>
 					</div>
 				</div>
 			</div>
@@ -817,11 +820,11 @@
 					th:attr="goodsCd=${params.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=${params.planDtlSq}">위시리스트</button>
 		</div>
 		<div class="prd_buy">
-			<th:block  th:if="${goodsInfo.stockQty > 0}">
+			<th:block  th:if="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 			<button type="button" class="buying btPop_auto">구매하기</button>
 			</th:block>
-			<th:block  th:unless="${goodsInfo.stockQty > 0}">
-			<button type="button" class="cantbuying">SOLD OUT</button>
+			<th:block  th:unless="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
+			<button type="button" class="cantbuying" style="display:block;">SOLD OUT</button>
 			</th:block>
 		</div>
 	</div>
@@ -1242,7 +1245,7 @@
 			if (result.dataList != null && result.dataList.length > 0) {
 				let tag = "";
 				let $obj = null;
-				
+				let qty = 0; // 구성수량
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
 						$obj = $('.pop_option_select .select_custom.item_opt2.item_opt2_1');	
@@ -1255,13 +1258,12 @@
 					}else{
 						$obj = $('.pop_option_select .select_custom.item_opt2.item_opt2_5');
 					}
-					
+					qty = $obj.parent().parent().find('.select_custom').attr('qty'); // 구성수량
 				}else{
 					$obj = $('.pop_option_select .select_custom.item_opt2.item_opt2_1');
+					qty = $obj.attr('qty'); // 구성수량
 				}	
 				
-				let qty = $obj.parent().parent().find('.select_custom').attr('qty'); // 구성수량
-				
 				$.each(result.dataList, function(idx, item) {
 					if (idx == 0){
 						//$obj = $('#goodsOpt2'+item.goodsCd);
@@ -1333,7 +1335,7 @@
 		let maxOrdQty = 0;
 		if ("Y" == $("#cartForm  input[name=selfGoodsYn]").val() && "G056_N" == $("#cartForm  input[name=goodsType]").val()){
 			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
-				mcxDialog.alert("사이즈를 선택세요.");
+				mcxDialog.alert("사이즈를 선택해 주세요.");
 				return false;
 			}
 			minOrdQty = parseInt($("#cartForm  input[name=minOrdQty]").val());
@@ -1371,7 +1373,7 @@
 		let maxOrdQty = parseInt($("#cartForm  input[name=maxOrdQty]").val());
 		if ("Y" == $("#cartForm  input[name=selfGoodsYn]").val() && "G056_N" == $("#cartForm  input[name=goodsType]").val()){
 			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
-				mcxDialog.alert("사이즈를 선택세요.");
+				mcxDialog.alert("사이즈를 선택해 주세요.");
 				return false;
 			}
 		}else{
@@ -1384,12 +1386,12 @@
 		let alertMsg = '';
 		
 		if (ea < minOrdQty) {
-			alertMsg ="최소 주문 가능 수량은 "+minOrdQty+"개 입니다.";
+			alertMsg = minOrdQty+"개 부터 구매 가능합니다.";;
 			ea = minOrdQty;
 		}
 
 		if (ea > maxOrdQty) {
-			alertMsg = "최대 주문 가능 수량은 "+maxOrdQty+"개 입니다.";
+			alertMsg = maxOrdQty+"개 까지만 구매 가능합니다.";
 			ea = maxOrdQty;
 		}
 		
@@ -1472,7 +1474,7 @@
 
 		if (goodsType == 'G056_N' && selfGoodsYn == 'Y' ){
 			if (gagajf.isNull($("#cartForm  input[name=optCd2]").val())) {
-				mcxDialog.alert("사이즈를 선택세요.");
+				mcxDialog.alert("사이즈를 선택해 주세요.");
 				return;
 			}
 		

+ 31 - 52
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html

@@ -17,7 +17,7 @@
 <!-- 상품문의 리스트 내용 -->
 <form id="goodsQnaForm" name="goodsQnaForm" action="#" th:action="@{'/goods/qna/list'}">
 <input type="hidden" name="pageNo"  value ="1"/>
-<input type="hidden" name="pageSize" value ="20"/>
+<input type="hidden" name="pageSize" value ="3"/>
 <input type="hidden" name="relGoodsCd" th:value ="${goodsInfo.goodsCd}"/>
 <div class="pd_qnalist">
 	<div class="info_txt">
@@ -36,10 +36,10 @@
 				<input id="except_secret" type="checkbox"><label for="except_secret" onclick="fnGetList();"><span>비밀글제외</span></label>
 				<input  type="hidden" name="secretYn" >
 			</div>
-			<div class="ui_row" id="infiniteContainer">
-				<div class="foldGroup case2" id="listBoxOuter">
+			<div class="ui_row">
+				<div class="foldGroup case2" >
 					<!-- list2 -->
-					<ul  id="listBox">
+					<ul  id="ulGoodsQna">
 					</ul>
 					<!-- //list2 -->
 				</div>
@@ -55,55 +55,37 @@
 			</div>
 		</div>
 		<!-- //나열조건결과 없을 때 노출 내용 -->
+		<div class="btn_group_flex"  style="display:none;">
+			<div>
+				<button type="button" class="btn btn_default" id="btnMore">
+					<span>더보기</span>
+				</button>
+			</div>
+		</div>
 	</div>
 	<div class="btn_group_flex">
 		<div><button type="button" class="btn btn_dark" id="btn_pdQnaWrite_pop" th:onclick="cfGoodsQngCreate([[${goodsInfo.goodsCd}]] )"><span>상품 문의하기</span></button></div>
 	</div>
 </div>
 </form>
-<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
-<script src="/ux/plugins/gaga/gaga.infinite.scrollLayer.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
-	$(function() { gagaInfiniteScroll.getHistory(); });
-	
-	// 상품 검색
-	var fnGetInfiniteScrollDataList = function(pageNum) {
-	
+	var fnGoodsQnaListSearch = function() {
+
 		$('#goodsQnaForm  input[name="secretYn"]').val('');
 		if ($("#goodsQnaForm input:checkbox[name=except_secret]").is(':checked')){
 			$('#goodsQnaForm  input[name="secretYn"]').val('N');
 		}
 		
-		$("#goodsQnaForm input[name=pageNo]").val(pageNum+1);
-		// 콜백함수인 gagaInfiniteScroll.jsonToHtml 에서는 fnDrawInfiniteScrollData 함수를 호출한다.
-		gagajf.ajaxFormSubmit("/goods/qna/list", document.goodsQnaForm,  gagaInfiniteScroll.jsonToHtml);
-	}
-	
-	var fnDrawInfiniteScrollData = function(result, pageNum){
-
-		if (result.dataList != null && result.dataList.length > 0) {
-			var htm = fnCreateGoodsQnaList(result);
-			gagaInfiniteScroll.draw(htm);
-		}else {
-			if($("#goodsQnaForm input[name=pageNo]").val()==1){
-				$('#goodsQnaForm').find('.nodata').show();
-			}
-			gagaInfiniteScroll.draw('not');
-		}
+		gagajf.ajaxFormSubmit($('#goodsQnaForm').prop('action'), '#goodsQnaForm', fnGetListCallback);
 	}
 
-	var fnGoodsQnaListSearch = function() {
-		fnGoodsQnaInfiniteScrollInit();
-		gagaInfiniteScroll.getHistory();
-	}
+	var fnGetListCallback = function(result) {
 
-	var fnCreateGoodsQnaList = function(result) {
-
-		let tag = '';
 		$.each(result.dataList, function(idx, item) {
 			$('#goodsQnaForm').find('.nodata').hide();
+			let tag = '';
 			tag += '<li class="';  // <!-- 내가 쓴 글에 클래스 my_qna 추가 -->
 			if (item.selfGb == 1){
 				tag += ' my_qna';	
@@ -151,29 +133,26 @@
 			tag += '	</div>\n';
 			tag += '</li>\n';
 			
+			$('#ulGoodsQna').append(tag);
 		});
-		return tag;
-	}
-
-	// 인피니트 스크롤 초기화
-	var fnGoodsQnaInfiniteScrollInit = function(){
-		// sessionStorage.removeItem(document.location.href);
-		History.replaceState(null, null);
-		gagaInfiniteScroll.pageStatus = {
-				  pageNum : []      // [0,1,2...] 로드된 페이지 (Array)
-				, loadPage : 0      // 로드할 페이지
-				, loadAlign : 'not' // 로드 상태(prev, next, not)
-				, historyScroll : 0 //
-				, nowPage : null    // 현재 페이지
-				, pageUrl : {       // page url
-				}
+		
+		if (result.paging.pageable.totalPage > result.paging.pageable.pageNo) {
+			$('#btnMore').parent().parent().show();
+			$('#goodsQnaForm input[name=pageNo]').val(result.paging.pageable.pageNo + 1);
+		} else {
+			$('.nodata').show();
+			$('#btnMore').parent().parent().hide();
 		}
-		//History 초기화
-		$("#listBox").html("");
 	}
 	
+	// 더보기
+	$('#btnMore').on('click', function() {
+		fnGoodsQnaListSearch();
+	});
+	
+	
 	$(document).ready( function() {
-		//fnGoodsQnaListSearch();
+		fnGoodsQnaListSearch();
 	});
 	
 	

+ 274 - 33
src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html

@@ -75,26 +75,19 @@
 					<div class="item_blk">
 						<div class="item_prod">
 							<div class="item_state">
-								<a href="#none" class="itemLink">
-									<div class="itemPic">
-										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-									</div>
-									<p class="itemBrand">NBA 키즈</p>
-									<div class="itemName">
-										<span class="tit_option">[상품1]</span>
-										유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업
-									</div>
-									<p class="itemText">
-										<span class="tx1">(리뷰 9,999+)</span>
-									</p>
-								</a>
+								<a href="javascript:void(0)" class="itemLink">
+								<div class="itemPic">
+									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								</div>
+								<div class="itemName">선택</div>
+							</a>
 							</div>
 						</div>
 					</div>
 					<!-- //아이템 -->
 				</div>
 			</div>
-			<div class="cont_body"></div>
+			<div class="cont_body" id="goodsDealReview"></div>
 		</div>
 		<!-- //상품리뷰 리스트 -->
 		<!-- 상품문의 리스트 -->
@@ -106,18 +99,11 @@
 				<div class="item_blk">
 					<div class="item_prod">
 						<div class="item_state">
-							<a href="#none" class="itemLink">
+							<a href="javascript:void(0)" class="itemLink">
 								<div class="itemPic">
-									<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 								</div>
-								<p class="itemBrand">NBA 키즈</p>
-								<div class="itemName">
-									<span class="tit_option">[상품1]</span>
-									유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업
-								</div>
-								<p class="itemText">
-									<span class="tx1">(문의 9,999+)</span>
-								</p>
+								<div class="itemName">선택</div>
 							</a>
 						</div>
 					</div>
@@ -125,7 +111,7 @@
 				<!-- //아이템 -->
 			</div>
 			</div>
-		<div class="cont_body"></div>
+		<div class="cont_body"  id="goodsDealQna"></div>
 		</div>
 		<!-- //상품문의 리스트 -->
 		<!-- 배송/교환/반품 정보 -->
@@ -137,15 +123,11 @@
 				<div class="item_blk">
 					<div class="item_prod">
 						<div class="item_state">
-							<a href="#none" class="itemLink">
+							<a href="javascript:void(0)" class="itemLink">
 								<div class="itemPic">
-									<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-								</div>
-								<p class="itemBrand">NBA 키즈</p>
-								<div class="itemName">
-									<span class="tit_option">[상품1]</span>
-									유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업
+									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 								</div>
+								<div class="itemName">선택</div>
 							</a>
 						</div>
 					</div>
@@ -153,15 +135,274 @@
 				<!-- //아이템 -->
 			</div>
 			</div>
-		<div class="cont_body"></div>
+		<div class="cont_body" id="goodsDealDelivery" ></div>
 		</div>
 		<!-- //배송/교환/반품 정보 -->
 	</div>
 </div>
+
+<!-- 딜리뷰제품리스트팝업 -->
+<div class="pd_pop list_pop pd_pop pd_listReview_pop" id="listReviewPop">
+	<div class="modal_content">
+		<div class="close">닫기</div>
+		<div class="listpop_body">
+			<!-- 아이템선택 -->
+			<div class="deal_list_select">
+				<ul class="list">
+					<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
+						th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
+						th:onclick="fnSelGoodsDealReview([[${goodsInfo.compsGoodsCd}]])">
+						<div class="item_prod" th:attr="goodsCd=${goodsInfo.compsGoodsCd}">
+							<div class="item_state active">
+								<a href="javascript:void(0);" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=331'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</div>
+									<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+									<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
+									<div class="itemText">
+										<span class="tx1">(리뷰 <th:block  th:text="${(goodsInfo.reviewRegCnt <= 9999) ? #numbers.formatInteger(goodsInfo.reviewRegCnt, 0,'COMMA')  : '9,999+'}"></th:block>)</span>
+									</div>
+								</a>
+								<input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" />
+							</div>
+						</div>
+					</li> 
+				</ul>
+			</div>
+			<!-- //아이템선택 -->
+		</div>
+	</div>
+</div>
+<!-- //딜리뷰제품리스트팝업 -->
+
+<!-- 딜문의제품리스트팝업 -->
+<div class="pd_pop list_pop pd_pop pd_listQna_pop" id="listQnaPop">
+	<div class="modal_content">
+		<div class="close">닫기</div>
+		<div class="listpop_body">
+			<!-- 아이템선택 -->
+			<div class="deal_list_select">
+				<ul class="list">
+					<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
+						th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
+						th:onclick="fnSelGoodsDealQna([[${goodsInfo.compsGoodsCd}]])">
+						<div class="item_prod" th:attr="goodsCd=${goodsInfo.compsGoodsCd}">
+							<div class="item_state active">
+								<a href="javascript:void(0);" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=331'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</div>
+									<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+									<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
+									<p class="itemText">
+										<span class="tx1">(문의 9,999+)</span>
+									</p>
+									<div class="itemText">
+										<span class="tx1">(문의 <th:block  th:text="${(goodsInfo.goodsQnaCnt <= 9999) ? #numbers.formatInteger(goodsInfo.goodsQnaCnt, 0,'COMMA')  : '9,999+'}"></th:block>)</span>
+									</div>
+								</a>
+								<input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" />
+							</div>
+						</div>
+					</li>  
+				</ul>
+			</div>
+			<!-- //아이템선택 -->
+		</div>
+	</div>
+</div>
+<!-- //딜문의제품리스트팝업 -->
+
+<!-- 딜배송제품리스트팝업 -->
+<div class="pd_pop list_pop pd_pop pd_listDelivery_pop" id="listDeliveryPop">
+	<div class="modal_content">
+		<div class="close">닫기</div>
+		<div class="listpop_body">
+			<!-- 아이템선택 -->
+			<div class="deal_list_select">
+				<ul class="list">
+					<li th:each="goodsInfo, status : ${goodsDealComposeList}" 
+						th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
+						th:onclick="fnSelGoodsDealDelivery([[${goodsInfo.compsGoodsCd}]])">
+						<div class="item_prod" th:attr="goodsCd=${goodsInfo.compsGoodsCd}">
+							<div class="item_state active">
+								<a href="javascript:void(0);" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=331'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</div>
+									<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+									<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
+								</a>
+								<input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" />
+							</div>
+						</div>
+					</li> 
+				</ul>
+			</div>
+			<!-- //아이템선택 -->
+		</div>
+	</div>
+</div>
+<!-- //딜배송제품리스트팝업 -->
+
+
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
+	
+	// 구성 상품 상세 상품평
+	var fnGoodsDetailReview = function(params) {
+		gagajf.ajaxSubmit("/goods/detail/review/frame", "html", "goodsDealReview", params);
+	}
+	
+	// 상품평 상품선택시
+	var fnSelGoodsDealReview = function(goodsCd){
+		var params = new Object();
+		params.goodsCd = goodsCd;
+		fnGoodsDetailReview(params);  // ajax html
+		
+		$('.pd_pop.pd_listReview_pop').find('.deal_list_select .list li').each(function() { 
+			
+			if (goodsCd == $(this).find('input[name=selectGoods]').val()){
+				let tag = $(this).parent().parent().find('.item_prod').parent().html();
+				$('.tab_detail_cont.pd_review .item_blk').html(tag);
+			}
+		});
 
+	}
+	
+	// 구성 상품 상세 문의
+	var fnGoodsDetailQna = function(params) {
+		gagajf.ajaxSubmit("/goods/detail/qna/frame", "html", "goodsDealQna", params);
+	}
+	
+	// 문의 상품선택시
+	var fnSelGoodsDealQna = function(goodsCd){
+		var params = new Object();
+		params.goodsCd = goodsCd;
+		fnGoodsDetailQna(params);  // ajax html
+		
+		$('.pd_pop.pd_listQna_pop').find('.deal_list_select .list li').each(function() { 
+			if (goodsCd == $(this).find('input[name=selectGoods]').val()){
+				$('.pd_pop.pd_listQna_pop').find('.deal_list_select .list li').removeClass('selected');
+				$(this).addClass('selected');
+				let tag = $(this).html();
+				$('.tab_detail_cont.pd_qnalist .item_blk').html(tag);
+			}
+		});
+
+	}
+	
+	// 구성 상품 상세 배송정보
+	var fnGoodsDetailDelivery = function(params) {
+		
+		gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
+	}
+	
+	// 배송정보 상품선택시
+	var fnSelGoodsDealDelivery = function(goodsCd){
+		var params = new Object();
+		params.goodsCd = goodsCd;
+		fnGoodsDetailDelivery(params);  // ajax html
+		
+		$('.pd_pop.pd_listDelivery_pop').find('.deal_list_select .list li').each(function() { 
+			
+			if (goodsCd == $(this).find('input[name=selectGoods]').val()){
+				$('.pd_pop.pd_listDelivery_pop').find('.deal_list_select .list li').removeClass('selected');
+				$(this).addClass('selected');
+				let tag = $(this).html();
+				$('.tab_detail_cont.pd_delivery .item_blk').html(tag);
+			}
+		});
+		
+	}
+	
+	
+	// 상품선택시 상품상세내용 변경
+	var fnOpenGoodsDealDetail = function(goodsCd, compsGoodsCd){
+		
+		/* // 콤보박스 선택 처리
+		let $selObj = $('#layer_goods_deal_detail').find('.select_custom.deal_opt_item');
+		
+		// 탭별 선택시 기본 상품 설정
+		let selIdx = 0;
+		let selfGoodsYn = '';
+		let currPrice = 0;
+		let soldoutYn = "N";
+		$selObj.find('.combo .list li').each(function() { 
+			if ($(this).find('input[name=selectGoods]').val() == compsGoodsCd){
+				selfGoodsYn = $(this).find('input[name=selectGoods]').attr('selfGoodsYn');
+				currPrice = $(this).find('input[name=selectGoods]').attr('currPrice');
+				if ($(this).find('.item_prod').hasClass('soldout')) soldoutYn = "Y";
+				return false;
+			}
+			selIdx ++;
+		});
+		
+		$selObj.find('.combo .list li').eq(selIdx).trigger("click"); */
+		
+		// 상세노출
+		fnGoodsDealDesc(compsGoodsCd);
+/* 		
+		if (!soldout){
+			// 옵션1 처리
+			fnOption1("layer", compsGoodsCd, currPrice, selfGoodsYn);	
+		}
+ */		
+		
+	/* 	let $obj = $('.pd_detail .opt_result'); 
+		let $taget = $('.full_pop_fix_r .opt_result');
+		$taget.html($obj.html());
+		
+		fnSetTotalPrice();
+		
+		$('body').addClass('lock');
+		$("#layer_goods_deal_detail").show();  */
+		
+	}
+	
+	// 상세 레이어 창닫기
+	var fnCloseGoodsDealDetail = function(){
+		// 선택값 본창에 넘기기
+		/* let $obj = $('.full_pop_fix_r .opt_result');
+		let $taget = $('.pd_detail .opt_result');
+		$taget.html($obj.html());
+		
+		fnSetTotalPrice();
+		
+		$('body').removeClass('lock');
+		$('#goodsDealDetail').html('');
+		$("#layer_goods_deal_detail").hide(); */
+	}
+	
+	// 구성 상품 상세 
+	var fnGoodsDealDetail2 = function(params) {
+		
+		var Param = new Object();
+		var str = '<div class="modal pop_full fade pd_pop pd_descrp_pop" id="layer_goods_deal_desc" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+
+		if ($('#layer_goods_deal_desc').length == 0) {
+			$('body').append(str);
+		}
+
+		cfOpenLayer(_'/goods/deal/detail/info/frame', 'layer_goods_deal_desc' ,params );
+	
+	}
+
+	
+	// 레이어에서 상품선택시
+	var fnGoodsDealDesc = function(goodsCd){
+		var params = new Object();
+		params.goodsCd = goodsCd;
+		params.adminYn = "Y";
+		fnGoodsDealDetail2(params);  // ajax html
+	}
+	
+	$(document).ready( function() {
+		
+	});
+	
 	
 /*]]>*/
 </script>

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

@@ -33,7 +33,7 @@
 			</div>
 			<!-- //해당상품 -->
 		</div>
-		<div class="modal-body" id="goodsDealQna" data-id="layer_infinite_item" >
+		<div class="modal-body" id="goodsDealQna">
 		</div>
 		<div class="modal-footer">
 			

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

@@ -83,11 +83,11 @@
 		}
 		
 		if (result.paging.pageable.totalPage > result.paging.pageable.pageNo) {
-			$('#btnMore').parent().show();
+			$('#btnMore').parent().parent().show();
 			$('#goodsReviewPhotoForm input[name=pageNo]').val(result.paging.pageable.pageNo + 1);
 		} else {
 			$('.review_last').show();
-			$('#btnMore').parent().hide();
+			$('#btnMore').parent().parent().hide();
 		}
 	}
 	

+ 220 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypagePointFormMob.html

@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypagePointFormMob.html
+ * @desc    : 마이페이지 > 포인트 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.19   sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<main role="" id="" class="container my">
+			<section class="content point">
+
+				<div class="inner">
+					<div class="highlight_area">
+						<div class="have_amount">
+							<div class="total_amount">
+								보유 포인트&nbsp;<span><em th:text="${#numbers.formatDecimal(rmPntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</span>
+							</div>
+						</div>
+					</div>
+					<div class="have_amount">
+						<dl>
+							<div>
+								<dt>적립 예정 포인트</dt>
+								<dd><em th:text="${#numbers.formatDecimal(expectedPntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</dd>
+							</div>
+						</dl>
+						<dl>
+							<div>
+								<dt>한 달 이내 소멸 예정<span class="tag primary_line">D-<em>30</em></span></dt>
+								<dd><em th:text="${#numbers.formatDecimal(expectedExpirePntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</dd>
+							</div>
+						</dl>
+					</div>
+				</div>
+				
+				<div class="inner wide">
+					<div class="select_box ">
+						<div class="form_field">
+							<div class="select_custom month sup">
+								<!-- 210408_ 수정 : 스크립트없는 기본 셀렉터 사용으로 변경 -->
+								<div class="select pure">
+									<select name="month" id="month" onchange='fnChangeDate(this.value)' >
+									</select>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div class="tabWrap">
+						<ul class="tabIndex">
+							<li id="allPointList"><a href="javascript:void(0);">전체 내역</a></li>
+							<li id="accumulatePointList"><a href="javascript:void(0);">적립 내역</a></li>
+							<li id="usePointList"><a href="javascript:void(0);">사용 내역</a></li>
+						</ul>
+						<div class="tabContents">
+							<div class="tab_cont active" id="pointAjaxList">
+	
+								<!-- // tab_cont End -->
+							</div>
+						</div>
+					</div>
+				</div>
+
+			</section>
+		</main>
+<script th:inline="javascript">
+let accumulatePointList = [[${accumulatePointList}]];
+let usePointList = [[${usePointList}]];
+let allPointList = [[${allPointList}]];
+let date = [[${date}]];
+var year = date[0].year;
+var month = date[0].month;
+
+//동적으로 날짜 년도 append
+function appendYear() {
+	for (var i = 0; i < date.length; i++) {
+		$("#month").append(	"<option value='"+ date[i].year + "" + date[i].month + "'>" + date[i].year	+ "년" + date[i].month + "월 </option>")
+	}
+	//$(".month").append("<option class='selected' value='"+date[0].year+""+date[0].month+"'>"+ date[0].year + "년" + date[0].month + "월 </option>"); // 현재년도 선택 */ 
+}
+appendYear($("#month"));
+
+//날짜변경 이벤트
+var fnChangeDate = function(param) {
+	let url = '/mypage/allpoint/list';
+	
+	
+	//$(param).parent().parent().find('input[name=pointDate]').val($(param).val());
+	//var pointData = $(param).parent().parent().find('input[name=pointDate]').val();
+	
+	// 포인트화면 로딩시 이번달 설정 리스트 표시하기 위함
+	let data = {
+		searchDt : year + "" + month,
+		month : month
+	};
+	var jsonData = JSON.stringify(data);
+	
+	gagajf.ajaxJsonSubmit('/mypage/allpoint/list', jsonData, function(result){
+
+			accumulatePointList = result.accumulatePointList;
+			usePointList = result.usePointList;
+			allPointList = result.allPointList;
+			// 클릭상태 확인
+			if($("#accumulatePointList").hasClass("active")){
+				$("#accumulatePointList").click();
+				// 첫화면 전체내역 조회
+				fnGetPointTableInfo(result.accumulatePointList);
+			}else if($("#usePointList").hasClass("active")){
+				$("#usePointList").click();
+				fnGetPointTableInfo(usePointList);
+			}else if($("#allPointList").hasClass("active")) {
+				$("#allPointList").click();
+				fnGetPointTableInfo(allPointList);
+			}
+	});
+}
+
+// HTML 그리기
+var fnGetPointTableInfo = function(param) {
+	let tag = "";
+	if(param != null && param.length > 0){
+		$.each(param, function(idx,item){
+			tag += '<ul>';
+			tag += ' <li>';
+			tag += ' 	<div>';
+			if(item.pntAmt > 0){
+				tag += '		<span class="tag primary">적립</span>';
+			}else{
+				tag += ' 		<span class="tag deepgray">차감</span>';
+			}
+			
+			tag += ' 		<span class="tag_name">'+item.occurGb+'</span>';
+			tag += ' 		<span class="txt_content">'+ item.occurDtlDesc + '</span>';
+			tag += ' 		<span class="txt_time">'+item.pntUploadDt+'</span>';
+			tag += ' 	</div>';
+			tag += ' 	<div>';
+			if(item.pntAmt > 0){
+				tag += '		<span class="amount_plus">';
+				tag += '			<em>'+item.pntAmt.addComma()+'</em>P';
+				tag += '		</span>';
+			}else{
+				tag += '		<span class="c_primary">';
+				tag += '			<em>'+item.pntAmt.addComma()+'</em>P';
+				tag += '		</span>';
+			}
+			tag += ' 	</div>';
+			tag += ' </li>';
+			tag += '</ul>';
+		});
+		$("#pointAjaxList").html(tag);
+	}
+}
+
+// 전체내역 조회
+$("#allPointList").click(function(){
+
+		$("#accumulatePointList").removeClass("active");
+		$("#usePointList").removeClass("active");
+		
+		$("#allPointList").addClass("active");
+		//$("#plusMinus").text("증감/차감");
+		
+		fnGetPointTableInfo(allPointList);
+});
+
+// 적립내역 조회
+$("#accumulatePointList").click(function(){
+
+		$("#allPointList").removeClass("active");
+		$("#usePointList").removeClass("active");
+		
+		$("#accumulatePointList").addClass("active");
+		//$("#plusMinus").text("증감");
+	
+		fnGetPointTableInfo(accumulatePointList);
+});
+
+// 사용내역 조회
+$("#usePointList").click(function(){
+	
+	$("#accumulatePointList").removeClass("active");
+	$("#allPointList").removeClass("active");
+	
+	$("#usePointList").addClass("active");
+	//$("#plusMinus").text("차감");
+	
+	fnGetPointTableInfo(usePointList);
+});
+
+$(document).ready(function() {
+	// 전체내역 표시
+	$("#allPointList").trigger("click");
+	
+
+	// 셀렉트박스 활성화
+	$('.select_custom').each(function(index) {
+		var selecter01 = new sCombo($(this));
+	});
+
+	// 셀렉트박스 데이터 설정
+	fnChangeDate();
+
+});
+
+</script>
+	</th:block>
+
+</body>
+</html>

+ 153 - 144
src/main/webapp/WEB-INF/views/mob/order/OrderCouponApplyPopMob.html

@@ -1,170 +1,179 @@
 <!DOCTYPE html>
 <html lang="ko" xmlns:th="http://www.thymeleaf.org">
 
-<div class="modal-dialog" role="document">
-	<div class="modal-content">
-		<div class="modal-header">
-			<h5 class="modal-title" id="couponModifyLabel">할인쿠폰 변경</h5>
-		</div>
-		<div class="modal-body">
-			<div class="pop_cont">
-			
-				<!-- 상품쿠폰적용 -->
-				<th:block th:if="${goodsApplyCpnList.size() > 0}">
-					<h6>상품쿠폰</h6>
-					<div class="area_item_coupon">
-						<th:block th:each="goods, i : ${goodsApplyCpnList}">
-							<th:block th:if="${goods.goodsCpnList.size() > 0}">
-								<div th:id="|item${i.index}|" class="apply_item goodsCpn goodsCartCpn" th:value="${i.index}+1">
-									<div class="item_gd">
-										<figure>
-											<span class="thumb"><img src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
-											<figcaption>
-												<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
-												<div class="name" th:text="${goods.goodsNm}"></div>
-												<div class="option" th:each="colorNm, index : ${goods.colorNmArr}" th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></div>
-											</figcaption>
-										</figure>
-									</div>
-									
-									<div class="form_field">
-										<div class="select_custom coupon_list" th:value="${i.index}+1">
-											<div class="combo">
-												<div class="select">
-													<div class="item_coupon"><p class="empty">선택</p></div>
+<form class="form_wrap form_full" name="couponApplyForm" id="couponApplyForm">
+	<div class="modal-dialog" role="document">
+		<div class="modal-content">
+			<div class="modal-header">
+				<h5 class="modal-title" id="couponModifyLabel">할인쿠폰 변경</h5>
+			</div>
+			<div class="modal-body">
+				<div class="pop_cont">
+				
+					<!-- 상품쿠폰적용 -->
+					<th:block th:if="${goodsApplyCpnList.size() > 0}">
+						<h6>상품쿠폰</h6>
+						<div class="area_item_coupon">
+							<th:block th:each="goods, i : ${goodsApplyCpnList}">
+								<th:block th:if="${goods.goodsCpnList.size() > 0}">
+									<div th:id="|item${i.index}|" class="apply_item goodsCpn goodsCartCpn" th:value="${i.index}+1">
+										<div class="item_gd">
+											<figure>
+												<span class="thumb"><img src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
+												<figcaption>
+													<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
+													<div class="name" th:text="${goods.goodsNm}"></div>
+													<div class="option" th:each="colorNm, index : ${goods.colorNmArr}" th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></div>
+												</figcaption>
+											</figure>
+										</div>
+										
+										<div class="form_field">
+											<div class="select_custom coupon_list" th:value="${i.index}+1">
+												<div class="combo">
+													<div class="select">
+														<div class="item_coupon"><p class="empty">선택</p></div>
+													</div>
 												</div>
 											</div>
 										</div>
+										
+										<input type="hidden" name="cpnType" value="goodsCpn"/>
+										<input type="hidden" name="cpnCartSq" th:value="${goods.cartSq}"/>
+										<input type="hidden" name="custCpnSq" value="0"/>
+										<input type="hidden" name="cpnDcAmt" value="0"/>
 									</div>
-									
-									<input type="hidden" name="cpnType" value="goodsCpn"/>
-									<input type="hidden" name="cpnCartSq" th:value="${goods.cartSq}"/>
-									<input type="hidden" name="custCpnSq" value="0"/>
-									<input type="hidden" name="cpnDcAmt" value="0"/>
-								</div>
+								</th:block>
 							</th:block>
-						</th:block>
-					</div>
-				</th:block>
-				<!-- //상품쿠폰적용 -->
-				
-				<!-- 장바구니쿠폰적용 -->
-				<th:block th:if="${cartCpnList.size() > 0}">
-					<h6>장바구니 쿠폰</h6>
-					<div class="area_cart_coupon">
-						<div class="form_field">
-							<th:block th:each="cartCpn, k : ${cartCpnList}">
-								<div class="cartCpn goodsCartCpn" th:value="${cartCpn.custCpnSq}">
-									<input type="hidden" name="dcWay" th:value="${cartCpn.dcWay}"/>
-									<input type="hidden" name="dcVal" th:value="${cartCpn.dcVal}"/>
-									
-									<!-- 장바구니쿠폰 적용 장바구니 시퀀스 -->
-									<th:block th:each="cartCpnCartSq, kokok : ${cartCpn.cartCpnCartSqArr}"> 
-										<input type="hidden" name="cartCpnCartSq" th:value="${cartCpnCartSq}" />
-									</th:block>
-									<!-- 장바구니쿠폰 결제가능수단목록조회 -->
-									<th:block th:each="payType, kokok : ${cartCpn.payTypeArr}"> 
-										<input type="hidden" name="payTypeArr" th:value="${payType}" />
-									</th:block>
-									
-									<input type="radio" name="rdi-cart-coupon" th:id="|rdi-cart-coupon${k.index}|">
-									
-									<label th:for="|rdi-cart-coupon${k.index}|">
-										<div class="cart_coupon">
-											<p class="name" th:text="${cartCpn.cpnNm}"></p>
-											<p class="txt">
-												<th:block th:if="${cartCpn.buyLimitAmt} > 0">
-													<span th:text="${#numbers.formatInteger(cartCpn.buyLimitAmt, 1, 'COMMA')}"></span>원 이상 구매시 
-												</th:block>
-												<th:block th:if="${cartCpn.maxDcAmt} > 0">
-													최대 <span th:text="${#numbers.formatInteger(cartCpn.maxDcAmt, 1, 'COMMA')}"></span>원 할인
-												</th:block>
-											</p>
-											<p class="discount">
-												<th:block th:if="${cartCpn.dcWay} == 'G240_10'">
-													<span th:text="${#numbers.formatInteger(cartCpn.dcVal, 1, 'COMMA')}"></span>원 할인
-												</th:block>
-												<th:block th:if="${cartCpn.dcWay} == 'G240_11'">
-													<span th:text="${#numbers.formatInteger(cartCpn.dcVal, 1, 'COMMA')}"></span>% 할인
-												</th:block>
-											</p>
-										</div>
-									</label>
-								</div>
-							</th:block>
-							<div class="cartCpn" value="0">
-								<div class="cart_coupon">
-									<input type="radio" name="rdi-cart-coupon" id="rdi-cart-coupon00">
-									<label for="rdi-cart-coupon00">적용안함</label>
-								</div>
-							</div>
-							<input type="hidden" name="cpnType" value="cartCpn"/>
-							<input type="hidden" name="custCpnSq" value="0"/>
-							<input type="hidden" name="cpnDcAmt" value="0"/>
 						</div>
-					</div>
-				</th:block>
-				<!-- //장바구니쿠폰적용 -->
-			</div>
-		</div>
-		<div class="modal-footer">
-			<button type="button" class="btn btn_primary" id="btn_coupon_apply"><span>총 <em class="goodsCartCpnSumAmt">0</em>원 쿠폰 적용</span></button>
-		</div>
-		
-		<!-- 상품쿠폰팝업적용 -->
-		<th:block th:if="${goodsApplyCpnList.size() > 0}">
-			<th:block th:each="goods, i : ${goodsApplyCpnList}">
-				<th:block th:if="${goods.goodsCpnList.size() > 0}">
-					<!-- 할인쿠폰 변경_쿠폰선택_팝업 -->
-					<div class="popup_box couponSelectPop">
-						<div class="lap">
-							<div class="popup_close">카테고리닫기</div>
-							<div class="popup_head">
-								<h2>옵션변경</h2>
-							</div>
-							<div class="popup_con">
-								<ul class="list" style="display: block;">
-									<th:block th:each="goodsCpn, k : ${goods.goodsCpnList}">
-										<li th:value="${goodsCpn.custCpnSq}" th:data="${goodsCpn.cpnDcAmt}">
-											<button type="button" class="dlvr_coupon">
-												<p class="name" th:text="${goodsCpn.cpnNm}"></p>
+					</th:block>
+					<!-- //상품쿠폰적용 -->
+					
+					<!-- 장바구니쿠폰적용 -->
+					<th:block th:if="${cartCpnList.size() > 0}">
+						<h6>장바구니 쿠폰</h6>
+						<div class="area_cart_coupon">
+							<div class="form_field">
+								<th:block th:each="cartCpn, k : ${cartCpnList}">
+									<div class="cartCpn goodsCartCpn" th:value="${cartCpn.custCpnSq}">
+										<input type="hidden" name="dcWay" 			th:value="${cartCpn.dcWay}"/>
+										<input type="hidden" name="dcVal" 			th:value="${cartCpn.dcVal}"/>
+										<input type="hidden" name="buyLimitAmt" 	th:value="${cartCpn.buyLimitAmt}"/>
+										<input type="hidden" name="maxDcAmt" 		th:value="${cartCpn.maxDcAmt}"/>
+										
+										<!-- 장바구니쿠폰 적용 장바구니 시퀀스 -->
+										<th:block th:each="cartCpnCartSq, kokok : ${cartCpn.cartCpnCartSqArr}"> 
+											<input type="hidden" name="cartCpnCartSq" th:value="${cartCpnCartSq}" />
+										</th:block>
+										<!-- 장바구니쿠폰 결제가능수단목록조회 -->
+										<th:block th:each="payType, kokok : ${cartCpn.payTypeArr}"> 
+											<input type="hidden" name="payTypeArr" th:value="${payType}" />
+										</th:block>
+										
+										<input type="radio" name="rdi-cart-coupon" th:id="|rdi-cart-coupon${k.index}|">
+										
+										<label th:for="|rdi-cart-coupon${k.index}|">
+											<div class="cart_coupon">
+												<p class="name" th:text="${cartCpn.cpnNm}"></p>
 												<p class="txt">
-													<th:block th:if="${goodsCpn.buyLimitAmt} > 0">
-														<span th:text="${#numbers.formatInteger(goodsCpn.buyLimitAmt, 1, 'COMMA')}"></span>원 이상 구매시
+													<th:block th:if="${cartCpn.buyLimitAmt} > 0">
+														<span th:text="${#numbers.formatInteger(cartCpn.buyLimitAmt, 1, 'COMMA')}"></span>원 이상 구매시 
 													</th:block>
-													<th:block th:if="${goodsCpn.maxDcAmt} > 0"> 
-														최대 <span th:text="${#numbers.formatInteger(goodsCpn.maxDcAmt, 1, 'COMMA')}"></span>원 할인
+													<th:block th:if="${cartCpn.maxDcAmt} > 0">
+														최대 <span th:text="${#numbers.formatInteger(cartCpn.maxDcAmt, 1, 'COMMA')}"></span>원 할인
 													</th:block>
 												</p>
 												<p class="discount">
-													<th:block th:if="${goodsCpn.dcWay} == 'G240_10'">
-														<span th:text="${#numbers.formatInteger(goodsCpn.dcVal, 1, 'COMMA')}"></span>원 할인
+													<th:block th:if="${cartCpn.dcWay} == 'G240_10'">
+														<span th:text="${#numbers.formatInteger(cartCpn.dcVal, 1, 'COMMA')}"></span>원 할인
 													</th:block>
-													<th:block th:if="${goodsCpn.dcWay} == 'G240_11'">
-														<span th:text="${#numbers.formatInteger(goodsCpn.dcVal, 1, 'COMMA')}"></span>% 할인
+													<th:block th:if="${cartCpn.dcWay} == 'G240_11'">
+														<span th:text="${#numbers.formatInteger(cartCpn.dcVal, 1, 'COMMA')}"></span>% 할인
 													</th:block>
 												</p>
+											</div>
+										</label>
+									</div>
+								</th:block>
+								<div class="cartCpn" value="0">
+									<input type="hidden" name="dcWay" 			th:value="0"/>
+									<input type="hidden" name="dcVal" 			th:value="0"/>
+									<input type="hidden" name="buyLimitAmt" 	th:value="0"/>
+									<input type="hidden" name="maxDcAmt" 		th:value="0"/>
+										
+									<div class="cart_coupon">
+										<input type="radio" name="rdi-cart-coupon" id="rdi-cart-coupon00">
+										<label for="rdi-cart-coupon00">적용안함</label>
+									</div>
+								</div>
+								<input type="hidden" name="cpnType" value="cartCpn"/>
+								<input type="hidden" name="custCpnSq" value="0"/>
+								<input type="hidden" name="cpnDcAmt" value="0"/>
+							</div>
+						</div>
+					</th:block>
+					<!-- //장바구니쿠폰적용 -->
+				</div>
+			</div>
+			<div class="modal-footer">
+				<button type="button" class="btn btn_primary" id="btn_coupon_apply"><span>총 <em class="goodsCartCpnSumAmt">0</em>원 쿠폰 적용</span></button>
+			</div>
+			
+			<!-- 상품쿠폰팝업적용 -->
+			<th:block th:if="${goodsApplyCpnList.size() > 0}">
+				<th:block th:each="goods, i : ${goodsApplyCpnList}">
+					<th:block th:if="${goods.goodsCpnList.size() > 0}">
+						<!-- 할인쿠폰 변경_쿠폰선택_팝업 -->
+						<div class="popup_box couponSelectPop">
+							<div class="lap">
+								<div class="popup_close">카테고리닫기</div>
+								<div class="popup_head">
+									<h2>옵션변경</h2>
+								</div>
+								<div class="popup_con">
+									<ul class="list" style="display: block;">
+										<th:block th:each="goodsCpn, k : ${goods.goodsCpnList}">
+											<li th:value="${goodsCpn.custCpnSq}" th:data="${goodsCpn.cpnDcAmt}">
+												<button type="button" class="dlvr_coupon">
+													<p class="name" th:text="${goodsCpn.cpnNm}"></p>
+													<p class="txt">
+														<th:block th:if="${goodsCpn.buyLimitAmt} > 0">
+															<span th:text="${#numbers.formatInteger(goodsCpn.buyLimitAmt, 1, 'COMMA')}"></span>원 이상 구매시
+														</th:block>
+														<th:block th:if="${goodsCpn.maxDcAmt} > 0"> 
+															최대 <span th:text="${#numbers.formatInteger(goodsCpn.maxDcAmt, 1, 'COMMA')}"></span>원 할인
+														</th:block>
+													</p>
+													<p class="discount">
+														<th:block th:if="${goodsCpn.dcWay} == 'G240_10'">
+															<span th:text="${#numbers.formatInteger(goodsCpn.dcVal, 1, 'COMMA')}"></span>원 할인
+														</th:block>
+														<th:block th:if="${goodsCpn.dcWay} == 'G240_11'">
+															<span th:text="${#numbers.formatInteger(goodsCpn.dcVal, 1, 'COMMA')}"></span>% 할인
+														</th:block>
+													</p>
+												</button>
+											</li> 
+										</th:block>
+										<li value="0" data="0">
+											<button type="button" class="dlvr_coupon">
+												<p class="empty">적용 안함</p>
 											</button>
-										</li> 
-									</th:block>
-									<li value="0" data="0">
-										<button class="dlvr_coupon">
-											<p class="empty">적용 안함</p>
-										</button>
-									</li>
-								</ul>
+										</li>
+									</ul>
+								</div>
 							</div>
 						</div>
-					</div>
-					<!-- //쿠폰선택_팝업 -->
+						<!-- //쿠폰선택_팝업 -->
+					</th:block>
 				</th:block>
 			</th:block>
-		</th:block>
-		<!-- //상품쿠폰팝업적용 -->
-		
+			<!-- //상품쿠폰팝업적용 -->
+			
+		</div>
 	</div>
-</div>
-<a href="#close-modal" rel="modal:close" id="couponModifyPop_close" class="close-modal">Close</a>
+	<a href="#close-modal" rel="modal:close" id="couponModifyPop_close" class="close-modal">Close</a>
+</form>
 
 <script th:inline="javascript">
 //컨텐츠 호출

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

@@ -462,7 +462,7 @@ $(document).ready( function() {
 		, "foreignBuyYn"	: foreignBuyYn
 		, "orderMadeYn"		: orderMadeYn
 		, "custDelvAddrSq"	: 0
-		, "giftPackYn"		: "Y"
+		, "giftPackYn"		: giftPackYn
 	}
 	
 	jsonData = JSON.stringify(jsonObj);
@@ -797,7 +797,7 @@ var freegiftInfoSet = function() {
 					var usepoint			= parseInt($(this).attr("usepoint"));
 					rmPntAmt 				= rmPntAmt - freegiftUsePnt - usepoint;
 					
-					if (rmPntAmt > 0) {
+					if (rmPntAmt < 0) {
 						mcxDialog.alert("보유포인트가 부족합니다.");
 						return false;
 					}
@@ -1224,14 +1224,14 @@ var dcAmtInfoSet = function() {
 						// 1.8.4 쿠폰적용버튼
 						$("#btn_coupon_apply").on("click", function(){
 							// 상품쿠폰적용
-							$('#couponModifyPop .couponSelectPop ul li.selected').each(function(index){
-								custCpnApply($(this));
+							$('#couponApplyForm .couponSelectPop ul li.selected').each(function(index){
+								custCpnApply($(this), index, "goodsCpn");
 							});
 							
 							// 장바구니쿠폰적용
-							$('.cartCpn').each(function(index){
+							$('#couponApplyForm .cartCpn').each(function(index){								
 								if ($(this).find("input[name=rdi-cart-coupon]").is(":checked")) {
-									custCpnApply($(this));
+									custCpnApply($(this), index, "cartCpn");
 								}
 							});
 							
@@ -1451,7 +1451,7 @@ var custGoodsCpnInit = function() {
 		
 		// select box 적용
 		$("#couponModifyPop .couponSelectPop").eq(idx).find("ul li").each(function(){
-			// 쿠적용안되었으면실행
+			// 쿠적용안되었으면실행
 			if (cpnApplyTemp == false) {
 				// 쿠폰중복적용체크
 				if (custCpnDuplicationCheck($(this).attr("value"), idx)) {
@@ -1465,6 +1465,12 @@ var custGoodsCpnInit = function() {
 			// 쿠폰 select 버튼기능
 			$(this).on("click", function(){
 				if (custCpnDuplicationCheck($(this).attr("value"), idx)) {
+					// 2021.04.19 주문서 쿠폰 선택오류 수정
+					// 전체선택해제
+					$(this).parent().find("li").removeClass("selected");
+					// 본인선택기능
+					$(this).addClass("selected");
+					
 					// 쿠폰적용(임시)
 					custCpnApplyTemp($(this), idx, "goodsCpn");
 				} else {
@@ -1555,7 +1561,6 @@ var custCpnApplyTemp = function(obj, idx, cpnType) {
 	// 상품쿠폰적용
 	if (cpnType == "goodsCpn") {
 		var itemHtml = obj.find(".dlvr_coupon").html();
-		
 		$("#couponModifyPop .goodsCpn .select .item_coupon").eq(idx).html(itemHtml);
 		$("#couponModifyPop .goodsCpn input[name='cpnDcAmt']").eq(idx).val(obj.attr("data"));
 		$("#couponModifyPop .goodsCpn input[name='custCpnSq']").eq(idx).val(obj.attr("value"));
@@ -1563,7 +1568,7 @@ var custCpnApplyTemp = function(obj, idx, cpnType) {
 		// 장바구니쿠폰 초기화 적용
 		$("#couponModifyPop .cartCpn").each(function(index) {
 			if (index == 0) {
-				custCpnApplyTemp($(this)); // 쿠폰적용
+				custCpnApplyTemp($(this), 0, "cartCpn"); // 쿠폰적용
 			}
 		});
 		
@@ -1577,6 +1582,8 @@ var custCpnApplyTemp = function(obj, idx, cpnType) {
 	else if (cpnType == "cartCpn") {
 		var dcWay 				= obj.find("input[name='dcWay']").val();
 		var dcVal 				= obj.find("input[name='dcVal']").val();
+		var maxDcAmt 			= obj.find("input[name='maxDcAmt']").val();
+		var buyLimitAmt 		= obj.find("input[name='buyLimitAmt']").val();
 		var cartCpnDcSumAmt		= 0;
 		var tempSumAmt			= 0;
 		var cartSqLen			= $(".cartSq").length;
@@ -1621,6 +1628,13 @@ var custCpnApplyTemp = function(obj, idx, cpnType) {
 			cartCpnDcSumAmt = dcVal;
 		}
 		
+		// 2021.04.19 최대금액 체크
+		if (maxDcAmt > cartCpnDcSumAmt || maxDcAmt == 0) {
+			cartCpnDcSumAmt = cartCpnDcSumAmt;
+		} else {
+			cartCpnDcSumAmt = maxDcAmt;
+		}
+		
 		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"));
@@ -1676,12 +1690,20 @@ var custCpnApply = function(obj, idx, cpnType) {
 	else if (cpnType == "cartCpn") {
 		var dcWay 				= obj.find("input[name='dcWay']").val();
 		var dcVal 				= obj.find("input[name='dcVal']").val();
+		var maxDcAmt 			= obj.find("input[name='maxDcAmt']").val();
+		var buyLimitAmt 		= obj.find("input[name='buyLimitAmt']").val();
 		var cartCpnDcSumAmt		= 0;
 		var tempSumAmt			= 0;
 		var cartSqLen			= $("#orderAmtForm .cartSq").length;
 		var leftAmt				= 0;
 		var index				= 1;
 		
+		// 2021.04.19 장바구니시퀀스 값 초기화
+		$("#orderAmtForm .cartSq").each(function(){
+			$(this).parent().find(".cartCpnSq").text(0);
+			$(this).parent().find(".cartCpnDcAmt").text(0);
+		});
+		
 		// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
 		obj.find("input[name='cartCpnCartSq']").each(function(){
 			var cartCpnCartSq 		= $(this).val();
@@ -1720,10 +1742,6 @@ var custCpnApply = function(obj, idx, cpnType) {
 			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);
@@ -1732,11 +1750,21 @@ var custCpnApply = function(obj, idx, cpnType) {
 		// 선택안함
 		$("#orderForm .payTypeNm").text("선택없음");
 		
+		// 2021.04.19 최대금액 체크
+		if (maxDcAmt > cartCpnDcSumAmt || maxDcAmt == 0) {
+			cartCpnDcSumAmt 	= cartCpnDcSumAmt;
+		} else {
+			// 최대값 적용 일때는 금액할인 방식을 적용
+			cartCpnDcSumAmt 	= maxDcAmt;
+			dcVal				= cartCpnDcSumAmt;
+			dcWay 				= "G240_10";
+		}
+		
 		// 금액일때 할인금액 적용
 		if (dcWay == "G240_10") {
 			cartCpnDcSumAmt = dcVal;
 			leftAmt			= dcVal;
-			index = 1;
+			index 			= 1;
 			
 			// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
 			obj.find("input[name='cartCpnCartSq']").each(function(){
@@ -1747,11 +1775,13 @@ var custCpnApply = function(obj, idx, cpnType) {
 				$("#orderAmtForm .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 - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
+						var tempAmt 		= ((orgCurrPrice - cpn1DcAmt) * goodsQty) - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
 						var tempDiv 		= parseInt((tempAmt / tempSumAmt) * 100);
 						var cartCpnDcAmt	= 0;
 				

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

@@ -30,8 +30,8 @@
 				<div class="fold_cont" style="display: none;">
 					<div class="tabWrap">
 						<ul class="tabIndex">
-							<li><a href="javascript:;"><span>연락처 불러오기</span></a></li>
-							<li class="active"><a href="javascript:;"><span>직접입력</span></a></li>
+							<!-- <li><a href="javascript:void(0);"><span>연락처 불러오기</span></a></li> -->
+							<li class="active"><a href="javascript:void(0);"><span>직접입력</span></a></li>
 						</ul>
 						<div class="tabContents">
 							<div class="tab_cont active">

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

@@ -44,235 +44,237 @@
 					</div>
 				</div>
 				<div class="cont">
-					<div class="cont_body">
-						<div class="filter_list">
-							<!-- 1depth -->
-							<ul>
-								<li data-id="tap02" th:if="${filterBrandList!=null and !filterBrandList.empty}">
-									<a href="javascript:void(0)">브랜드</a>
-								</li>
-								<li data-id="tap03" th:if="${filterSizeList!=null and !filterSizeList.empty}">
-									<a href="javascript:void(0)">사이즈</a>
-								</li>
-								<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" th:if="${filterAgeList!=null and !filterAgeList.empty}">
-									<a href="javascript:void(0)">연령</a>
-								</li>
-								<li data-id="tap07" th:if="${filterSeasonList!=null and !filterSeasonList.empty}">
-									<a href="javascript:void(0)">시즌</a>
-								</li>
-								<li data-id="tap08" th:if="${filterColorList!=null and !filterColorList.empty}">
-									<a href="javascript:void(0)">컬러</a>
-								</li>
-								<li data-id="tap09" th:if="${filterBenefitList!=null and !filterBenefitList.empty}">
-									<a href="javascript:void(0)">혜택</a>
-								</li>
-							</ul>
-							<div class="form_field">
-								<div>
-									<input id="price" type="checkbox" ><label for="price"> <span>남여 공용만 보기</span> </label>
-								</div>
-								<div>
-									<input id="chk-2" type="checkbox" checked=""><label for="chk-2"> <span>신상품만 보기</span> </label>
-								</div>
-							</div>
-						</div>
-						<div class="filter_content">
-							<!-- 브랜드 -->
-							<div class="sort tap02" th:if="${filterBrandList!=null and !filterBrandList.empty}">
+					<form id="filterForm">
+						<div class="cont_body">
+							<div class="filter_list">
+								<!-- 1depth -->
 								<ul>
-									<th:block th:each="filterBrandData, filterBrandStat : ${filterBrandList}">
-									<li>
-										<label class="brand_btn" onclick="filterSel();">
-											<input type="checkbox" group="filterValue" th:id="${'chkFilterBrand'+filterBrandStat.count}" name="filterBrandCds" th:value="${filterBrandData.filterCd}"><span th:text="${filterBrandData.filterNm}"></span>
-										</label>
+									<li data-id="tap02" th:if="${filterBrandList!=null and !filterBrandList.empty}">
+										<a href="javascript:void(0)">브랜드</a>
 									</li>
-									</th:block>
-								</ul>
-								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
-							</div>
-							<!-- //브랜드 -->
-							<!-- 사이즈 -->
-							<div class="sort tap03" th:if="${filterSizeList!=null and !filterSizeList.empty}">
-								<ul>
-									<li>
-										<strong>상의</strong>
-										<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.filterCd == 'T'}">
-											<label class="size_btn" onclick="filterSel();">
-												<input type="checkbox" group="filterValue" th:id="${'chkFilterTSize'+filterSizeStat.count}" name="filterSizeCds" th:vale="${filterSizeData.filterNm}"><span th:text="${filterSizeData.filterNm}">80</span>
-											</label>
-										</th:block>
+									<li data-id="tap03" th:if="${filterSizeList!=null and !filterSizeList.empty}">
+										<a href="javascript:void(0)">사이즈</a>
 									</li>
-									<li>
-										<strong>하의</strong>
-										<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.filterCd == 'B'}">
-											<label class="size_btn" onclick="filterSel();">
-												<input type="checkbox" group="filterValue" th:id="${'chkFilterBSize'+filterSizeStat.count}" name="filterSizeCds" th:vale="${filterSizeData.filterNm}"><span th:text="${filterSizeData.filterNm}">80</span>
-											</label>
-										</th:block>
+									<li data-id="tap04" th:if="${filterPriceList!=null and !filterPriceList.empty}">
+										<a href="javascript:void(0)">가격</a>
 									</li>
-									<li>
-										<strong>신발</strong>
-										<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.filterCd == 'S'}">
-											<label class="size_btn" onclick="filterSel();">
-												<input type="checkbox" group="filterValue" th:id="${'chkFilterSSize'+filterSizeStat.count}" name="filterSizeCds" th:vale="${filterSizeData.filterNm}"><span th:text="${filterSizeData.filterNm}">80</span>
-											</label>
-										</th:block>
+									<li data-id="tap05">
+										<a href="javascript:void(0)">할인율</a>
+									</li>
+									<li data-id="tap06" th:if="${filterAgeList!=null and !filterAgeList.empty}">
+										<a href="javascript:void(0)">연령</a>
+									</li>
+									<li data-id="tap07" th:if="${filterSeasonList!=null and !filterSeasonList.empty}">
+										<a href="javascript:void(0)">시즌</a>
+									</li>
+									<li data-id="tap08" th:if="${filterColorList!=null and !filterColorList.empty}">
+										<a href="javascript:void(0)">컬러</a>
+									</li>
+									<li data-id="tap09" th:if="${filterBenefitList!=null and !filterBenefitList.empty}">
+										<a href="javascript:void(0)">혜택</a>
 									</li>
 								</ul>
-								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
-							</div>
-							<!-- //사이즈 -->
-							<!-- 가격 -->
-							<div class="sort tap04">
-								<div class="range">
-									<input type="text" class="js-range-slider01" name="my_range01" value="" />
-								</div>
-								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
-							</div>
-							<!-- //가격 -->
-							<!-- 할인율 -->
-							<div class="sort tap05">
-								<ul style="display:none;">
-									<li><input type="checkbox" id="percent01" name="range" value="0"><label for="percent01"><span></span><span>0%</span></label></li>
-									<li><input type="checkbox" id="percent02" name="range" value="10"><label for="percent02"><span></span><span>10%</span></label></li>
-									<li><input type="checkbox" id="percent03" name="range" value="20"><label for="percent03"><span></span><span>20%</span></label></li>
-									<li><input type="checkbox" id="percent04" name="range" value="30"><label for="percent04"><span></span><span>30%</span></label></li>
-									<li><input type="checkbox" id="percent05" name="range" value="40"><label for="percent05"><span></span><span>40%</span></label></li>
-									<li><input type="checkbox" id="percent06" name="range" value="50"><label for="percent06"><span></span><span>50%</span></label></li>
-									<li><input type="checkbox" id="percent07" name="range" value="60"><label for="percent07"><span></span><span>60%</span></label></li>
-									<li><input type="checkbox" id="percent08" name="range" value="70"><label for="percent08"><span></span><span>70%</span></label></li>
-									<li><input type="checkbox" id="percent09" name="range" value="80"><label for="percent09"><span></span><span>80%</span></label></li>
-									<li><input type="checkbox" id="percent10" name="range" value="100"><label for="percent10"><span></span><span>100%</span></label></li>
-								</ul>
-								<div class="range">
-									<input type="text" class="js-range-slider02" name="my_range02" value="" />
+								<div class="form_field">
+									<div>
+										<input id="price" type="checkbox" ><label for="price"> <span>남여 공용만 보기</span> </label>
+									</div>
+									<div>
+										<input id="chk-2" type="checkbox" checked=""><label for="chk-2"> <span>신상품만 보기</span> </label>
+									</div>
 								</div>
-								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 							</div>
-							<!-- //할인율 -->
-							<!-- 연령 -->
-							<div class="sort tap06" th:if="${filterAgeList!=null and !filterAgeList.empty}">
-								<ul>
-									<th:block th:each="filterAgeData, filterAgeStat : ${filterAgeList}">
+							<div class="filter_content">
+								<!-- 브랜드 -->
+								<div class="sort tap02" th:if="${filterBrandList!=null and !filterBrandList.empty}" id="brandFilterDiv">
+									<ul>
+										<th:block th:each="filterBrandData, filterBrandStat : ${filterBrandList}">
 										<li>
-											<label class="Age_btn" onclick="filterSel();">
-												<input type="checkbox" group="filterValue" th:id="${'chkFilterAge'+filterAgeStat.count}" name="filterAgeCds" th:value="${filterAgeData.filterCd}"><span th:text="${filterAgeData.filterNm}">베이비(0~18개월)</span>
+											<label class="brand_btn">
+												<input type="checkbox" group="filterValue" th:id="${'chkFilterBrand'+filterBrandStat.count}" name="brand" th:value="${filterBrandData.filterCd}" th:data-id="${filterBrandData.filterNm}" onclick="filterSel(this,'brand','off');"><span th:text="${filterBrandData.filterNm}"></span>
 											</label>
 										</li>
-									</th:block>
-								</ul>
-								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
-							</div>
-							<!-- //연령 -->
-							<!-- 시즌 -->
-							<div class="sort tap07" th:if="${filterSeasonList!=null and !filterSeasonList.empty}">
-								<ul>
-									<th:block th:each="filterSeasonData, filterSeasonStat : ${filterSeasonList}">
-										<li>
-											<label class="Season_btn" onclick="filterSel();">
-												<input type="checkbox" group="filterValue"  th:id="${'chkFilterSeason'+filterSeasonStat.count}" name="filterSeasonCds" th:value="${filterSeasonData.filterCd}"><span th:text="${filterSeasonData.filterNm}">봄</span>
-											</label>
+										</th:block>
+									</ul>
+									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
+								</div>
+								<!-- //브랜드 -->
+								<!-- 사이즈 -->
+								<div class="sort tap03" th:if="${filterSizeList!=null and !filterSizeList.empty}" id="sizeFilterDiv">
+									<ul>
+										<li id="sizeLi1">
+											<strong>상의</strong>
+											<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.filterCd == 'T'}">
+												<label class="size_btn">
+													<input type="checkbox" group="filterValue" th:id="${'chkFilterTSize'+filterSizeStat.count}" name="size" th:vale="${filterSizeData.filterNm}" th:data-id="${filterSizeData.filterNm}" onclick="filterSel(this,'size','off','1');"><span th:text="${filterSizeData.filterNm}">80</span>
+												</label>
+											</th:block>
 										</li>
-									</th:block>
-								</ul>
-								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
-							</div>
-							<!-- //시즌 -->
-							<!-- 컬러 -->
-							<div class="sort tap08" th:if="${filterColorList!=null and !filterColorList.empty}">
-								<ul>
-									<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.filterNm}" >
-												<span class="pdColor-color" th:if="${filterColorData.filterNm=='#FFFFFF'}" th:style="${'background-color:'+filterColorData.filterNm+';'+' border:1px solid #aaa;'}"></span>
-												<span class="pdColor-color" th:if="${filterColorData.filterNm!='#FFFFFF'}" th:style="${'background-color:'+filterColorData.filterNm}"></span>
-											</label>
+										<li id="sizeLi2">
+											<strong>하의</strong>
+											<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.filterCd == 'B'}">
+												<label class="size_btn">
+													<input type="checkbox" group="filterValue" th:id="${'chkFilterBSize'+filterSizeStat.count}" name="size2" th:vale="${filterSizeData.filterNm}" th:data-id="${filterSizeData.filterNm}" onclick="filterSel(this,'size','off','2');"><span th:text="${filterSizeData.filterNm}">80</span>
+												</label>
+											</th:block>
 										</li>
-									</th:block>
-								</ul>
-								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
-							</div>
-							<!-- //컬러 -->
-							<!-- 혜택 -->
-							<div class="sort tap09" th:if="${filterBenefitList!=null and !filterBenefitList.empty}">
-								<ul>
-									<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.filterCd}"><span th:text="${filterBenefitData.filterNm}"></span>
-											</label>
+										<li id="sizeLi3">
+											<strong>신발</strong>
+											<th:block th:each="filterSizeData, filterSizeStat : ${filterSizeList}" th:if="${filterSizeData.filterCd == 'S'}">
+												<label class="size_btn">
+													<input type="checkbox" group="filterValue" th:id="${'chkFilterSSize'+filterSizeStat.count}" name="size3" th:vale="${filterSizeData.filterNm}" th:data-id="${filterSizeData.filterNm}" onclick="filterSel(this,'size','off','3');"><span th:text="${filterSizeData.filterNm}">80</span>
+												</label>
+											</th:block>
 										</li>
-									</th:block>
-								</ul>
-								<a href="javascript:void(0)" class="tap_close">delete-btn</a>
-							</div>
-							<!-- //혜택 -->
-							<!-- 필터 -->
-							<div class="fillter">
-								<div class="fillter_box">
-                                    <span>
-                                        모이몰른
-                                        <a href="javascript:;" class="filter_delete"></a >
-                                    </span>
-									<!-- 컬러 표시 -->
-									<span>
-                                        <span class="pdColor-color12"></span>
-                                        <a href="javascript:;" class="filter_delete"></a >
-                                    </span>
-									<!-- 컬러 표시 -->
+									</ul>
+									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 								</div>
-								<button class="fillter_reset"><span>전체 초기화</span></button>
-							</div>
-							<!-- //필터 -->
-						</div>
-						<div class="list_content"> <!-- 데이터 없을시 클래스 nodata 추가 -->
-							<div class="list_defult">
-								<div>
-									<p>선택하신 조건에 맞는 상품이 없습니다.<br>필터를 변경해 보세요.</p>
+								<!-- //사이즈 -->
+								<!-- 가격 -->
+								<div class="sort tap04" id="priceFilterDiv">
+									<div class="range">
+										<input type="text" class="js-range-slider01" name="my_range01" value="" />
+									</div>
+									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 								</div>
-								<div class="ui_row">
-									<button type="button" class="btn btn_default btn_md"><span>선택한 필터 초기화</span></button>
+								<!-- //가격 -->
+								<!-- 할인율 -->
+								<div class="sort tap05" id="dcrateFilterDiv">
+									<ul style="display:none;">
+										<li><input type="checkbox" id="percent01" name="range" value="0"><label for="percent01"><span></span><span>0%</span></label></li>
+										<li><input type="checkbox" id="percent02" name="range" value="10"><label for="percent02"><span></span><span>10%</span></label></li>
+										<li><input type="checkbox" id="percent03" name="range" value="20"><label for="percent03"><span></span><span>20%</span></label></li>
+										<li><input type="checkbox" id="percent04" name="range" value="30"><label for="percent04"><span></span><span>30%</span></label></li>
+										<li><input type="checkbox" id="percent05" name="range" value="40"><label for="percent05"><span></span><span>40%</span></label></li>
+										<li><input type="checkbox" id="percent06" name="range" value="50"><label for="percent06"><span></span><span>50%</span></label></li>
+										<li><input type="checkbox" id="percent07" name="range" value="60"><label for="percent07"><span></span><span>60%</span></label></li>
+										<li><input type="checkbox" id="percent08" name="range" value="70"><label for="percent08"><span></span><span>70%</span></label></li>
+										<li><input type="checkbox" id="percent09" name="range" value="80"><label for="percent09"><span></span><span>80%</span></label></li>
+										<li><input type="checkbox" id="percent10" name="range" value="100"><label for="percent10"><span></span><span>100%</span></label></li>
+									</ul>
+									<div class="range">
+										<input type="text" class="js-range-slider02" name="my_range02" value="" />
+									</div>
+									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 								</div>
-							</div>
-							<div class="count_wrap">
-								<div>
-									<p><span id="totCntId"></span>개의 상품</p>
+								<!-- //할인율 -->
+								<!-- 연령 -->
+								<div class="sort tap06" th:if="${filterAgeList!=null and !filterAgeList.empty}" id="ageFilterDiv">
+									<ul>
+										<th:block th:each="filterAgeData, filterAgeStat : ${filterAgeList}">
+											<li>
+												<label class="Age_btn">
+													<input type="checkbox" group="filterValue" th:id="${'chkFilterAge'+filterAgeStat.count}" name="age" th:value="${filterAgeData.filterCd}" th:data-id="${filterAgeData.filterNm}" onclick="filterSel(this,'age','off');"><span th:text="${filterAgeData.filterNm}">베이비(0~18개월)</span>
+												</label>
+											</li>
+										</th:block>
+									</ul>
+									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 								</div>
-								<div>
+								<!-- //연령 -->
+								<!-- 시즌 -->
+								<div class="sort tap07" th:if="${filterSeasonList!=null and !filterSeasonList.empty}" id="seasonFilterDiv">
 									<ul>
-										<li>
-											<a href="" class="on">최신상품순</a>
-										</li>
-										<li>
-											<a href="">인기상품순</a>
-										</li>
-										<li>
-											<a href="">리뷰 많은순</a>
-										</li>
+										<th:block th:each="filterSeasonData, filterSeasonStat : ${filterSeasonList}">
+											<li>
+												<label class="Season_btn">
+													<input type="checkbox" group="filterValue"  th:id="${'chkFilterSeason'+filterSeasonStat.count}" name="season" th:value="${filterSeasonData.filterCd}" th:data-id="${filterSeasonData.filterNm}" onclick="filterSel(this,'season','off');"><span th:text="${filterSeasonData.filterNm}">봄</span>
+												</label>
+											</li>
+										</th:block>
 									</ul>
+									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 								</div>
-							</div>
-
-							<div id="infiniteContainer">
-								<div id="listBoxOuter" class="itemsGrp">
-									<ul class="productlist quarter" >
+								<!-- //시즌 -->
+								<!-- 컬러 -->
+								<div class="sort tap08" th:if="${filterColorList!=null and !filterColorList.empty}" id="colorFilterDiv">
+									<ul>
+										<th:block th:each="filterColorData, filterColorStat : ${filterColorList}">
+											<li>
+												<label class="color-check">
+													<input type="checkbox" group="filterValue" th:id="${'chkFilterColor'+filterColorStat.count}" name="color" th:value="${filterColorData.filterNm}" th:data-id="${filterColorData.filterNm.replace('#','')}" onclick="filterSel(this,'color','off');">
+													<span class="pdColor-color" th:if="${filterColorData.filterNm=='#FFFFFF'}" th:style="${'background-color:'+filterColorData.filterNm+';'+' border:1px solid #aaa;'}" th:value="${filterColorData.filterNm}"></span>
+													<span class="pdColor-color" th:if="${filterColorData.filterNm!='#FFFFFF'}" th:style="${'background-color:'+filterColorData.filterNm}" th:value="${filterColorData.filterNm}"></span>
+												</label>
+											</li>
+										</th:block>
+									</ul>
+									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
+								</div>
+								<!-- //컬러 -->
+								<!-- 혜택 -->
+								<div class="sort tap09" th:if="${filterBenefitList!=null and !filterBenefitList.empty}" id="benefitFilterDiv">
+									<ul>
+										<th:block th:each="filterBenefitData, filterBenefitStat : ${filterBenefitList}">
+											<li>
+												<label class="Benefits_btn">
+													<input type="checkbox" group="filterValue" th:id="${'chkFilterBenefits'+filterBenefitStat.count}" name="benefit" th:value="${filterBenefitData.filterCd}" th:data-id="${filterBenefitData.filterNm}" onclick="filterSel(this,'benefit','off');"><span th:text="${filterBenefitData.filterNm}"></span>
+												</label>
+											</li>
+										</th:block>
 									</ul>
+									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
+								</div>
+								<!-- //혜택 -->
+								<!-- 필터 -->
+								<div class="fillter">
+									<div class="fillter_box" id="filterData">
+<!--										<span>-->
+<!--											모이몰른-->
+<!--											<a href="javascript:;" class="filter_delete"></a >-->
+<!--										</span>-->
+										<!-- 컬러 표시 -->
+<!--										<span>-->
+<!--											<span class="pdColor-color12"></span>-->
+<!--											<a href="javascript:;" class="filter_delete"></a >-->
+<!--										</span>-->
+										<!-- 컬러 표시 -->
+									</div>
+									<button class="fillter_reset" onclick="fnFilterReset();"><span>전체 초기화</span></button>
 								</div>
+								<!-- //필터 -->
 							</div>
+							<div class="list_content"> <!-- 데이터 없을시 클래스 nodata 추가 -->
+								<div class="list_defult">
+									<div>
+										<p>선택하신 조건에 맞는 상품이 없습니다.<br>필터를 변경해 보세요.</p>
+									</div>
+									<div class="ui_row">
+										<button type="button" class="btn btn_default btn_md"><span>선택한 필터 초기화</span></button>
+									</div>
+								</div>
+								<div class="count_wrap">
+									<div>
+										<p><span id="totCntId"></span>개의 상품</p>
+									</div>
+									<div>
+										<ul>
+											<li>
+												<a href="" class="on">최신상품순</a>
+											</li>
+											<li>
+												<a href="">인기상품순</a>
+											</li>
+											<li>
+												<a href="">리뷰 많은순</a>
+											</li>
+										</ul>
+									</div>
+								</div>
 
-							<div class="itemsGrp" id="listBox">
+								<div id="infiniteContainer">
+									<div id="listBoxOuter" class="itemsGrp">
+										<ul class="productlist quarter" >
+										</ul>
+									</div>
+								</div>
 
-							</div>
+								<div class="itemsGrp" id="listBox">
 
+								</div>
+
+							</div>
 						</div>
-					</div>
+					</form>
 				</div>
 			</div>
 		</div>
@@ -312,6 +314,7 @@
 				var my_to = custom_values.indexOf(custom_values[5]); //custom_values.indexOf('230,000원');
 				var minValue = custom_values[0];
 				var maxValue = custom_values[5];
+				console.log('my_from>>'+my_from);
 
 				$(".dp .js-range-slider01, .sch_result .js-range-slider01").ionRangeSlider({
 					type: "double",
@@ -330,7 +333,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('100%');
+			var my_to02 = custom_values02.indexOf('10%');
 			$(".dp .js-range-slider02, .sch_result .js-range-slider02").ionRangeSlider({
 				type: "double",
 				min: 0,
@@ -349,12 +352,25 @@
 			//fnGoodsListSearch();
 		});
 
+		var fnFilterReset = function (){
+			$("#searchGoodsForm input:hidden[name=brandSearch]").remove();
+			$("#searchGoodsForm input:hidden[name=sizeSearch]").remove();
+			$("#searchGoodsForm input:hidden[name=priceSearch]").remove();
+			$("#searchGoodsForm input:hidden[name=dcrateSearch]").remove();
+			$("#searchGoodsForm input:hidden[name=seasonSearch]").remove();
+			$("#searchGoodsForm input:hidden[name=colorSearch]").remove();
+			$("#searchGoodsForm input:hidden[name=benefitSearch]").remove();
+		}
+
 		var fnGoodsListSearch = function (){
+			console.log('1');
 			gagaInfiniteScroll.getHistory();
+			console.log('2');
 		}
 
 		// 상품 검색
 		var fnGetInfiniteScrollDataList = function (pageNum){
+			console.log('3');
 			$("#searchGoodsForm input[name=pageNo]").val(pageNum+1);
 			gagajf.ajaxFormSubmit("/display/category/goods/list", document.searchGoodsForm,  gagaInfiniteScroll.jsonToHtml);
 		}
@@ -496,7 +512,7 @@
 
 		// 사파리 - event.persisted || 크롬 - window.performance.navigation.type 이 1이면 새로고침, 2면 페이지 이동을 통한 캐쉬페이징
 		$(window).on("pageshow", function(event) {
-			/*$('#filterForm input[name=brand]:checked').each(function(){
+			$('#filterForm input[name=brand]:checked').each(function(){
 				$(this).parent().addClass("active");
 			});
 			$('#filterForm input[name=size]:checked').each(function(){
@@ -504,7 +520,7 @@
 			});
 			$('#filterForm input[name=price]:checked').each(function(){
 				$(this).parent().addClass("active");
-			});*/
+			});
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){

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

@@ -84,18 +84,18 @@
 				</th:block>
 				<th:block th:each="cardInfo, status : ${cardInfoList}" >
 				<div class="benefit_blk"  th:if="${cardInfo.prmtGb == 'B' and not #strings.isEmpty(cardInfo.note) and cardInfo.rownum ==  1}">
-					<th:block >
 					<h6>부분 무이자 할부</h6>
 					<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(cardInfo.note))}"></th:block>
+				</div>
+				</th:block>
+				<div class="benefit_blk" >
 					<div class="info_txt">
 						<ul>
 							<li>무이자할부는 행사기간 동안 실 결제금액 기준으로 가능</li>
 							<li>법인, 체크, 기프트 카드는 부분 무이자 할부 제외</li>
 						</ul>
 					</div>
-					</th:block>
 				</div>
-				</th:block>
 			</div>
 		</div>
 	</div>

+ 7 - 6
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -195,7 +195,7 @@
 									<div class="form_field">
 										<div class="select_custom deal_opt1" disabled>
 											<div class="combo">
-												<div class="select">선택</div>
+												<div class="select">옵션1</div>
 												<ul class="list" id="goodsDealOptUp1">
 													<!--  옵션 1 -->
 												</ul>
@@ -205,7 +205,7 @@
 									<div class="form_field">
 										<div class="select_custom deal_opt2" disabled>
 											<div class="combo">
-												<div class="select">선택</div>
+												<div class="select">옵션2</div>
 												<ul class="list" id="goodsDealOptUp2">
 													<!--  옵션 2 -->
 												</ul>
@@ -228,7 +228,7 @@
 							</div>
 							<div class="btn_box">
 								<div class="btn_group_block ui_row">
-								<th:block  th:if="${goodsInfo.stockQty > 0}">
+								<th:block  th:if="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 									<div class="ui_col_6">
 										<button type="button" class="btn btn_dark btn_block" id="btnGoodsWish" onclick="fnAddCart('C');"><span>쇼핑백</span></button>
 									</div>
@@ -236,7 +236,7 @@
 										<button type="button" class="btn btn_primary btn_block" id="btnGoodsCart" onclick="fnAddCart('O');"><span>바로구매</span></button>
 									</div>
 								</th:block>
-								<th:block  th:unless="${goodsInfo.stockQty > 0}">
+								<th:block  th:unless="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 									<div class="ui_col_12">
 										<button type="button" class="btn btn_dark btn_block" disabled=""><span>SOLD OUT</span></button>
 									</div>
@@ -657,12 +657,12 @@
 		let optCd =  $(obj).attr('optCd');
 		let alertMsg = '';
 		if (ea < minOrdQty) {
-			mcxDialog.alert("최소 주문 가능 수량은 "+minOrdQty+"개 입니다.");
+			alertMsg = minOrdQty+"개 부터 구매 가능합니다.";
 			ea = minOrdQty;
 		}
 
 		if (ea > maxOrdQty) {
-			mcxDialog.alert("최대 주문 가능 수량은 "+maxOrdQty+"개 입니다.");
+			alertMsg = maxOrdQty+"개 까지만 구매 가능합니다.";
 			ea = maxOrdQty;
 		}
 
@@ -779,6 +779,7 @@
 		
 		var params = new Object();
 		params.goodsCd = [[${params.goodsCd}]];
+		params.colorCd = [[${params.colorCd}]];
 		params.viewDt = [[${params.viewDt}]];
 		params.preview = [[${params.preview}]];
 		params.adminYn = [[${params.adminYn}]];

+ 1 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailDeliveryFormWeb.html

@@ -39,7 +39,7 @@
 						</th>
 						<td>
 							<th:block th:if="${goodsInfo.delvFee <= 0}">무료배송</th:block>
-							<th:block th:if="${goodsInfo.delvFee > 0}" th:text="${#numbers.formatInteger(goodsInfo.delvFee, 0,'COMMA')}" ></th:block>
+							<th:block th:if="${goodsInfo.delvFee > 0}" th:text="|${#numbers.formatInteger(goodsInfo.delvFee, 0,'COMMA')}원|" ></th:block>
 							<th:block th:if="${goodsInfo.minOrdAmt > 0}">(<th:block th:text="${#numbers.formatInteger(goodsInfo.minOrdAmt, 0,'COMMA')}" ></th:block>원 이상 무료배송)</th:block>
 						</td>
 					</tr>

+ 47 - 30
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -222,7 +222,7 @@
 										<div class="select_custom item_opt1"  th:classappend="${'item_opt1_'+status.count +' '+goodsCompose.compsGoodsCd}" 
 																			th:if="${goodsCompose.goodsOption1List != null and !goodsCompose.goodsOption1List.empty}" >
 											<div class="combo">
-												<div class="select">선택</div>
+												<div class="select">옵션1</div>
 												<ul class="list">
 													<th:block th:each="goodsOption, optionStatus : ${goodsCompose.goodsOption1List}" >
 													<li class="selected" th:id="|selfGoodsOpt1${goodsCompose.compsGoodsCd}|" th:if=${optionStatus.first}>선택</li> 
@@ -241,7 +241,7 @@
 									<div class="form_field">
 										<div class="select_custom item_opt2" th:classappend="${'item_opt2_'+status.count +' '+goodsCompose.compsGoodsCd}"  disabled>
 											<div class="combo">
-												<div class="select">선택</div>
+												<div class="select">옵션2</div>
 												<ul class="list" th:id="|goodsOpt2${goodsCompose.compsGoodsCd}|" >
 													<!-- 옵션2 -->
 												</ul>
@@ -262,7 +262,7 @@
 									<div class="form_field">
 										<div class="select_custom item_opt1 item_opt1_1" th:classappend="${goodsInfo.goodsCd}" >
 											<div class="combo">
-												<div class="select">선택</div>
+												<div class="select">옵션1</div>
 												<ul class="list">
 													<li class="selected" th:id="|selfGoodsOpt1${goodsInfo.goodsCd}|" >선택</li> 
 													<th:block th:each="goodsOption, optionStatus : ${goodsOption1List}" >
@@ -279,7 +279,7 @@
 									<div class="form_field">
 										<div class="select_custom item_opt2 item_opt2_1" th:classappend="${goodsInfo.goodsCd}"  disabled>
 											<div class="combo">
-												<div class="select">선택</div>
+												<div class="select">옵션2</div>
 												<ul class="list" th:id="|goodsOpt2${goodsInfo.goodsCd}|" >
 													<!-- 옵션2 -->
 												</ul>
@@ -298,14 +298,14 @@
 										<span class="title">수량</span>
 									</div>
 									<div class="number_count">
-										<span class="minus" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></span>
-										<input type="text" name="cea" maxlength="3" style="ime-mode:disabled" th:value="${goodsInfo.minOrdQty}" onblur="fnChangeOrderEa(this)" data-valid-type="numeric">
+										<span class="minus min_val" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></span>
+										<input type="text" name="cea" maxlength="3" style="ime-mode:disabled" th:value="${goodsInfo.minOrdQty}" readonly >
 										<input type="hidden" name="coption" value=""   th:attr="price=${goodsInfo.currPrice}">
 										<span class="plus" onclick="fnAdjustOrderEa(this);" adjust="+"><em class="sr-only">추가</em></span>
 									</div>
 								</div>
 							</div>
-							<div class="price_box">
+							<div class="price_box" style="display:none;">
 								<p class="number">
 									총&nbsp;<span id="goodsTotalQty">0</span>개
 								</p>
@@ -317,7 +317,7 @@
 							</div>
 							<div class="btn_box">
 								<div class="btn_group_block ui_row">
-								<th:block  th:if="${goodsInfo.stockQty > 0}">
+								<th:block  th:if="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 									<div class="ui_col_6">
 										<button type="button" class="btn btn_dark btn_block" id="btnGoodsWish" onclick="fnAddCart('C');"><span>쇼핑백</span></button>
 									</div>
@@ -325,14 +325,14 @@
 										<button type="button" class="btn btn_primary btn_block" id="btnGoodsCart" onclick="fnAddCart('O');"><span>바로구매</span></button>
 									</div>
 								</th:block>
-								<th:block  th:unless="${goodsInfo.stockQty > 0}">
+								<th:block  th:unless="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 									<div class="ui_col_12">
 										<button type="button" class="btn btn_dark btn_block" disabled=""><span>SOLD OUT</span></button>
 									</div>
 								</th:block>
 								</div>
 							</div>
-							<div class="npay_box">
+							<div class="npay_box" style="display:none;">
 								<a href="">네이버id로 간편구매~</a>
 							</div>
 							<div class="exinfo_box">
@@ -423,8 +423,8 @@
 					</div>
 					<div class="desc_character" th:if="${goodsInfo.goodsSpecialDesc != null  and !goodsInfo.goodsSpecialDesc.empty}"> <!-- 상품특징 -->
 						<span class="tit_desc">상품특징</span>
-						<p class="ptxt01" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsSpecialDesc))}">
-							- 지퍼플러 장식을 더해 완성도를 높여줌
+						<p class="ptxt01">
+							<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsSpecialDesc))}"></th:block>
 						</p>
 					</div>
 				</div>
@@ -803,6 +803,7 @@
 				$("#cartForm  input[name=cea]").attr("readonly",false);
 				$("#cartForm  input[name=stock]").val(itemCnt);
 	
+				$('.price_box').show();
 				fnSetTotalPrice();
 			}); 
 		}
@@ -811,9 +812,9 @@
 	// 수량 변경 클릭
 	var fnAdjustOrderEa = function(obj) {
 
-		if("G056_N" == $("#cartForm  input[name=goodsType]").val()){
+		if("G056_N" == $("#cartForm  input[name=goodsType]").val() && "Y" == $("#cartForm  input[name=selfGoodsYn]").val()){
 			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
-				mcxDialog.alert("사이즈를 선택세요.");
+				mcxDialog.alert("사이즈를 선택해 주세요.");
 				return false;
 			}
 		}else{
@@ -827,7 +828,7 @@
 			});
 			
 			if (targetSize != itemSize){
-				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
+				mcxDialog.alert("옵션을 선택해 주세요.");
 				return false;
 			}
 		}
@@ -854,9 +855,9 @@
 	//옵션 갯수 변경
 	var fnChangeOrderEa = function() {
 
-		if("G056_N" == $("#cartForm  input[name=goodsType]").val()){
+		if("G056_N" == $("#cartForm  input[name=goodsType]").val() && "Y" == $("#cartForm  input[name=selfGoodsYn]").val()){
 			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
-				mcxDialog.alert("사이즈를 선택세요.");
+				mcxDialog.alert("사이즈를 선택해 주세요.");
 				return false;
 			}
 		}else{
@@ -871,7 +872,7 @@
 			});
 			
 			if (targetSize != itemSize){
-				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
+				mcxDialog.alert("옵션을 선택해 주세요.");
 				return false;
 			}
 		}
@@ -882,12 +883,12 @@
 		let buymax = parseInt($("#cartForm  input[name=maxOrdQty]").val());
 		let alertMsg = '';
 		if (ea < buymin) {
-			alertMsg ="최소 주문 가능 수량은 "+buymin+"개 입니다.";
+			alertMsg = buymin+"개 부터 구매 가능합니다.";
 			ea = buymin;
 		}
 
 		if (ea > buymax) {
-			alertMsg = "최대 주문 가능 수량은 "+buymax+"개 입니다.";
+			alertMsg = buymax+"개 까지만 구매 가능합니다.";
 			ea = buymax;
 		}
 
@@ -918,13 +919,23 @@
 		$('input[name="cea"]').each(function() {
 			let ea = parseInt($(this).val());
 			let addPrice = 0;
-			let target=$('.select_custom.item_opt2');
-			target.each(function() {
-				if (typeof ($(this).find('input[name=opt2]').val()) != 'undefined' && !gagajf.isNull($(this).find('input[name=opt2]').val())){
-					addPrice += Number($(this).find('input[name=opt2]').attr('addPrice'));	
-				}
-			});	
 			
+			if("G056_N" == $("#cartForm  input[name=goodsType]").val() && "Y" == $("#cartForm  input[name=selfGoodsYn]").val()){
+				let target=$('.opt_size').find('input[name=opt]');
+				target.each(function() {
+					if ($(this).is(":checked")){
+						addPrice += Number($(this).attr('addPrice'));	
+					}
+				});	
+			}else{
+			
+				let target=$('.select_custom.item_opt2');
+				target.each(function() {
+					if (typeof ($(this).find('input[name=opt2]').val()) != 'undefined' && !gagajf.isNull($(this).find('input[name=opt2]').val())){
+						addPrice += Number($(this).find('input[name=opt2]').attr('addPrice'));	
+					}
+				});	
+			}
 			let goodsPrice = parseInt($(this).parent().find('input[name="coption"]').attr('price'));
 
 			totalEa += ea;
@@ -945,8 +956,14 @@
 
 		if (goodsType == 'G056_N'){
 			if (gagajf.isNull($("#cartForm  input[name=optCd2]").val())) {
-				mcxDialog.alert("사이즈를 선택하세요.");
-				return;
+				if("Y" == $("#cartForm  input[name=selfGoodsYn]").val()){
+					mcxDialog.alert("사이즈를 선택해 주세요.");
+					return false;	
+				}else{
+					mcxDialog.alert("옵션을 선택해 주세요.");
+					return false;
+				}
+				
 			}
 		
 			let compsList = [];
@@ -977,7 +994,7 @@
 			});
 			
 			if (targetSize != itemSize){
-				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
+				mcxDialog.alert("옵션을 선택해 주세요.");
 				return false;
 			}
 			
@@ -1149,7 +1166,7 @@
 					}
 					
 				}else{
-					var opt_selecter02 = new sCombo('.opt_select .select_custom.item_opt2.item_opt2_1');
+					var opt_selecter02 = new sCombo('.opt_select .select_custom.item_opt2.item_opt2_1'); 
 				}	
 			}
 			

+ 4 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailQnaFormWeb.html

@@ -66,7 +66,10 @@
 /*<![CDATA[*/
 	
 	var fnGetList = function() {
-
+		
+		// 상품문의창 닫기
+		cfCloseLayer('layer_goods_qna_reg')
+	
 		$('#goodsQnaForm  input[name="secretYn"]').val('');
 		if ($("#goodsQnaForm input:checkbox[name=except_secret]").is(':checked')){
 			$('#goodsQnaForm  input[name="secretYn"]').val('N');

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

@@ -582,7 +582,9 @@
 				$('#ulGoodsReview').append(tag);
 			});
 		} else {
-			$('#goodsReviewForm').find('.nodata').show();
+			if ([[${reviewCount}]] > 0){
+				$('#goodsReviewForm').find('.nodata').show();	
+			}
 			$('#goodsReviewForm').find('.ui_row').hide();
 		}
 

+ 13 - 19
src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html

@@ -3,12 +3,12 @@
 <!--
  *******************************************************************************
  * @source  : GoodsIncludeFormWeb.html
- * @desc    : 상품상세 Include Page - 공용
+ * @desc	: 상품상세 Include Page - 공용
  *============================================================================
  * STYLE24
  * Copyright(C) 2020 TSIT, All rights reserved.
  *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
+ * VER  DATE		 AUTHOR	  DESCRIPTION
  * ===  ===========  ==========  =============================================
  * 1.0  2021.03.02   eskim	   최초 작성
  *******************************************************************************
@@ -144,16 +144,15 @@
 											th:onclick="fnSelGoodsDealReview([[${goodsInfo.compsGoodsCd}]])" >
 											<div class="item_prod">
 												<div class="item_state">
-													<a href="#none" class="itemLink">
+													<a href="javascript:void(0);" class="itemLink">
 														<div class="itemPic">
 															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 														</div>
 														<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 														<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
-														<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
-															<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
-															<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
-														</p>
+														 <div class="itemPostCount">
+															 (리뷰 <span><th:block  th:text="${(goodsInfo.reviewRegCnt <= 9999) ? #numbers.formatInteger(goodsInfo.reviewRegCnt, 0,'COMMA')  : '9,999+'}"></th:block></span>)
+														 </div>
 													</a>
 													<input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}"  th:attr="currPrice=${goodsInfo.currPrice}, selfGoodsYn=${goodsInfo.selfGoodsYn}"/>
 												</div>
@@ -195,16 +194,15 @@
 											th:onclick="fnSelGoodsDealQna([[${goodsInfo.compsGoodsCd}]])" >
 											<div class="item_prod">
 												<div class="item_state">
-													<a href="#none" class="itemLink">
+													<a href="javascript:void(0);" class="itemLink">
 														<div class="itemPic">
 															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 														</div>
 														<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 														<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
-														<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
-															<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
-															<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
-														</p>
+														<div class="itemPostCount">
+															(문의 <span><th:block  th:text="${(goodsInfo.goodsQnaCnt <= 9999) ? #numbers.formatInteger(goodsInfo.goodsQnaCnt, 0,'COMMA')  : '9,999+'}"></th:block></span>)
+														</div>
 													</a>
 													<input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" />
 												</div>
@@ -246,16 +244,12 @@
 											th:onclick="fnSelGoodsDealDelivery([[${goodsInfo.compsGoodsCd}]])" >
 											<div class="item_prod">
 												<div class="item_state">
-													<a href="#none" class="itemLink">
+													<a href="javascript:void(0);" class="itemLink">
 														<div class="itemPic">
 															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 														</div>
 														<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 														<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
-														<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
-															<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
-															<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
-														</p>
 													</a>
 													<input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" />
 												</div>
@@ -353,7 +347,7 @@
 					</div>
 					<div class="btn_box">
 						<div class="btn_group_block ui_row">
-						<th:block  th:if="${goodsInfo.stockQty > 0}">
+						<th:block  th:if="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 							<div class="ui_col_6">
 								<button type="button" class="btn btn_dark btn_block" id="btnGoodsWish" onclick="fnAddCart('C');"><span>쇼핑백</span></button>
 							</div>
@@ -361,7 +355,7 @@
 								<button type="button" class="btn btn_primary btn_block" id="btnGoodsCart" onclick="fnAddCart('O');"><span>바로구매</span></button>
 							</div>
 						</th:block>
-						<th:block  th:unless="${goodsInfo.stockQty > 0}">
+						<th:block  th:unless="${goodsInfo.stockQty > 0 and goodsInfo.goodsStat == 'G008_90'}">
 							<div class="ui_col_12">
 								<button type="button" class="btn btn_dark btn_block" disabled=""><span>SOLD OUT</span></button>
 							</div>

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

@@ -106,9 +106,7 @@
 			sureBtnClick: function() {
 				gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action')
 						, $('#goodsQnaDetailForm')
-						, function() {
-							mcxDialog.alert("상품 문의가 등록되었습니다. 빠른 시일 내에 답변드리겠습니다.");
-						}
+						, fnGetList()
 				);
 			}
 		});

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

@@ -214,8 +214,6 @@
 	let cancelList = [[${cancelList}]];
 	let oneData = [[${oneData}]];
 	let paymentInfo = [[${paymentInfo}]];
-	let usedGiftCardInfo = [[${usedGiftCardInfo}]];
-	let usedPointInfo = [[${usedPointInfo}]];
 	let addPayCost = 0;
 
 	$(document).ready(function() {
@@ -348,8 +346,8 @@
 
 		gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
 			// 환불포인트, 환불상품권 금액 계산
-			let refundPoint = fnCalculatePoint(cnclRtnReqQtyArr, ordDtlNoArr, ordCanChgQtyArr);
-			let refundGiftCard = fnCalculateGiftCard(cnclRtnReqQtyArr, ordDtlNoArr, ordCanChgQtyArr);
+			let refundPoint = Number(result.spanPntDcAmt);
+			let refundGiftCard = Number(result.spanGfcdUseAmt);
 
 			let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);
 			let sumDeliveryFee = Number(result.sumDeliveryFee);
@@ -386,48 +384,6 @@
 		});
 	}
 
-	// 환불 포인트 계산
-	var fnCalculatePoint = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
-		let refundPoint = 0;
-
-		$.each(usedPointInfo, function(idx, item) {
-			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
-			let chgQty = chgQtyArr[index];
-			let ordCanChgQty = ordCanChgQtyArr[index];
-
-			if (chgQty > 0) {
-				if (chgQty == ordCanChgQty) {
-					refundPoint += item.pntAmt;
-				} else {
-					refundPoint += item.pntAmt * (chgQty / ordCanChgQty);
-				}
-			}
-		});
-
-		return refundPoint;
-	}
-	
-	// 환불 상품권 계산
-	var fnCalculateGiftCard = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
-		let refundGiftCard = 0;
-
-		$.each(usedGiftCardInfo, function(idx, item) {
-			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
-			let chgQty = chgQtyArr[index];
-			let ordCanChgQty = ordCanChgQtyArr[index];
-
-			if (chgQty > 0) {
-				if (chgQty == ordCanChgQty) {
-					refundGiftCard += item.gfcdAmt;
-				} else {
-					refundGiftCard += item.pntAmt * (chgQty / ordCanChgQty);
-				}
-			}
-		});
-
-		return refundGiftCard;
-	}
-
 	// 환불계좌 등록 콜백 처리
 	var fnRegisterAccountCallback = function(result) {
 		// 환불계좌 정보 설정

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

@@ -39,7 +39,7 @@
 								<li>
 									<div>
 										<p class="txt">주문접수</p>
-										<p class="count"><span id="orderReceiptCount" th:text="${orderCount.orderReceiptCount}">0</span></p>
+										<p class="count"><span id="orderReceiptCount" th:text="${orderCount.depositWaitingCount}">0</span></p>
 									</div>
 								</li>
 								<li>
@@ -76,7 +76,7 @@
 						</div>
 						<div class="invalid">
 							<p class="txt">취소/교환/반품</p>
-							<p class="count"><span id="orderCreCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount}">0</span></p>
+							<p class="count"><span id="orderCreCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount + orderCount.confirmCount}">0</span></p>
 						</div>
 					</div>
 					<!-- //주문 현황 -->

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

@@ -116,7 +116,7 @@
 
 														<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 														<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>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
 														</th:block>
 														
 														<!-- 리뷰 쓰기 버튼 -->
@@ -133,26 +133,26 @@
 													<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>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
 														</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>
+																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
+																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
 															</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>
+																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
 															</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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
 																<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
 															</th:block>
 	
@@ -468,16 +468,17 @@
 			<form id="exchangeForm" name="exchangeForm" th:action="@{'/mypage/exchange/form'}" th:method="post">
 				<input type="hidden" name="ordNo"/>
 				<input type="hidden" name="ordDtlNo"/>
-				<input type="hidden" name="supplyCompCd"/>
+				<input type="hidden" name="delvFeeCd"/>
 			</form>
 			<form id="returnForm" name="returnForm" th:action="@{'/mypage/return/form'}" th:method="post">
 				<input type="hidden" name="ordNo"/>
 				<input type="hidden" name="ordDtlNo"/>
-				<input type="hidden" name="supplyCompCd"/>
+				<input type="hidden" name="delvFeeCd"/>
 			</form>
 			<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cancel/form'}" th:method="post">
 				<input type="hidden" name="ordNo"/>
 				<input type="hidden" name="ordDtlNo"/>
+				<input type="hidden" name="delvFeeCd"/>
 			</form>
 			<!-- // CONT-BODY -->
 		</div>

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

@@ -74,7 +74,7 @@
 								<li>
 									<div>
 										<p class="txt">주문접수</p>
-										<p class="count"><span id="orderReceiptCount" th:text="${orderCount.orderReceiptCount}">0</span></p>
+										<p class="count"><span id="orderReceiptCount" th:text="${orderCount.depositWaitingCount}">0</span></p>
 									</div>
 								</li>
 								<li>
@@ -111,7 +111,7 @@
 						</div>
 						<div class="invalid">
 							<p class="txt">취소/교환/반품</p>
-							<p class="count"><span id="orderCreCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount}">0</span></p>
+							<p class="count"><span id="orderCreCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount + orderCount.confirmCount}">0</span></p>
 						</div>
 					</div>
 				</div>
@@ -189,16 +189,17 @@
 				<form id="exchangeForm" name="exchangeForm" action="#" th:action="@{'/mypage/exchange/form'}" th:method="post">
 					<input type="hidden" name="ordNo"/>
 					<input type="hidden" name="ordDtlNo"/>
-					<input type="hidden" name="supplyCompCd"/>
+					<input type="hidden" name="delvFeeCd"/>
 				</form>
 				<form id="returnForm" name="returnForm" action="#" th:action="@{'/mypage/return/form'}" th:method="post">
 					<input type="hidden" name="ordNo"/>
 					<input type="hidden" name="ordDtlNo"/>
-					<input type="hidden" name="supplyCompCd"/>
+					<input type="hidden" name="delvFeeCd"/>
 				</form>
 				<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cancel/form'}" th:method="post">
 					<input type="hidden" name="ordNo"/>
 					<input type="hidden" name="ordDtlNo"/>
+					<input type="hidden" name="delvFeeCd"/>
 				</form>
 			</div>
 			<!-- // CONT-BODY -->
@@ -447,7 +448,7 @@
 
 						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
 						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40') {
-							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
+							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
 						}
 
 						// 리뷰 쓰기 버튼
@@ -462,24 +463,24 @@
 					} else {
 						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
 						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40') {
-							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
+							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
 						}
 
 						// 교환신청 버튼(배송중, 출고완료, 배송완료)
 						if (ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60') {
 							// 교환/반품 가능한 상품
 							if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'Y') {
-								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" supplyCompCd="' + ordDtl.supplyCompCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
-								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" supplyCompCd="' + ordDtl.supplyCompCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
+								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" delvFeeCd="' + ordDtl.delvFeeCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
+								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" delvFeeCd="' + ordDtl.delvFeeCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
 							}
 							// 교환 신청 불가 상품
 							else if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'Y') {
 								tag += '											<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);"><span>1:1 문의</span></button></p>\n';
-								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" supplyCompCd="' + ordDtl.supplyCompCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
+								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" delvFeeCd="' + ordDtl.delvFeeCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
 							}
 							// 반품 신청 불가 상품
 							else if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'N') {
-								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" supplyCompCd="' + ordDtl.supplyCompCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
+								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" delvFeeCd="' + ordDtl.delvFeeCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
 								tag += '											<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>\n';
 							}
 							// 교환/반품 신청 불가 상품

+ 0 - 281
src/main/webapp/WEB-INF/views/web/mypage/MypagePointForm2Web.html

@@ -1,281 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org"
-	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="web/common/layout/MypageLayoutWeb">
-<!--
- *******************************************************************************
- * @source  : MypagePointForm.html
- * @desc    : 마이페이지 > STYLE24포인트 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2021 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.02.26   csh9191     최초 작성
- *******************************************************************************
- -->
-<body>
-
-<th:block layout:fragment="content">
-<div class="content myPoint"> <!-- 페이지특정 클래스 = myPoint -->
-		<div class="cont_body">
-			<!-- CONT-BODY -->
-			<div class="lnb">
-				<div class="lnb_tit">
-				<h2>마이페이지</h2>
-				</div>
-				<div class="lnb_list">
-					<ul id="mypageLnbList"></ul>
-				</div>
-			</div>
-			<div class="cont">
-				<div class="sec_head">
-					<h3 class="subH1">STYLE 포인트</h3>
-				</div>
-				<div class="sec_body">
-					<div class="highlight_area">
-						<div class="have_amount">
-							<div class="total_amount">
-								나의 보유 포인트&nbsp;<span><em th:text="${#numbers.formatDecimal(rmPntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</span>
-							</div>
-							<dl>
-								<div>
-									<dt>적립 예정 포인트</dt>
-									<dd><em th:text="${#numbers.formatDecimal(expectedPntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</dd>
-								</div>
-								<div>
-									<dt><span class="tag primary_line">D-<em >30</em></span>한 달 이내 소멸 예정</dt>
-									<dd><em th:text="${#numbers.formatDecimal(expectedExpirePntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</dd>
-								</div>
-							</dl>
-						</div>
-					</div>
-					<div class="content_area">
-						<div class="taps">
-							<div>
-								<ul>
-									<li id="allPointList"><a href="javascript:void(0);">전체내역</a></li>
-									<li id="accumulatePointList"><a href="javascript:void(0);">적립내역</a></li>
-									<li id="usePointList"><a href="javascript:void(0);">사용내역</a></li>
-								</ul>
-							</div>
-						</div>
-						<div class="select_box">
-							<div class="form_field">
-								<div class="select_custom month">
-									<div class="combo">
-										<input type="hidden" name="pointDate" value="0" id="pointDate"/>
-										<div class="select"></div>
-										<ul id="searchDt" class="list">
-											
-										</ul>
-									</div>
-								</div>
-							</div>
-						</div>
-						<!-- 데이터 있을 시 -->
-						<div class="list_box">
-							<div class="tbl type5">
-								<table>
-									<colgroup>
-										<col width="10%">
-										<col width="12%">
-										<col width="42%">
-										<col width="18%">
-										<col width="18%">
-									</colgroup>
-									<thead>
-										<tr>
-											<th scope="col"><span class="sr-only">증감여부</span></th>
-											<th scope="col">사유</th>
-											<th scope="col">내용</th>
-											<th scope="col">포인트</th>
-											<th scope="col">일자</th>
-										</tr>
-									</thead>
-									<tbody id="pointAjaxList">
-															
-									</tbody>
-								</table>
-							</div>
-						</div>
-						<!-- //데이터 있을 시 -->
-						<!-- 데이터 없을 시 -->
-						 <div class="nodata">
-							<div class="txt_box">
-								<p>
-									STYLE 포인트 적립/사용내역이 없습니다.<br>
-	
-								</p>
-							</div>
-						</div> 
-						<!-- //데이터 없을 시 -->	
-					</div>
-				</div>
-			</div>
-		</div>
-	</div>
-<script th:inline="javascript">
-	let accumulatePointList = [[${accumulatePointList}]];
-	let usePointList = [[${usePointList}]];
-	let allPointList = [[${allPointList}]];
-	let date = [[${date}]];
-	var year = date[0].year;
-	var month = date[0].month;
-	// TODO - 퍼블확정시
-	
-	// 이번년도
-	//동적으로 날짜 년도 append
-	function appendYear() {
-		for (var i = 0; i < date.length; i++) {
-			$("#searchDt").append(	"<li onclick='fnChangeDate(this.value)' value='"+ date[i].year + "" + date[i].month + "'>" + date[i].year	+ "년" + date[i].month + "월 </li>")
-		}
-		$(".select").append("<li class='selected' value='"+date[0].year+""+date[0].month+"'>"+ date[0].year + "년" + date[0].month + "월 </li>"); // 현재년도 선택 */ 
-	}
-	appendYear($("#searchDt"));
-
-	// 날짜변경 이벤트
-	var fnChangeDate = function(param) {
-		let url = '/mypage/allpoint/list';
-		
-		
- 		//$(param).parent().parent().find('input[name=pointDate]').val($(param).val());
- 		//var pointData = $(param).parent().parent().find('input[name=pointDate]').val();
- 		
- 		// 포인트화면 로딩시 이번달 설정 리스트 표시하기 위함
- 		var data = {};
- 		if(typeof param == 'undefined'){
- 			data.searchDt = year.toString() + "" + month.toString();
- 		}else{
- 			data.searchDt = param;
- 		}
-		var jsonData = JSON.stringify(data);
-		
-		gagajf.ajaxJsonSubmit('/mypage/allpoint/list', jsonData, function(result){
-
-						accumulatePointList = result.accumulatePointList;
-						usePointList = result.usePointList;
-						allPointList = result.allPointList;
-						// 클릭상태 확인
-						if($("#accumulatePointList").hasClass("active")){
-							$("#accumulatePointList").click();
-							// 첫화면 전체내역 조회
-							fnGetPointTableInfo(result.accumulatePointList);
-						}else if($("#usePointList").hasClass("active")){
-							$("#usePointList").click();
-							fnGetPointTableInfo(usePointList);
-						}else if($("#allPointList").hasClass("active")) {
-							$("#allPointList").click();
-							fnGetPointTableInfo(allPointList);
-						}
-						
-		});
-	}
-	
-	// HTML 그리기
-	var fnGetPointTableInfo = function(param) {
-		$('.nodata').hide();
-		let tag = "";
-		if(param != null && param.length > 0){
-			$.each(param, function(idx,item){
-				tag += '<tr>';
-				tag += '	<td>';
-				if(item.pntAmt > 0){
-					tag += '		<span class="tag primary">적립</span>';
-				}else{
-					tag += '		<span class="tag deepgray">차감</span>';
-				}
-				
-				tag += '	</td>';
-				tag += '	<td>'+item.occurGb+'</td>';
-				tag += '	<td>';
-				tag += '		<div class="txt_content">'+ item.occurDtlDesc + '</div>';
-				tag += '	</td>';
-				tag += '	<td>';
-				if(item.pntAmt > 0){
-					tag += '		<span class="amount_plus">';
-					tag += '			<em>'+item.pntAmt.addComma()+'</em>P';
-					tag += '		</span>';
-				}else{
-					tag += '		<span class="c_primary">';
-					tag += '			<em>'+item.pntAmt+'</em>P';
-					tag += '		</span>';
-				}
-				
-				tag += '	</td>';
-				tag += '	<td>'+item.pntUploadDt;
-				tag += '	</td>';
-				tag += '</tr>		';
-			});
-		}else{
-			$('.nodata').show();
-			
-		}
-		
-		$("#pointAjaxList").html(tag);
-	}
-	
-	// 전체내역 조회
-	$("#allPointList").click(function(){
-
- 		$("#accumulatePointList").removeClass("active");
- 		$("#usePointList").removeClass("active");
- 		
- 		$("#allPointList").addClass("active");
- 		//$("#plusMinus").text("증감/차감");
- 		
- 		fnGetPointTableInfo(allPointList);
-	});
-	
-	// 적립내역 조회
-	$("#accumulatePointList").click(function(){
-
- 		$("#allPointList").removeClass("active");
- 		$("#usePointList").removeClass("active");
- 		
- 		$("#accumulatePointList").addClass("active");
- 		//$("#plusMinus").text("증감");
-		
- 		fnGetPointTableInfo(accumulatePointList);
-	});
-	
-	// 사용내역 조회
-	$("#usePointList").click(function(){
-		
-		$("#accumulatePointList").removeClass("active");
-		$("#allPointList").removeClass("active");
-		
-		$("#usePointList").addClass("active");
-		//$("#plusMinus").text("차감");
-		
-		fnGetPointTableInfo(usePointList);
-	});
-	
-	$(document).ready(function() {
-		// 전체내역 표시
- 		$("#allPointList").trigger("click");
-		// 마이페이지 LNB 설정
-		fnSetMypageLnbList(5);
-		
-		// 마이페이지 location 설정
-		fnSetMypageLocation('STYLE24 포인트', '_PAGE_MYPAGE_POINT');
-		
-		
-
-		// 셀렉트박스 활성화
-		$('.select_custom').each(function(index) {
-			var selecter01 = new sCombo($(this));
-		});
-
-		// 셀렉트박스 데이터 설정
-		fnChangeDate();
-
-	});
-
-</script>
-</th:block>
-
-</body>
-</html>

+ 169 - 127
src/main/webapp/WEB-INF/views/web/mypage/MypagePointFormWeb.html

@@ -19,171 +19,212 @@
 <body>
 
 <th:block layout:fragment="content">
-	<div class="my_cont">
-		<div class="sec_head">
-			<h3>STYLE24 포인트</h3>
-		</div>
-		<div class="sec_body">
-			<div class="save_area mypage_coupon">
-				<p>사용 가능한 보유 포인트<strong th:text="${#numbers.formatDecimal(rmPntAmt, 0, 'COMMA', 0, 'POINT')}"></strong>P</p>
-				<ul>
-					<li>적립 예정 포인트 <span>
-						<th:block th:text="${#numbers.formatDecimal(expectedPntAmt, 0, 'COMMA', 0, 'POINT')}"></th:block>P
-					</span></li>
-					<li>한달 이내 소멸 예정 <span>
-						<th:block th:text="${#numbers.formatDecimal(expectedExpirePntAmt, 0, 'COMMA', 0, 'POINT')}"></th:block>P
-					</span></li>
-				</ul>
+<div class="content myPoint"> <!-- 페이지특정 클래스 = myPoint -->
+		<div class="cont_body">
+			<!-- CONT-BODY -->
+			<div class="lnb">
+				<div class="lnb_tit">
+				<h2>마이페이지</h2>
+				</div>
+				<div class="lnb_list">
+					<ul id="mypageLnbList"></ul>
+				</div>
 			</div>
-			<div class="my_tab coupon_tab">
-				<ul>
-					<li><a href="javascript:void(0);" id="allPointList">전체내역</a></li>
-					<li><a href="javascript:void(0);" id="accumulatePointList">적립내역</a></li>
-					<li><a href="javascript:void(0);" id="usePointList">사용내역</a></li>
-				</ul>
-	<!-- 								<div class="form_field"> -->
-	<!-- 									<select id="searchDt" name="searchDt" onchange="fnSearchDate(this);"> -->
-	<!-- 									</select>  -->
-	<!-- 								</div> -->
-				<div class="form_field">
-					<div class="select_custom type1">
-						<div class="combo">
-							<input type="hidden" name="pointDate" value="0"/>
-							<div class="select"></div> <!-- 셀렉박스 -->
-								<ul id="searchDt" class="list" style="width:200px; margin:0 auto">
+			<div class="cont">
+				<div class="sec_head">
+					<h3 class="subH1">STYLE 포인트</h3>
+				</div>
+				<div class="sec_body">
+					<div class="highlight_area">
+						<div class="have_amount">
+							<div class="total_amount">
+								나의 보유 포인트&nbsp;<span><em th:text="${#numbers.formatDecimal(rmPntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</span>
+							</div>
+							<dl>
+								<div>
+									<dt>적립 예정 포인트</dt>
+									<dd><em th:text="${#numbers.formatDecimal(expectedPntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</dd>
+								</div>
+								<div>
+									<dt><span class="tag primary_line">D-<em >30</em></span>한 달 이내 소멸 예정</dt>
+									<dd><em th:text="${#numbers.formatDecimal(expectedExpirePntAmt, 0, 'COMMA', 0, 'POINT')}"></em>P</dd>
+								</div>
+							</dl>
+						</div>
+					</div>
+					<div class="content_area">
+						<div class="taps">
+							<div>
+								<ul>
+									<li id="allPointList"><a href="javascript:void(0);">전체내역</a></li>
+									<li id="accumulatePointList"><a href="javascript:void(0);">적립내역</a></li>
+									<li id="usePointList"><a href="javascript:void(0);">사용내역</a></li>
 								</ul>
+							</div>
+						</div>
+						<div class="select_box">
+							<div class="form_field">
+								<div class="select_custom month">
+									<div class="combo">
+										<input type="hidden" name="pointDate" value="0" id="pointDate"/>
+										<div class="select"></div>
+										<ul id="searchDt" class="list">
+											
+										</ul>
+									</div>
+								</div>
+							</div>
+						</div>
+						<!-- 데이터 있을 시 -->
+						<div class="list_box">
+							<div class="tbl type5">
+								<table>
+									<colgroup>
+										<col width="10%">
+										<col width="12%">
+										<col width="42%">
+										<col width="18%">
+										<col width="18%">
+									</colgroup>
+									<thead>
+										<tr>
+											<th scope="col"><span class="sr-only">증감여부</span></th>
+											<th scope="col">사유</th>
+											<th scope="col">내용</th>
+											<th scope="col">포인트</th>
+											<th scope="col">일자</th>
+										</tr>
+									</thead>
+									<tbody id="pointAjaxList">
+															
+									</tbody>
+								</table>
+							</div>
 						</div>
+						<!-- //데이터 있을 시 -->
+						<!-- 데이터 없을 시 -->
+						 <div class="nodata">
+							<div class="txt_box">
+								<p>
+									STYLE 포인트 적립/사용내역이 없습니다.<br>
+	
+								</p>
+							</div>
+						</div> 
+						<!-- //데이터 없을 시 -->	
 					</div>
 				</div>
 			</div>
-			<div class="order_list">
-				<section class="order_row">
-					<div class="tbl point_tbl track_tbl type2">
-						<table>
-							<colgroup>
-								<col width="150px">
-								<col width="660px">
-								<col width="*">
-								<col width="200px">
-							</colgroup>
-							<thead>
-								<tr>
-									<th>사유</th>
-									<th>내용</th>
-									<th id="plusMinus"></th>
-									<th>일자</th>
-								</tr>
-							</thead>
-							<tbody id="pointAjaxList">
-							</tbody>
-						</table>
-					</div>
-				</section>
-			</div>
 		</div>
 	</div>
 <script th:inline="javascript">
 	let accumulatePointList = [[${accumulatePointList}]];
 	let usePointList = [[${usePointList}]];
 	let allPointList = [[${allPointList}]];
-
-	// select 날짜 생성
-	var date = new Date();
-	var year = date.getFullYear();
-	var month = date.getMonth() +1;
-
+	let date = [[${date}]];
+	var year = date[0].year;
+	var month = date[0].month;
 	// TODO - 퍼블확정시
-	var oneYearAgo = year -1;
-	var twoYearAgo = year -2;
 	
 	// 이번년도
-	for(var i = 1;i <= 12; i++){
-		if(i < 10 && i != month){
-			$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ year + "" + 0 + i +"'>"+ year + "년" + " " + i + "월" +"</li>");
-		}
-		else if(i < 10 && i == month){
-			//셀렉트박스 이번 달 표시설정
-			$('.select').append("<li style='pointer-events: none' onclick='fnChangeDate(this);' class='selected' value='"+ year + "" + 0 + i +"'>" + year + "년" + " " + i + "월" +"</li>");
-			$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ year + "" + 0 + i +"'>" + year + "년" + " " + i + "월" +"</li>");
-		}
-		else if(i > 9 && i != month){
-			$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ year + "" + i +"'>"+ year + "년" + " " + i + "월" +"</li>");
-		}
-		else if(i > 9 && i == month){
-			$('.select').append("<li onclick='fnChangeDate(this);' class='selected' value='"+ year + ""  + i +"'>" + year + "년" + " " + i + "월" +"</li>");
-			$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ year + "" + i +"'>"+ year + "년" + " " + i + "월" +"</li>");
+	//동적으로 날짜 년도 append
+	function appendYear() {
+		for (var i = 0; i < date.length; i++) {
+			$("#searchDt").append(	"<li onclick='fnChangeDate(this.value)' value='"+ date[i].year + "" + date[i].month + "'>" + date[i].year	+ "년" + date[i].month + "월 </li>")
 		}
+		$(".select").append("<li class='selected' value='"+date[0].year+""+date[0].month+"'>"+ date[0].year + "년" + date[0].month + "월 </li>"); // 현재년도 선택 */ 
 	}
+	appendYear($("#searchDt"));
 
 	// 날짜변경 이벤트
 	var fnChangeDate = function(param) {
 		let url = '/mypage/allpoint/list';
 		
- 		$(param).parent().parent().find('input[name=pointDate]').val($(param).val());
- 		var pointData = $(param).parent().parent().find('input[name=pointDate]').val();
- 		
- 		if(10 > month){
- 			month = "0" + month;
- 		}
+		
+ 		//$(param).parent().parent().find('input[name=pointDate]').val($(param).val());
+ 		//var pointData = $(param).parent().parent().find('input[name=pointDate]').val();
  		
  		// 포인트화면 로딩시 이번달 설정 리스트 표시하기 위함
- 		if(pointData == null){
- 			pointData = year + "" + month;
+ 		var data = {};
+ 		if(typeof param == 'undefined'){
+ 			data.searchDt = year.toString() + "" + month.toString();
+ 		}else{
+ 			data.searchDt = param;
  		}
- 		
-		let data = {};
-		
-		data.searchDt = pointData;
-		
- 		console.log(data);
-		
 		var jsonData = JSON.stringify(data);
 		
 		gagajf.ajaxJsonSubmit('/mypage/allpoint/list', jsonData, function(result){
+
 						accumulatePointList = result.accumulatePointList;
 						usePointList = result.usePointList;
 						allPointList = result.allPointList;
-						
 						// 클릭상태 확인
-						if($("#accumulatePointList").hasClass("on")){
+						if($("#accumulatePointList").hasClass("active")){
 							$("#accumulatePointList").click();
-						}else if($("#usePointList").hasClass("on")){
+							// 첫화면 전체내역 조회
+							fnGetPointTableInfo(result.accumulatePointList);
+						}else if($("#usePointList").hasClass("active")){
 							$("#usePointList").click();
-						}else if($("#allPointList").hasClass("on")) {
+							fnGetPointTableInfo(usePointList);
+						}else if($("#allPointList").hasClass("active")) {
 							$("#allPointList").click();
+							fnGetPointTableInfo(allPointList);
 						}
-						// 첫화면 전체내역 조회
-						fnGetPointTableInfo();
+						
 		});
 	}
 	
 	// HTML 그리기
 	var fnGetPointTableInfo = function(param) {
+		$('.nodata').hide();
 		let tag = "";
-		$.each(param, function(idx,item){
-			tag +='<tr>';
-			tag +='<td>'+ item.occurGb + '</td>';
-			tag += '<td class="t_l pl40">'+ item.occurDtlDesc + '</td>';
-			// 증감 : 파랑, 차감 : 빨강으로 표시
-			if(item.pntAmt > 0){
-				tag += '<td class="c_blue">'+ item.pntAmt + '</td>';
-			}else{
-				tag += '<td class="c_primary">'+ item.pntAmt + '</td>';
-			}
-			tag += '<td>'+ item.pntUploadDt + '</td>';
-			tag += '</tr>';
-		});
+		if(param != null && param.length > 0){
+			$.each(param, function(idx,item){
+				tag += '<tr>';
+				tag += '	<td>';
+				if(item.pntAmt > 0){
+					tag += '		<span class="tag primary">적립</span>';
+				}else{
+					tag += '		<span class="tag deepgray">차감</span>';
+				}
+				
+				tag += '	</td>';
+				tag += '	<td>'+item.occurGb+'</td>';
+				tag += '	<td>';
+				tag += '		<div class="txt_content">'+ item.occurDtlDesc + '</div>';
+				tag += '	</td>';
+				tag += '	<td>';
+				if(item.pntAmt > 0){
+					tag += '		<span class="amount_plus">';
+					tag += '			<em>'+item.pntAmt.addComma()+'</em>P';
+					tag += '		</span>';
+				}else{
+					tag += '		<span class="c_primary">';
+					tag += '			<em>'+item.pntAmt+'</em>P';
+					tag += '		</span>';
+				}
+				
+				tag += '	</td>';
+				tag += '	<td>'+item.pntUploadDt;
+				tag += '	</td>';
+				tag += '</tr>		';
+			});
+		}else{
+			$('.nodata').show();
+			
+		}
+		
 		$("#pointAjaxList").html(tag);
 	}
 	
 	// 전체내역 조회
 	$("#allPointList").click(function(){
 
- 		$("#accumulatePointList").removeClass("on");
- 		$("#usePointList").removeClass("on");
+ 		$("#accumulatePointList").removeClass("active");
+ 		$("#usePointList").removeClass("active");
  		
- 		$("#allPointList").addClass("on");
- 		$("#plusMinus").text("증감/차감");
+ 		$("#allPointList").addClass("active");
+ 		//$("#plusMinus").text("증감/차감");
  		
  		fnGetPointTableInfo(allPointList);
 	});
@@ -191,11 +232,11 @@
 	// 적립내역 조회
 	$("#accumulatePointList").click(function(){
 
- 		$("#allPointList").removeClass("on");
- 		$("#usePointList").removeClass("on");
+ 		$("#allPointList").removeClass("active");
+ 		$("#usePointList").removeClass("active");
  		
- 		$("#accumulatePointList").addClass("on");
- 		$("#plusMinus").text("증감");
+ 		$("#accumulatePointList").addClass("active");
+ 		//$("#plusMinus").text("증감");
 		
  		fnGetPointTableInfo(accumulatePointList);
 	});
@@ -203,27 +244,28 @@
 	// 사용내역 조회
 	$("#usePointList").click(function(){
 		
-		$("#accumulatePointList").removeClass("on");
-		$("#allPointList").removeClass("on");
+		$("#accumulatePointList").removeClass("active");
+		$("#allPointList").removeClass("active");
 		
-		$("#usePointList").addClass("on");
-		$("#plusMinus").text("차감");
+		$("#usePointList").addClass("active");
+		//$("#plusMinus").text("차감");
 		
 		fnGetPointTableInfo(usePointList);
 	});
 	
 	$(document).ready(function() {
+		// 전체내역 표시
+ 		$("#allPointList").trigger("click");
 		// 마이페이지 LNB 설정
 		fnSetMypageLnbList(5);
 		
 		// 마이페이지 location 설정
 		fnSetMypageLocation('STYLE24 포인트', '_PAGE_MYPAGE_POINT');
 		
-		// 전체내역 표시
- 		$("#allPointList").trigger('click');
+		
 
 		// 셀렉트박스 활성화
-		$('.select_custom.type1').each(function(index) {
+		$('.select_custom').each(function(index) {
 			var selecter01 = new sCombo($(this));
 		});
 

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

@@ -344,8 +344,6 @@
 	let returnList = [[${returnList.returnList}]];
 	let oneData = [[${oneData}]];
 	let paymentInfo = [[${paymentInfo}]];
-	let usedGiftCardInfo = [[${usedGiftCardInfo}]];
-	let usedPointInfo = [[${usedPointInfo}]];
 	let isCustomer = true;
 	let jsonObj = {};
 	//let addPayCost = 0;
@@ -495,13 +493,13 @@
 			data.ordNo = oneData.ordNo;
 			data.ordDtlNoArr = ordDtlNoArr;
 			data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
-
+console.log(data);
 			let jsonData = JSON.stringify(data);
 
 			gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
 				// 환불포인트, 환불상품권 금액 계산
-				let refundPoint = fnCalculatePoint(cnclRtnReqQtyArr, ordDtlNoArr, ordCanChgQtyArr);
-				let refundGiftCard = fnCalculateGiftCard(cnclRtnReqQtyArr, ordDtlNoArr, ordCanChgQtyArr);
+				let refundPoint = Number(result.spanPntDcAmt);
+				let refundGiftCard = Number(result.spanGfcdUseAmt);
 
 				let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);
 				let sumDeliveryFee = Number(result.sumDeliveryFee);
@@ -560,7 +558,7 @@
 
 	// 반품 방식 변경 이벤트
 	$('#returnForm input[name=wdGb]').on('change', function() {
-		let wdGb = $('i#returnForm nput[name=wdGb]:radio:checked').val();
+		let wdGb = $('i#returnForm input[name=wdGb]:radio:checked').val();
 
 		if (wdGb == 'W') {
 			$('#chgerLocation').css('display', '');
@@ -576,7 +574,7 @@
 	
 	// 반품 사유 변경 이벤트
 	var fnChangeReturnReason = function(param) {
-		var customerReasonArr = ['G688_10', 'G688_11', 'G688_12', 'G688_13', 'G688_15' , 'G688_21', 'G688_30'];
+		var customerReasonArr = ['G688_10'];
 		let chgReason = $(param).attr('chgReason');
 
 		// 귀책사유체크(취소,반품,교환)
@@ -589,48 +587,6 @@
 		fnChangeReturnQty();
 	}
 
-	// 환불 포인트 계산
-	var fnCalculatePoint = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
-		let refundPoint = 0;
-
-		$.each(usedPointInfo, function(idx, item) {
-			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
-			let chgQty = chgQtyArr[index];
-			let ordCanChgQty = ordCanChgQtyArr[index];
-			
-			if (chgQty > 0) {
-				if (chgQty == ordCanChgQty) {
-					refundPoint += item.pntAmt;
-				} else {
-					refundPoint += item.pntAmt * (chgQty / ordCanChgQty);
-				}
-			}
-		});
-
-		return refundPoint;
-	}
-
-	// 환불 상품권 계산
-	var fnCalculateGiftCard = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
-		let refundGiftCard = 0;
-
-		$.each(usedGiftCardInfo, function(idx, item) {
-			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
-			let chgQty = chgQtyArr[index];
-			let ordCanChgQty = ordCanChgQtyArr[index];
-
-			if (chgQty > 0) {
-				if (chgQty == ordCanChgQty) {
-					refundGiftCard += item.gfcdAmt;
-				} else {
-					refundGiftCard += item.pntAmt * (chgQty / ordCanChgQty);
-				}
-			}
-		});
-
-		return refundGiftCard;
-	}
-
 	// 회수지 정보 설정
 	var delvAddrSet = function(delvObj) {
 		let chgerNm = delvObj.recipNm;

+ 134 - 129
src/main/webapp/WEB-INF/views/web/order/OrderCouponApplyPopWeb.html

@@ -1,144 +1,149 @@
 <!DOCTYPE html>
 <html lang="ko" xmlns:th="http://www.thymeleaf.org">
 
-<div class="modal-dialog" role="document">
-	<div class="modal-content">
-		<div class="modal-header">
-			<h5 class="modal-title" id="couponModifyLabel">할인쿠폰 변겅</h5>
-		</div>
-		<div class="modal-body">
-			<div class="pop_cont">
-			
-				<!-- 상품쿠폰적용 -->
-				<th:block th:if="${goodsApplyCpnList.size() > 0}">
-					<h6>상품쿠폰</h6>
-					<div class="area_item_coupon">
-						<th:block th:each="goods, i : ${goodsApplyCpnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
-							<th:block th:if="${goods.goodsCpnList.size() > 0}">
-								<div class="apply_item goodsCpn">
-									<div class="item_gd">
-										<figure>
-											<span class="thumb">
-												<img th:src="${imageUrl + '/' + goods.sysImgNm}" src="/" width="100%" alt="">
-											</span>
-											
-											<figcaption>
-												<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
-												<div class="name" th:text="${goods.goodsNm}"></div>
-												<div class="option" th:each="colorNm, index : ${goods.colorNmArr}" th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></div>
-											</figcaption>
-										</figure>
-									</div>
-									<div class="form_field">
-										<div class="select_custom coupon_list">
-											<div class="combo">
-												<div class="select">
-													<div class="item_coupon"></div>
-												</div>
-												<ul class="list">
-													<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true"추가  -->
-													<th:block th:each="goodsCpn, k : ${goods.goodsCpnList}">
-														<li th:value="${goodsCpn.custCpnSq}" th:data="${goodsCpn.cpnDcAmt}">
-															<div class="item_coupon">
-																<p class="name" th:text="${goodsCpn.cpnNm}"></p>
-																<p class="txt">
-																	<th:block th:if="${goodsCpn.buyLimitAmt} > 0">
-																		<span th:text="${#numbers.formatInteger(goodsCpn.buyLimitAmt, 1, 'COMMA')}"></span>원 이상 구매시
-																	</th:block>
-																	<th:block th:if="${goodsCpn.maxDcAmt} > 0"> 
-																		최대 <span th:text="${#numbers.formatInteger(goodsCpn.maxDcAmt, 1, 'COMMA')}"></span>원 할인
-																	</th:block>
-																</p>
-																<p class="discount">
-																	<th:block th:if="${goodsCpn.dcWay} == 'G240_10'">
-																		<span th:text="${#numbers.formatInteger(goodsCpn.dcVal, 1, 'COMMA')}"></span>원 할인
-																	</th:block>
-																	<th:block th:if="${goodsCpn.dcWay} == 'G240_11'">
-																		<span th:text="${#numbers.formatInteger(goodsCpn.dcVal, 1, 'COMMA')}"></span>% 할인
-																	</th:block>
-																</p>
-															</div>
+<form class="form_wrap form_full" name="couponApplyForm" id="couponApplyForm">
+	<div class="modal-dialog" role="document">
+		<div class="modal-content">
+			<div class="modal-header">
+				<h5 class="modal-title" id="couponModifyLabel">할인쿠폰 변겅</h5>
+			</div>
+			<div class="modal-body">
+				<div class="pop_cont">
+				
+					<!-- 상품쿠폰적용 -->
+					<th:block th:if="${goodsApplyCpnList.size() > 0}">
+						<h6>상품쿠폰</h6>
+						<div class="area_item_coupon">
+							<th:block th:each="goods, i : ${goodsApplyCpnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<th:block th:if="${goods.goodsCpnList.size() > 0}">
+									<div class="apply_item goodsCpn">
+										<div class="item_gd">
+											<figure>
+												<span class="thumb">
+													<img th:src="${imageUrl + '/' + goods.sysImgNm}" src="/" width="100%" alt="">
+												</span>
+												
+												<figcaption>
+													<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
+													<div class="name" th:text="${goods.goodsNm}"></div>
+													<div class="option" th:each="colorNm, index : ${goods.colorNmArr}" th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></div>
+												</figcaption>
+											</figure>
+										</div>
+										<div class="form_field">
+											<div class="select_custom coupon_list">
+												<div class="combo">
+													<div class="select">
+														<div class="item_coupon"></div>
+													</div>
+													<ul class="list">
+														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true"추가  -->
+														<th:block th:each="goodsCpn, k : ${goods.goodsCpnList}">
+															<li th:value="${goodsCpn.custCpnSq}" th:data="${goodsCpn.cpnDcAmt}">
+																<div class="item_coupon">
+																	<p class="name" th:text="${goodsCpn.cpnNm}"></p>
+																	<p class="txt">
+																		<th:block th:if="${goodsCpn.buyLimitAmt} > 0">
+																			<span th:text="${#numbers.formatInteger(goodsCpn.buyLimitAmt, 1, 'COMMA')}"></span>원 이상 구매시
+																		</th:block>
+																		<th:block th:if="${goodsCpn.maxDcAmt} > 0"> 
+																			최대 <span th:text="${#numbers.formatInteger(goodsCpn.maxDcAmt, 1, 'COMMA')}"></span>원 할인
+																		</th:block>
+																	</p>
+																	<p class="discount">
+																		<th:block th:if="${goodsCpn.dcWay} == 'G240_10'">
+																			<span th:text="${#numbers.formatInteger(goodsCpn.dcVal, 1, 'COMMA')}"></span>원 할인
+																		</th:block>
+																		<th:block th:if="${goodsCpn.dcWay} == 'G240_11'">
+																			<span th:text="${#numbers.formatInteger(goodsCpn.dcVal, 1, 'COMMA')}"></span>% 할인
+																		</th:block>
+																	</p>
+																</div>
+															</li>
+														</th:block>
+														<li value="0" data="0">
+															<div class="item_coupon empty"><p class="empty">적용 안함</p></div>
 														</li>
-													</th:block>
-													<li value="0" data="0">
-														<div class="item_coupon empty"><p class="empty">적용 안함</p></div>
-													</li>
-													<input type="hidden" name="cpnType" value="goodsCpn"/>
-													<input type="hidden" name="cpnCartSq" th:value="${goods.cartSq}"/>
-													<input type="hidden" name="custCpnSq" value="0"/>
-													<input type="hidden" name="cpnDcAmt" value="0"/>
-												</ul>
+														<input type="hidden" name="cpnType" value="goodsCpn"/>
+														<input type="hidden" name="cpnCartSq" th:value="${goods.cartSq}"/>
+														<input type="hidden" name="custCpnSq" value="0"/>
+														<input type="hidden" name="cpnDcAmt" value="0"/>
+													</ul>
+												</div>
 											</div>
 										</div>
 									</div>
-								</div>
-							</th:block>
-						</th:block>
-					</div>
-				</th:block>
-				<!-- //상품쿠폰적용 -->
-				
-				<!-- 장바구니쿠폰적용 -->
-				<th:block th:if="${cartCpnList.size() > 0}">
-					<h6>장바구니 쿠폰</h6>
-					<div class="area_cart_coupon">
-						<div class="form_field">
-							<th:block th:each="cartCpn, k : ${cartCpnList}">
-								<div class="cartCpn" th:value="${cartCpn.custCpnSq}">
-									<input type="hidden" name="dcWay" th:value="${cartCpn.dcWay}"/>
-									<input type="hidden" name="dcVal" th:value="${cartCpn.dcVal}"/>
-									<!-- 장바구니쿠폰 적용 장바구니 시퀀스 -->
-									<th:block th:each="cartCpnCartSq, kokok : ${cartCpn.cartCpnCartSqArr}"> 
-										<input type="hidden" name="cartCpnCartSq" th:value="${cartCpnCartSq}" />
-									</th:block>
-									
-									<!-- 장바구니쿠폰 결제가능수단목록조회 -->
-									<th:block th:each="payType, kokok : ${cartCpn.payTypeArr}"> 
-										<input type="hidden" name="payTypeArr" th:value="${payType}" />
-									</th:block>
-									
-									<input type="radio" name="rdi-cart-coupon" th:id="|rdi-cart-coupon${k.index}|" value="">
-									<label th:for="|rdi-cart-coupon${k.index}|">
-										<div class="cart_coupon">
-											<p class="name" th:text="${cartCpn.cpnNm}"></p>
-											<p class="txt">
-												<th:block th:if="${cartCpn.buyLimitAmt} > 0">
-													<span th:text="${#numbers.formatInteger(cartCpn.buyLimitAmt, 1, 'COMMA')}"></span>원 이상 구매시 
-												</th:block>
-												<th:block th:if="${cartCpn.maxDcAmt} > 0">
-													최대 <span th:text="${#numbers.formatInteger(cartCpn.maxDcAmt, 1, 'COMMA')}"></span>원 할인
-												</th:block>
-											</p>
-											<p class="discount">
-												<th:block th:if="${cartCpn.dcWay} == 'G240_10'">
-													<span th:text="${#numbers.formatInteger(cartCpn.dcVal, 1, 'COMMA')}"></span>원 할인
-												</th:block>
-												<th:block th:if="${cartCpn.dcWay} == 'G240_11'">
-													<span th:text="${#numbers.formatInteger(cartCpn.dcVal, 1, 'COMMA')}"></span>% 할인
-												</th:block>
-											</p>
-										</div>
-									</label>
-						
-								</div>
+								</th:block>
 							</th:block>
-							<input type="hidden" name="cpnType" value="cartCpn"/>
-							<input type="hidden" name="custCpnSq" value="0"/>
-							<input type="hidden" name="cpnDcAmt" value="0"/>
 						</div>
-					</div>
-				</th:block>
-				<!-- //장바구니쿠폰적용 -->
+					</th:block>
+					<!-- //상품쿠폰적용 -->
+					
+					<!-- 장바구니쿠폰적용 -->
+					<th:block th:if="${cartCpnList.size() > 0}">
+						<h6>장바구니 쿠폰</h6>
+						<div class="area_cart_coupon">
+							<div class="form_field">
+								<th:block th:each="cartCpn, k : ${cartCpnList}">
+									<div class="cartCpn" th:value="${cartCpn.custCpnSq}">
+										<input type="hidden" name="dcWay" 			th:value="${cartCpn.dcWay}"/>
+										<input type="hidden" name="dcVal" 			th:value="${cartCpn.dcVal}"/>
+										<input type="hidden" name="buyLimitAmt" 	th:value="${cartCpn.buyLimitAmt}"/>
+										<input type="hidden" name="maxDcAmt" 		th:value="${cartCpn.maxDcAmt}"/>
+										
+										<!-- 장바구니쿠폰 적용 장바구니 시퀀스 -->
+										<th:block th:each="cartCpnCartSq, kokok : ${cartCpn.cartCpnCartSqArr}"> 
+											<input type="hidden" name="cartCpnCartSq" th:value="${cartCpnCartSq}" />
+										</th:block>
+										
+										<!-- 장바구니쿠폰 결제가능수단목록조회 -->
+										<th:block th:each="payType, kokok : ${cartCpn.payTypeArr}"> 
+											<input type="hidden" name="payTypeArr" th:value="${payType}" />
+										</th:block>
+										
+										<input type="radio" name="rdi-cart-coupon" th:id="|rdi-cart-coupon${k.index}|" value="">
+										<label th:for="|rdi-cart-coupon${k.index}|">
+											<div class="cart_coupon">
+												<p class="name" th:text="${cartCpn.cpnNm}"></p>
+												<p class="txt">
+													<th:block th:if="${cartCpn.buyLimitAmt} > 0">
+														<span th:text="${#numbers.formatInteger(cartCpn.buyLimitAmt, 1, 'COMMA')}"></span>원 이상 구매시 
+													</th:block>
+													<th:block th:if="${cartCpn.maxDcAmt} > 0">
+														최대 <span th:text="${#numbers.formatInteger(cartCpn.maxDcAmt, 1, 'COMMA')}"></span>원 할인
+													</th:block>
+												</p>
+												<p class="discount">
+													<th:block th:if="${cartCpn.dcWay} == 'G240_10'">
+														<span th:text="${#numbers.formatInteger(cartCpn.dcVal, 1, 'COMMA')}"></span>원 할인
+													</th:block>
+													<th:block th:if="${cartCpn.dcWay} == 'G240_11'">
+														<span th:text="${#numbers.formatInteger(cartCpn.dcVal, 1, 'COMMA')}"></span>% 할인
+													</th:block>
+												</p>
+											</div>
+										</label>
+							
+									</div>
+								</th:block>
+								<input type="hidden" name="cpnType" value="cartCpn"/>
+								<input type="hidden" name="custCpnSq" value="0"/>
+								<input type="hidden" name="cpnDcAmt" value="0"/>
+							</div>
+						</div>
+					</th:block>
+					<!-- //장바구니쿠폰적용 -->
+				</div>
+			</div>
+			<div class="modal-footer">
+				<button type="button" id="btn_coupon_apply" class="btn btn_primary">
+					<span>총 <em class="goodsCartCpnSumAmt">99,999,999</em>원 쿠폰 적용</span>
+				</button>
 			</div>
-		</div>
-		<div class="modal-footer">
-			<button type="button" id="btn_coupon_apply" class="btn btn_primary">
-				<span>총 <em class="goodsCartCpnSumAmt">99,999,999</em>원 쿠폰 적용</span>
-			</button>
 		</div>
 	</div>
-</div>
-<a href="#close-modal" rel="modal:close" id="couponModifyPop_close" class="close-modal">Close</a>
+	<a href="#close-modal" rel="modal:close" id="couponModifyPop_close" class="close-modal">Close</a>
+</form>
 
 <script th:inline="javascript">
 //컨텐츠 호출

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

@@ -829,7 +829,7 @@ var freegiftInfoSet = function() {
 					var usepoint			= parseInt($(this).attr("usepoint"));
 					rmPntAmt 				= rmPntAmt - freegiftUsePnt - usepoint;
 					
-					if (rmPntAmt > 0) {
+					if (rmPntAmt < 0) {
 						mcxDialog.alert("보유포인트가 부족합니다.");
 						return false;
 					}
@@ -1207,12 +1207,12 @@ var dcAmtInfoSet = function() {
 						$("#btn_coupon_apply").on("click", function(){
 							
 							// 상품쿠폰적용
-							$('.goodsCpn ul li.selected').each(function(index){
+							$('#couponApplyForm .goodsCpn ul li.selected').each(function(index){
 								custCpnApply($(this));
 							});
 							
 							// 장바구니쿠폰적용
-							$('#orderAmtForm .cartCpn').each(function(index){
+							$('#couponApplyForm .cartCpn').each(function(index){
 								if ($(this).find("input[name=rdi-cart-coupon]").is(":checked")) {
 									custCpnApply($(this));
 								}
@@ -1501,7 +1501,7 @@ var custCpnApplyTemp = function(obj) {
 		obj.parent().find("input[name='custCpnSq']").val(obj.attr("value"));
 
 		// 장바구니쿠폰 초기화 적용
-		$(".cartCpn").each(function(index) {
+		$("#couponApplyForm .cartCpn").each(function(index) {
 			if (index == 0) {
 				custCpnApplyTemp($(this)); // 쿠폰적용
 			}
@@ -1514,6 +1514,8 @@ var custCpnApplyTemp = function(obj) {
 	else if (cpnType == "cartCpn") {
 		var dcWay 				= obj.find("input[name='dcWay']").val();
 		var dcVal 				= obj.find("input[name='dcVal']").val();
+		var maxDcAmt 			= obj.find("input[name='maxDcAmt']").val();
+		var buyLimitAmt 		= obj.find("input[name='buyLimitAmt']").val();
 		var cartCpnDcSumAmt		= 0;
 		var tempSumAmt			= 0;
 		var cartSqLen			= $(".cartSq").length;
@@ -1524,7 +1526,7 @@ var custCpnApplyTemp = function(obj) {
 		obj.find("input[name='cartCpnCartSq']").each(function(){
 			var cartCpnCartSq 		= $(this).val();
 			var cartCpnDcAmt		= 0;
-			
+						
 			// 장바구니시퀀스 체크
 			$("#orderAmtForm .cartSq").each(function(){
 				if (cartCpnCartSq == $(this).text()) {
@@ -1535,7 +1537,7 @@ var custCpnApplyTemp = function(obj) {
 					var tmtb2DcAmt 		= parseInt($(this).parent().find(".tmtb2DcAmt").text());
 					var goodsCpnDcAmt 	= 0;
 					
-					$(".goodsCpn input[name=cpnCartSq]").each(function(){
+					$("#orderForm .goodsCpn input[name=cpnCartSq]").each(function(){
 						if ($(this).val() == cartCpnCartSq) {
 							goodsCpnDcAmt 	= parseInt($(this).parent().find("input[name=cpnDcAmt]").val());
 						} 
@@ -1558,6 +1560,13 @@ var custCpnApplyTemp = function(obj) {
 			cartCpnDcSumAmt = dcVal;
 		}
 		
+		// 2021.04.19 최대금액 체크
+		if (maxDcAmt > cartCpnDcSumAmt || maxDcAmt == 0) {
+			cartCpnDcSumAmt = cartCpnDcSumAmt;
+		} else {
+			cartCpnDcSumAmt = maxDcAmt;
+		}
+		
 		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"));
@@ -1568,7 +1577,7 @@ var custCpnApplyTemp = function(obj) {
 	var goodsCartCpnSumAmt 	= 0;
 	var cpnType				= "";
 	
-	$("input[name='cpnDcAmt']").each(function(){
+	$("#couponApplyForm input[name='cpnDcAmt']").each(function(){
 		cpnType = $(this).parent().find("input[name=cpnType]").val();
 		
 		// 상품, 장바구니쿠폰 할인 금액만 합계 적용
@@ -1578,7 +1587,7 @@ var custCpnApplyTemp = function(obj) {
 	});
 	
 	// 상품, 장바구니쿠폰 할인 금액만 합계 적용
-	$(".modal-footer .goodsCartCpnSumAmt").text(getZeroMinusDelAmt(goodsCartCpnSumAmt));
+	$("#couponApplyForm .modal-footer .goodsCartCpnSumAmt").text(getZeroMinusDelAmt(goodsCartCpnSumAmt));
 }
 
 // 1.11 쿠폰중복체크 후 적용가능
@@ -1613,12 +1622,20 @@ var custCpnApply = function(obj) {
 	else if (cpnType == "cartCpn") {
 		var dcWay 				= obj.find("input[name='dcWay']").val();
 		var dcVal 				= obj.find("input[name='dcVal']").val();
+		var maxDcAmt 			= obj.find("input[name='maxDcAmt']").val();
+		var buyLimitAmt 		= obj.find("input[name='buyLimitAmt']").val();
 		var cartCpnDcSumAmt		= 0;
 		var tempSumAmt			= 0;
-		var cartSqLen			= $(".cartSq").length;
+		var cartSqLen			= $("#orderAmtForm .cartSq").length;
 		var leftAmt				= 0;
 		var index				= 1;
 		
+		// 2021.04.19 장바구니시퀀스 값 초기화
+		$("#orderAmtForm .cartSq").each(function(){
+			$(this).parent().find(".cartCpnSq").text(0);
+			$(this).parent().find(".cartCpnDcAmt").text(0);
+		});
+		
 		// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
 		obj.find("input[name='cartCpnCartSq']").each(function(){
 			var cartCpnCartSq 		= $(this).val();
@@ -1657,10 +1674,6 @@ var custCpnApply = function(obj) {
 			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);
@@ -1669,11 +1682,21 @@ var custCpnApply = function(obj) {
 		// 선택안함
 		$("#orderForm .payTypeNm").text("선택없음");
 		
+		// 2021.04.19 최대금액 체크
+		if (maxDcAmt > cartCpnDcSumAmt || maxDcAmt == 0) {
+			cartCpnDcSumAmt 	= cartCpnDcSumAmt;
+		} else {
+			// 최대값 적용 일때는 금액할인 방식을 적용
+			cartCpnDcSumAmt 	= maxDcAmt;
+			dcVal				= cartCpnDcSumAmt;
+			dcWay 				= "G240_10";
+		}
+		
 		// 금액일때 할인금액 적용
 		if (dcWay == "G240_10") {
 			cartCpnDcSumAmt = dcVal;
 			leftAmt			= dcVal;
-			index = 1;
+			index 			= 1;
 			
 			// 장바구니쿠폰 해당 장바구니상품들 할인가 적용
 			obj.find("input[name='cartCpnCartSq']").each(function(){
@@ -1684,11 +1707,13 @@ var custCpnApply = function(obj) {
 				$("#orderAmtForm .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 - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
+						var tempAmt 		= ((orgCurrPrice - cpn1DcAmt) * goodsQty) - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
 						var tempDiv 		= parseInt((tempAmt / tempSumAmt) * 100);
 						var cartCpnDcAmt	= 0;
 				

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

@@ -61,6 +61,7 @@ var fnViewStock = function(obj, goodsCd, optCd, optCd1, optCd2,  minOrdQty, maxO
 			$("#cartForm  input[name=cea]").attr("readonly",false);
 			$("#cartForm  input[name=stock]").val(itemCnt);
 
+			$('.price_box').show();
 			fnSetTotalPrice();
 			
 			// 모바일에서 작업해야함
@@ -151,6 +152,9 @@ var fnEpCouponDownCallBack = function(){
 	//cfCloseLayer('epCouponPop');  //dim 이 안없어져요
 }
 
+//****************상품상세  end **********************************
+
+//****************상품리스트  start **********************************
 var categoryGoodsList = [];
 var cnt = 1;
 var email = '';
@@ -224,5 +228,97 @@ var fnCategoryGoodsInfiniteScrollInit = function(){
 	$("#listBox").html("");
 }
 
+var filterHtml = '';
+var filterStatHtml = '';
 
-//****************상품상세  end **********************************
+// 상품상세 필터 조회
+var filterSel = function (obj, gubun, staus, sizeGb){
+	let $obj = $(obj);
+	if(staus=='on'){
+		$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'off\',\'\');');
+		$("#filterData").find('span').each(function(idx,item) {
+			if(gubun=='color'){
+				if($obj.attr('data-id').replace('#','').trim() == $(this).closest("span").attr('id')) {
+					$(this).closest("span").remove();
+				}
+			}else{
+				if($obj.attr('data-id') == $(this).closest("span").text()) {
+					$(this).closest("span").remove();
+				}
+			}
+		});
+	}else{
+		$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'on\',\'\');');
+
+		let tag = '';
+		if(gubun=='color'){
+			tag += '<span id="'+$obj.attr('data-id').replace('#','')+'">';
+			if($obj.attr('data-id')=='#FFFFFF'){
+				tag += '	<span class="pdColor-color" style="background-color: #'+$obj.attr('data-id')+';border:1px solid #aaa;" value="'+$obj.attr('data-id')+'"></span>';
+			}else{
+				tag += '	<span class="pdColor-color" style="background-color: #'+$obj.attr('data-id')+'" value="'+$obj.attr('data-id')+'"></span>';
+			}
+			tag += '	<a href="javascript:void(0);" class="filter_delete" onclick="fnDeleteFilter(this,\''+gubun+'\');"></a >';
+			tag += '</span>';
+		}else{
+			tag += '<span>'+$obj.attr('data-id');
+			if(!gagajf.isNull(sizeGb)){
+				tag += '<a href="javascript:void(0);" class="filter_delete" onclick="fnDeleteFilter(this,\''+gubun+'\',\'on\',\''+sizeGb+'\');"></a >';
+			}else{
+				tag += '<a href="javascript:void(0);" class="filter_delete" onclick="fnDeleteFilter(this,\''+gubun+'\',\'on\',\'\');"></a >';
+			}
+			tag += '</span>';
+		}
+
+		$("#filterData").append(tag);
+	}
+
+	fnFilterSet(gubun, sizeGb);
+}
+
+var fnFilterSet = function (searchId, sizeGb){
+	fnCategoryGoodsInfiniteScrollInit();
+	$("#searchGoodsForm input:hidden[name="+searchId+"Search]").remove();
+	var tag = '';
+	if(searchId=='size'){
+		//$('#filterForm #sizeLi'+sizeGb).find('input[name='+searchId+']:checked').each(function(idx,item){
+		$('#filterForm input[name='+searchId+']:checked').each(function(){
+			//console.log('idx::::'+item);
+			tag = '<input type="hidden" name="'+searchId+'Search" value="'+$(this).val()+'"/>\n';
+			$("#searchGoodsForm").append(tag);
+		});
+	}else{
+		$('#filterForm input[name='+searchId+']:checked').each(function(){
+			tag = '<input type="hidden" name="'+searchId+'Search" value="'+$(this).val()+'"/>\n';
+			$("#searchGoodsForm").append(tag);
+		});
+	}
+
+
+	fnGoodsListSearch();
+}
+
+// 상품상세 필터 삭제
+var fnDeleteFilter = function (obj, gubun, sizeGb){
+	$("#"+gubun+"FilterDiv > ul > li").each(function(idx,item) {
+		if(gubun == 'size'){
+			$("#sizeLi"+sizeGb+" .size_btn").each(function (){
+				if($(obj).closest("span").text() == $(this).find('input').attr('data-id')){
+					$(this).find('input').click();
+				}
+			});
+		}else if(gubun == 'color'){
+			if($(obj).closest("span").attr('id') == $(this).find('input').attr('data-id').trim()){
+				$(this).find('input').click();
+			}
+		}else{
+			if($(obj).closest("span").text() == $(this).find('input').attr('data-id')){
+				$(this).find('input').click();
+			}
+		}
+	});
+
+	$(obj).closest("span").remove();
+}
+
+//****************상품리스트  end **********************************

+ 2 - 0
src/main/webapp/biz/mypage.js

@@ -163,9 +163,11 @@ var fnCreateChange = function(param, gubun) {
 	// 반품/취소/교환 페이지 이동
 	let ordNo = $(param).attr('ordNo');
 	let ordDtlNo = $(param).attr('ordDtlNo');
+	let delvFeeCd = $(param).attr('delvFeeCd');
 
 	$('#' + gubun + 'Form input[name=ordNo]').val(ordNo);
 	$('#' + gubun + 'Form input[name=ordDtlNo]').val(ordDtlNo);
+	$('#' + gubun + 'Form input[name=delvFeeCd]').val(delvFeeCd);
 
 	if (gubun == 'cancel') {
 		document.cancelForm.submit();

+ 5 - 3
src/main/webapp/ux/pc/css/layout.css

@@ -1530,7 +1530,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.faq .quick_list ul li {width: 19.99%; height: 49.9%; text-align: center; border-left: 1px solid #ddd; border-bottom: 1px solid #ddd;}
 	.faq .quick_list ul li:nth-child(1),.faq .quick_list ul li:nth-child(6) {border-left:none;}
 	.faq .quick_list ul li:nth-child(6),.faq .quick_list ul li:nth-child(7),.faq .quick_list ul li:nth-child(8),.faq .quick_list ul li:nth-child(9),.faq .quick_list ul li:nth-child(10) {border-bottom: none;}
-	.faq .quick_list ul li a {display: flex; display: -ms-flexbox; justify-content: center; width:100%; height: 100%; line-height:26px; font-size:16px; font-weight: 200; align-items: center; color:#222; letter-spacing:-0.025em;padding: 0 25px;}
+	.faq .quick_list ul li a {display: flex; display: -ms-flexbox; justify-content: center; word-break: keep-all; overflow: hidden; width:100%; height: 100%; line-height:26px; font-size:16px; font-weight: 200; align-items: center; color:#222; letter-spacing:-0.025em;padding: 0 15px;}
 	.faq .search_wrap {margin-bottom:60px;}
 	.faq .search_wrap .faq_search {height:190px; background:#f5f5f5; padding:50px; box-sizing:border-box; text-align:center;}
 	.faq .search_wrap .faq_search .search_box {display:inline-block; position:relative; width:600px; padding-right:50px; border-bottom:2px solid #222; box-sizing: border-box; text-align:left;}
@@ -1541,7 +1541,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.faq .fold_nav {width:100%;}
 	.faq .fold_nav ul {display: flex; display: -ms-flexbox; flex-wrap: wrap; margin-top:-12px}
 	.faq .fold_nav ul li {margin:12px 12px 0 0;}
-	.faq .fold_nav ul li a {display:inline-block;padding:15px 22px 13px;border: 1px solid #ddd;font-size: 16px;font-weight: 300;line-height: 1; letter-spacing:-0.025em;}
+	.faq .fold_nav ul li a {display:inline-block;padding:15px 22px;border: 1px solid #ddd;font-size: 16px;font-weight: 300;line-height: 1; letter-spacing:-0.025em;}
 	.faq .fold_nav ul li a.on {position: relative; background: #222; color:#fff; border: 1px solid #222;}
 	.faq .fold_nav ul li a.on::after {content:''; position: absolute; width:0; height: 0; bottom:-1px; right:-1px; border-bottom: 13px solid #fff; border-left: 13px solid transparent;}
 	.faq .foldGroup {margin-top:50px}
@@ -1813,7 +1813,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.stamp_event .event_benefit {margin-top:80px;}
 	.stamp_event .event_benefit .title {color:#222; font-size:30px; font-weight:500; text-align:center;}
 	.stamp_event .event_benefit .benefit_con {margin-top:40px; text-align:center;}
-	.stamp_event .event_benefit .benefit_con ul{display: flex;margin: -6px auto;width: 1200px;background: #f5f5f5;}
+	.stamp_event .event_benefit .benefit_con ul{margin: -6px auto;width: 1200px;background: #f5f5f5;display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;}
 	.stamp_event .event_benefit .benefit_con li{width: 24%;height: 125px;margin:40px 0;position:relative;}
 	.stamp_event .event_benefit .benefit_con li::after{content: ''; display: inline-block;width: 1px;height: 100%;padding: 0;margin: 0;background: #e4e4e4;position: absolute;right: 0;top: 0;}
 	.stamp_event .event_benefit .benefit_con li:last-child::after{content: ''; display: inline-block; width:0;}
@@ -2582,6 +2582,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd_detail .thumb {display:block; position:relative; width:100%; height:0px; line-height:0; font-size:0; padding-top:150%; overflow:hidden;background:#f5f5f5;background: #ffffff;border: 1px solid #f5f5f5;box-sizing: content-box;}
 	.pd_detail .thumb img,
 	.pd_detail .thumb video {position:absolute; left:0; top:50%; width:100%; transform:translateY(-50%) ; z-index:2;}
+	.pd_detail .movbox {position: relative;height: 0;padding-top: 100%;padding-bottom:50.25%;overflow: hidden;transition: all 300ms ease;transform: scale(1);}
+	.pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 100%;height: 100%;z-index: 1;}
 	.pd_detail .btn_popup {display:inline-block; padding:0px; box-sizing:border-box;}
 	.pd_detail .btn_popup span {color:#888; font-size:12px; font-weight:200; border-bottom:1px solid #888; /*vertical-align:top;*/}
 

+ 3 - 1
src/main/webapp/ux/style24_link.js

@@ -695,7 +695,7 @@ function cfGoodsQng(goodsCd) {
 	var Param = new Object();
 	var str = '<div class="pd_pop full_pop pd_qnalist_pop" id="layer_goods_qna"></div>';
 	if ("P" != _frontGb){
-		str = '<div class="modal pop_full fade pd_pop pd_qnalist_pop"  data-id="layer_infinite" id="layer_goods_qna" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+		str = '<div class="modal pop_full fade pd_pop pd_qnalist_pop" id="layer_goods_qna" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
 	}
 
 	if ($('#layer_goods_qna').length == 0) {
@@ -963,6 +963,7 @@ function cfnPutWishList(a) {
 				//		}
 				//	});
 				}
+				fnGetWishList();
 			} else if (result.status == "중복") {
 				Msg = '이미 등록 되어있습니다.';
 			} else {
@@ -984,6 +985,7 @@ function cfnPutWishList(a) {
 			if (result.status == "200") {
 				Msg = '삭제 되었습니다.';
 				$(a).removeClass('active');
+				fnGetWishList();
 			} else {
 				Msg = '오류로 인해 처리되지 않았습니다.';
 			}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio