Explorar o código

Merge branch 'develop' into jsshin

jsshin %!s(int64=5) %!d(string=hai) anos
pai
achega
9320baab28
Modificáronse 64 ficheiros con 1141 adicións e 534 borrados
  1. 10 3
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  2. 161 103
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  3. 5 2
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  4. 3 1
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  5. 0 3
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  6. 26 17
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  7. 1 0
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  8. 1 0
      src/main/java/com/style24/persistence/domain/searchengine/SearchEngine.java
  9. 0 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  10. 5 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  11. 7 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  12. 5 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  13. 7 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  14. 4 2
      src/main/resources/config/application-locd.yml
  15. 10 5
      src/main/resources/config/application-tsit.yml
  16. 2 2
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  17. 92 15
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html
  18. 31 3
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  19. 63 7
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  20. 34 26
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  21. 36 28
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  22. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html
  23. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  24. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html
  25. 19 16
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  26. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  27. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  28. 16 13
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html
  29. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html
  30. 1 0
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  31. 1 3
      src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html
  32. 4 4
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  33. 1 1
      src/main/webapp/WEB-INF/views/mob/planning/PlanningMainFormMob.html
  34. 9 7
      src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html
  35. 4 4
      src/main/webapp/WEB-INF/views/web/cart/CartDelvFeeSaveGoodsPopupWeb.html
  36. 6 6
      src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html
  37. 2 0
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  38. 12 8
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  39. 2 2
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  40. 1 1
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  41. 26 11
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  42. 2 1
      src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html
  43. 34 26
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  44. 91 60
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  45. 17 13
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  46. 8 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  47. 4 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  48. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  49. 16 13
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html
  50. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html
  51. 4 4
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html
  52. 8 7
      src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html
  53. 1 1
      src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html
  54. 19 1
      src/main/webapp/biz/goods.js
  55. 16 4
      src/main/webapp/biz/mypage.js
  56. 2 1
      src/main/webapp/ux/mo/css/common_m.css
  57. 28 36
      src/main/webapp/ux/mo/css/layout_m.css
  58. 10 10
      src/main/webapp/ux/mo/css/style24_m.css
  59. 43 19
      src/main/webapp/ux/mo/js/common_m.js
  60. 6 3
      src/main/webapp/ux/pc/css/common.css
  61. 11 3
      src/main/webapp/ux/pc/css/layout.css
  62. 11 3
      src/main/webapp/ux/pc/js/common-ui.js
  63. 182 0
      src/main/webapp/ux/plugins/approval_key.js
  64. 8 8
      src/main/webapp/ux/style24_link.js

+ 10 - 3
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -470,9 +470,10 @@ public class TsfCartService {
 		if(cartSqs.size() > 0) {
 			// 다다익선 할인 상품 조회 (품절 상품 제외)
 			Collection<Order> moreBetterAmtList = new ArrayList<Order>();
-			if(order.getCustNo() > 0) {
+			//if(order.getCustNo() > 0) {		// 비회원도 다다익선 적용 여부 및 금액 노출되도록 수정. (한수인리더 요청) :: 20210517
+				order.setCartYn("Y");
 				moreBetterAmtList = getMoreBetterAmtList(order);
-			}
+			//}
 
 			// 다다익선 할인 정보 및 상품 정보 장바구니에 등록
 			for (Order cart : cartGoodsList) {
@@ -510,6 +511,7 @@ public class TsfCartService {
 
 		// 전체 장바구니 정보
 		order.setDelvAllCartList(cartGoodsList);
+		order.setAllCartCnt(cartGoodsList.size());
 
 		return order;
 	}
@@ -552,8 +554,12 @@ public class TsfCartService {
 		// 장바구니 상품 조회
 		param.setFrontGb(TsfSession.getFrontGb());
 		Collection<Order> cartGoodsList = coreOrderService.getCartGoodsList(param);
+		String cartYn = "N";
+		if(!StringUtils.isEmpty(param.getCartYn())) {
+			cartYn = param.getCartYn();
+		}
 
-		if(param.getCustNo() > 0 ) {
+		if(param.getCustNo() > 0 || "Y".equals(cartYn)) {
 			// 장바구니 내 수량 다다익선 적용 가능 리스트 조회 (등록된 기본,적용 상품 정보 전체 조회)
 			Collection<Order> tmtbApplyList = cartDao.selectMoreBetterApplyCartList(param);
 
@@ -926,6 +932,7 @@ public class TsfCartService {
 
 		// 장바구니 총액 계산 상품 총 수량
 		order.setTotCartCnt(notSoldoutCnt);
+		order.setCartGoodsList(cartGoodsList);
 	}
 
 	public void deleteCart(Cart param) {

+ 161 - 103
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -362,9 +362,6 @@ public class TsfOrderService {
 						param.setOrdNo(param.getOrgOrdNo());
 					}
 
-					log.info("CHECK INFO :::: {}", param.getPgOrdNo());
-					log.info("CHECK INFO :::: {}", param.getOrdNo());
-
 					// 일반 KCP 결제
 					result = coreKcpService.kcpPayRequest(param, request, response);
 				}
@@ -1016,8 +1013,6 @@ public class TsfOrderService {
 			// 장바구니 등록된 주문 정보 조회
 			Collection<Order> cartList = coreOrderService.getCartGoodsList(param);
 
-			log.info("CHECK DELV_FEE 1 ::::: {}", cartList.stream().iterator().next().getDelvFee());
-
 			// 주문 상세 정보 세팅
 			for(Order item : cartList) {
 				item.setSavePntAmt(0);
@@ -1030,18 +1025,14 @@ public class TsfOrderService {
 			}
 			param.setOrderDetailList(cartList);
 
-			log.info("CHECK DELV_FEE 2 ::::: {}", cartList.stream().iterator().next().getDelvFee());
-
 			// 배송비 정보 조회
 			GagaMap delvMap = coreOrderService.getCartDelvGoodsCntList(cartList, param);
 			param.setDelvFeeCdList((Collection<Order>) delvMap.get("delvFeeCdList"));
 
-			log.info("CHECK DELV_FEE 3 ::::: {}", param.getOrderDetailList().stream().iterator().next().getDelvFee());
-
 			// 주문 정보 등록
 			coreOrderService.createPreOrder(param);
-
-			log.info("CHECK DELV_FEE 4 ::::: {}", param.getOrderDetailList().stream().iterator().next().getDelvFee());
+			int ordNo = param.getOrdNo();
+			int custNo = param.getCustNo();
 
 			// 네이버페이 기본정보
 			String shopId			= env.getProperty("naverPay.shop.id");				// shopId
@@ -1054,8 +1045,6 @@ public class TsfOrderService {
 			String goodsImgUrl		= env.getProperty("upload.goods.view");				// 상품 이미지 경로
 			int totPrice			= 0;												// 전체 주문 금액
 
-			log.info("CHECK PARAM ::::: {} / {}", param.getBackUrl(), param.getGoodsUrl());
-
 			// 네이버페이 송부용 xml 작성
 			StringBuffer sb = new StringBuffer();
 			sb.append("<order>\n");
@@ -1070,9 +1059,6 @@ public class TsfOrderService {
 			sb.append("\t</interface>\n");
 
 			for(Order item : param.getOrderDetailList()) {
-
-				log.info("CHECK DELV_FEE 5 ::::: {}", item.getDelvFee());
-
 				//<!-- 상품정보 -->
 				sb.append("\t<product>\n");
 				sb.append("\t\t<id>").append(item.getGoodsCd()).append("</id>\n");								//<!-- 상품코드 -->
@@ -1080,37 +1066,87 @@ public class TsfOrderService {
 				sb.append("\t\t<name>").append(item.getGoodsNm()).append("</name>\n");	//<!-- 상품명 -->
 				sb.append("\t\t<basePrice>").append(item.getCurrPrice() + item.getOptAddPrice()).append("</basePrice>\n");		//<!-- 상품금액 -->
 				// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
-				sb.append("\t\t<infoUrl>").append("http:" + param.getGoodsUrl() + item.getGoodsCd()).append("</infoUrl>\n");	//<!-- 상품상세페이지 URL -->
+				sb.append("\t\t<infoUrl>").append("http:" + (param.getGoodsUrl() + item.getGoodsCd())).append("</infoUrl>\n");	//<!-- 상품상세페이지 URL -->
 				sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + item.getSysImgNm()).append("</imageUrl>\n");	//<!-- 상품원본이미지 URL -->
+				if(TscConstants.GoodsType.SET.value().equals(item.getGoodsType())) {		// 세트상품
+					// 구성상품 옵션정보 split
+					String[] itemNms  = item.getItemNm().split("!@!");		// 구성상품명
+					String[] optCds   = item.getOptCd().split(",");			// 옵션코드
+					String[] colorNms = item.getColorNm().split(",");			// 컬러명
+					String[] optCd2s  = item.getOptCd2().split(",");			// 사이즈
+					String[] itemCds  = item.getItemCd().split(",");			// 상품코드
+
+					// 상품명, 컬러, 사이즈 확인 ==> 20200517 정지혜과장님 확인 :: 상품명=25,OPT1=13,OPT2=12 글자. 넘어갈경우 뒤에 ".." 붙여서 글자수 맞출것.
+					// 상품명/컬러/사이즈 이므로 가운데 / 를 위해 24, 12, 12로 진행
+					for(int i = 0 ; i < itemNms.length ; i++) {
+						if(itemNms[i].length() > 24)	{itemNms[i]  = itemNms[i].substring(0, 21) + "..";}
+						if(optCd2s[i].length() > 12)	{optCd2s[i]  = optCd2s[i].substring(0, 9)  + "..";}
+						if(colorNms[i].length() > 12)	{colorNms[i] = colorNms[i].substring(0, 9) + "..";}
+
+						// 옵션 정보
+						sb.append("\t\t<option>\n");
+						sb.append("\t\t\t<quantity>").append(item.getGoodsQty()).append("</quantity>\n");	//<!-- 옵션수량-->
+						sb.append("\t\t\t<price>").append(item.getOptAddPrice()).append("</price>\n");		//<!-- 옵션금액 -->
+						sb.append("\t\t\t<manageCode>").append(item.getOptCd()).append("</manageCode>\n");	//<!-- 옵션관리코드 -->
+
+						// 칼라코드
+						sb.append("\t\t\t<selectedItem>\n");
+						sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
+						sb.append("\t\t\t\t<name>상품</name>\n");//<!-- 옵션명 -->
+						sb.append("\t\t\t\t<value>\n");
+						sb.append("\t\t\t\t\t<id>").append(itemCds[i]).append("/").append(optCds[i]).append("</id>\n");//<!-- 옵션 -->
+						sb.append("\t\t\t\t\t<text>").append(itemNms[i]).append("/").append(colorNms[i]).append("/").append(optCd2s[i]).append("</text>\n");//<!-- 옵션명 -->
+						sb.append("\t\t\t\t</value>\n");
+						sb.append("\t\t\t</selectedItem>\n");
+						sb.append("\t\t</option>\n");
+					}
 
-				// 옵션 정보
-				sb.append("\t\t<option>\n");
-				sb.append("\t\t\t<quantity>").append(item.getGoodsQty()).append("</quantity>\n");	//<!-- 옵션수량-->
-				sb.append("\t\t\t<price>").append(item.getOptAddPrice()).append("</price>\n");		//<!-- 옵션금액 -->
-				sb.append("\t\t\t<manageCode>").append(item.getOptCd()).append("</manageCode>\n");	//<!-- 옵션관리코드 -->
-
-				// 칼라코드
-				sb.append("\t\t\t<selectedItem>\n");
-				sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
-				sb.append("\t\t\t\t<name>색상</name>\n");//<!-- 옵션명 -->
-				sb.append("\t\t\t\t<value>\n");
-				sb.append("\t\t\t\t\t<id>").append(item.getOptCd1()).append("</id>\n");//<!-- 칼라코드 -->
-				sb.append("\t\t\t\t\t<text>").append(item.getColorNm()).append("</text>\n");//<!-- 칼라명 -->
-				sb.append("\t\t\t\t</value>\n");
-				sb.append("\t\t\t</selectedItem>\n");
-
-				// 사이즈코드
-				sb.append("\t\t\t<selectedItem>\n");
-				sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
-				sb.append("\t\t\t\t<name>사이즈</name>\n");//<!-- 옵션명 -->
-				sb.append("\t\t\t\t<value>\n");
-				sb.append("\t\t\t\t\t<id>").append(item.getOptCd2()).append("</id>\n");//<!-- 사이즈코드 -->
-				sb.append("\t\t\t\t\t<text>").append(item.getOptCd2()).append("</text>\n");//<!-- 사이즈명 -->
-				sb.append("\t\t\t\t</value>\n");
-				sb.append("\t\t\t</selectedItem>\n");
-				sb.append("\t\t</option>\n");
+				} else if("Y".equals(item.getSelfGoodsYn())) {								// 세트상품 제외 자사상품
+					// 옵션 정보
+					sb.append("\t\t<option>\n");
+					sb.append("\t\t\t<quantity>").append(item.getGoodsQty()).append("</quantity>\n");	//<!-- 옵션수량-->
+					sb.append("\t\t\t<price>").append(item.getOptAddPrice()).append("</price>\n");		//<!-- 옵션금액 -->
+					sb.append("\t\t\t<manageCode>").append(item.getOptCd()).append("</manageCode>\n");	//<!-- 옵션관리코드 -->
+
+					// 칼라코드
+					sb.append("\t\t\t<selectedItem>\n");
+					sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
+					sb.append("\t\t\t\t<name>색상</name>\n");//<!-- 옵션명 -->
+					sb.append("\t\t\t\t<value>\n");
+					sb.append("\t\t\t\t\t<id>").append(item.getOptCd1()).append("</id>\n");//<!-- 칼라코드 -->
+					sb.append("\t\t\t\t\t<text>").append(item.getColorNm()).append("</text>\n");//<!-- 칼라명 -->
+					sb.append("\t\t\t\t</value>\n");
+					sb.append("\t\t\t</selectedItem>\n");
+
+					// 사이즈코드
+					sb.append("\t\t\t<selectedItem>\n");
+					sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
+					sb.append("\t\t\t\t<name>사이즈</name>\n");//<!-- 옵션명 -->
+					sb.append("\t\t\t\t<value>\n");
+					sb.append("\t\t\t\t\t<id>").append(item.getOptCd2()).append("</id>\n");//<!-- 사이즈코드 -->
+					sb.append("\t\t\t\t\t<text>").append(item.getOptCd2()).append("</text>\n");//<!-- 사이즈명 -->
+					sb.append("\t\t\t\t</value>\n");
+					sb.append("\t\t\t</selectedItem>\n");
+					sb.append("\t\t</option>\n");
+				} else {																		// 세트상품 제외 입점업체 상품
+					// 옵션 정보
+					sb.append("\t\t<option>\n");
+					sb.append("\t\t\t<quantity>").append(item.getGoodsQty()).append("</quantity>\n");	//<!-- 옵션수량-->
+					sb.append("\t\t\t<price>").append(item.getOptAddPrice()).append("</price>\n");		//<!-- 옵션금액 -->
+					sb.append("\t\t\t<manageCode>").append(item.getOptCd()).append("</manageCode>\n");	//<!-- 옵션관리코드 -->
+
+					// 칼라코드
+					sb.append("\t\t\t<selectedItem>\n");
+					sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
+					sb.append("\t\t\t\t<name>옵션</name>\n");//<!-- 옵션명 -->
+					sb.append("\t\t\t\t<value>\n");
+					sb.append("\t\t\t\t\t<id>").append(item.getOptCd()).append("</id>\n");//<!-- 칼라코드 -->
+					sb.append("\t\t\t\t\t<text>").append(item.getOptCd1()).append("/").append(item.getOptCd2()).append("</text>\n");//<!-- 칼라명 -->
+					sb.append("\t\t\t\t</value>\n");
+					sb.append("\t\t\t</selectedItem>\n");
+					sb.append("\t\t</option>\n");
+				}
 
-				log.info("CHECK DELV_FEE 6 ::::: {}", item.getDelvFee());
 
 				// 배송비 판단 후 배송비유형 선택 (추가 기본배송비, 무료배송비 기준 조회후 등록)
 				//<!-- 배송정보 -->
@@ -1126,15 +1162,12 @@ public class TsfOrderService {
 					delvFee = 0;
 				}
 
-				log.info("CHECK DELV_FEE 7 ::::: {}", item.getDelvFee());
-
 				sb.append("\t\t<shippingPolicy>\n");
 				sb.append("\t\t\t<groupId>").append(item.getDelvFeeCd()).append("</groupId>\n");		//<!-- 배송비묶음그룹ID -->
 				sb.append("\t\t\t<method>DELIVERY</method>\n");											//<!-- 배송방법 : 택배,소포,등기 -->
-				sb.append("\t\t\t<feeType>").append("CONDITIONAL_FREE").append("</feeType>\n");			//<!-- 배송비유형 : 유료 -->
-				sb.append("\t\t\t<feePayType>").append("PREPAYED").append("</feePayType>\n");			//<!-- 배송비결제방법 : 선불 -->
-				//sb.append("\t\t\t<feePrice>").append(item.getDelvFee()).append("</feePrice>\n");		//<!-- 기본배송비 -->
-				 sb.append("\t\t\t<feePrice>").append(delvFee).append("</feePrice>\n");					//<!-- 기본배송비 -->
+				sb.append("\t\t\t<feeType>").append(delvFeeCrite).append("</feeType>\n");				//<!-- 배송비유형 : 유료 -->
+				sb.append("\t\t\t<feePayType>").append(feePayType).append("</feePayType>\n");			//<!-- 배송비결제방법 : 선불 -->
+				sb.append("\t\t\t<feePrice>").append(delvFee).append("</feePrice>\n");					//<!-- 기본배송비 -->
 
 				// 조건부 무료일경우에만 송부
 				if(TscConstants.DelvFeeCrite.NORMAL.value().equals(item.getDelvFeeCrite())) {
@@ -1155,16 +1188,12 @@ public class TsfOrderService {
 
 			result = sendOrderInfoToNC(sb);
 
-			log.info("CHECK state ::::: {}", result.get("state").toString());
-			log.info("CHECK orderKey ::::: {}",result.get("orderKey").toString());
-			log.info("CHECK resultNo ::::: {}", result.get("resultNo").toString());
-
 			// 네이버 페이 주문번호 저장
 			param.setNpayOrdNo(Integer.parseInt(result.get("resultNo").toString()));
 
-			log.info("CHECK NAVER PAY ORD NO ::::: {}", param.getNpayOrdNo());
-
 			// 3.주문정보 저장
+			param.setOrdNo(ordNo);
+			param.setUpdNo(custNo);
 			coreOrderDao.updateNaverPayOrderNo(param);
 			result.put("npayOrderUrl", env.getProperty("naverPay.order.url"));
 			result.put("orderkey", param.getNpayOrdNo());
@@ -1196,8 +1225,6 @@ public class TsfOrderService {
 
 		HttpsURLConnection conn = (HttpsURLConnection)_url.openConnection();
 
-		log.info("CHECK URL ::::: {}", env.getProperty("naverPay.order.api.url"));
-
 		conn.setDoInput(true);
 		conn.setDoOutput(true);
 		conn.setUseCaches(false);
@@ -1220,7 +1247,7 @@ public class TsfOrderService {
 
 		BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
 
-		String[] arr = reader.readLine().toString().split(":");
+		String[] arr = reader.readLine().split(":");
 
 		log.info("CHECK RESULT ARR ::::: {} / {} / {}", arr[0], arr[1], arr[2]);
 		if ("SUCCESS".equals(arr[0])) {
@@ -1406,52 +1433,83 @@ public class TsfOrderService {
 				// 옵션 정보
 				sb.append("\t\t<option>\n");
 
-				// 9.1 옵션 아이템정보 색상
-				sb.append("\t\t\t<optionItem>\n");
-				sb.append("\t\t\t\t<type>SELECT</type>\n");
-				sb.append("\t\t\t\t<name>색상</name>\n");
-				for(int j = 0 ; j < colorList.length ; j++) {
-					sb.append("\t\t\t\t<value>\n");
-					sb.append("\t\t\t\t\t<id>").append(colorList[j]).append("</id>\n");
-					sb.append("\t\t\t\t\t<text>").append(colorNmList[j]).append("</text>\n");
-					sb.append("\t\t\t\t</value>\n");
-				}
-				sb.append("\t\t\t</optionItem>\n");
-
-				// 9.1 옵션 아이템정보 사이즈
-				sb.append("\t\t\t<optionItem>\n");
-				sb.append("\t\t\t\t<type>SELECT</type>\n");
-				sb.append("\t\t\t\t<name>사이즈</name>\n");
-				for(int j = 0 ; j < sizeList.length ; j++) {
-					sb.append("\t\t\t\t<value>\n");
-					sb.append("\t\t\t\t\t<id>").append(sizeList[j]).append("</id>\n");
-					sb.append("\t\t\t\t\t<text>").append(sizeList[j]).append("</text>\n");
-					sb.append("\t\t\t\t</value>\n");
+				if("Y".equals(goods.getSelfGoodsYn())) {
+					// 9.1 옵션 아이템정보 색상
+					sb.append("\t\t\t<optionItem>\n");
+					sb.append("\t\t\t\t<type>SELECT</type>\n");
+					sb.append("\t\t\t\t<name>색상</name>\n");
+					for (String color : colorList) {
+						sb.append("\t\t\t\t<value>\n");
+						sb.append("\t\t\t\t\t<id>").append(color).append("</id>\n");
+						sb.append("\t\t\t\t\t<text>").append(color).append("</text>\n");
+						sb.append("\t\t\t\t</value>\n");
+					}
+					sb.append("\t\t\t</optionItem>\n");
+
+					// 9.1 옵션 아이템정보 사이즈
+					sb.append("\t\t\t<optionItem>\n");
+					sb.append("\t\t\t\t<type>SELECT</type>\n");
+					sb.append("\t\t\t\t<name>사이즈</name>\n");
+					for (String size : sizeList) {
+						sb.append("\t\t\t\t<value>\n");
+						sb.append("\t\t\t\t\t<id>").append(size).append("</id>\n");
+						sb.append("\t\t\t\t\t<text>").append(size).append("</text>\n");
+						sb.append("\t\t\t\t</value>\n");
+					}
+					sb.append("\t\t\t</optionItem>\n");
+
+					// 9.3 옵션 옵션조합정보
+					for(GoodsStock optInfo : optList) {
+						sb.append("\t\t\t<combination>\n");
+						sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
+						sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
+						sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
+						sb.append("\t\t\t\t<status>true</status>\n");
+
+						// 9.3.1  옵션 옵션조합정보 색상
+						sb.append("\t\t\t\t<options>\n");
+						sb.append("\t\t\t\t\t<name>색상</name>\n");
+						sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd1()).append("</id>\n");
+						sb.append("\t\t\t\t</options>\n");
+
+						// 9.3.2  옵션 옵션조합정보 사이즈
+						sb.append("\t\t\t\t<options>\n");
+						sb.append("\t\t\t\t\t<name>사이즈</name>\n");
+						sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd2()).append("</id>\n");
+						sb.append("\t\t\t\t</options>\n");
+
+						sb.append("\t\t\t</combination>\n");
+					}
+				} else {
+					// 9.1 옵션 아이템정보 색상
+					sb.append("\t\t\t<optionItem>\n");
+					sb.append("\t\t\t\t<type>SELECT</type>\n");
+					sb.append("\t\t\t\t<name>옵션</name>\n");
+					for(GoodsStock optInfo : optList) {
+						sb.append("\t\t\t\t<value>\n");
+						sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
+						sb.append("\t\t\t\t\t<text>").append(optInfo.getOptCd1()).append("/").append(optInfo.getOptCd2()).append("</text>\n");
+						sb.append("\t\t\t\t</value>\n");
+					}
+					sb.append("\t\t\t</optionItem>\n");
+
+					// 9.3 옵션 옵션조합정보
+					for(GoodsStock optInfo : optList) {
+						sb.append("\t\t\t<combination>\n");
+						sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
+						sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
+						sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
+						sb.append("\t\t\t\t<status>true</status>\n");
+
+						// 9.3.1  옵션 옵션조합정보 색상
+						sb.append("\t\t\t\t<options>\n");
+						sb.append("\t\t\t\t\t<name>옵션</name>\n");
+						sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
+						sb.append("\t\t\t\t</options>\n");
+						sb.append("\t\t\t</combination>\n");
+					}
 				}
-				sb.append("\t\t\t</optionItem>\n");
 
-				// 9.3 옵션 옵션조합정보
-				for(GoodsStock optInfo : optList) {
-					sb.append("\t\t\t<combination>\n");
-					sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
-					sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
-					sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
-					sb.append("\t\t\t\t<status>true</status>\n");
-
-					// 9.3.1  옵션 옵션조합정보 색상
-					sb.append("\t\t\t\t<options>\n");
-					sb.append("\t\t\t\t\t<name>색상</name>\n");
-					sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd1()).append("</id>\n");
-					sb.append("\t\t\t\t</options>\n");
-
-					// 9.3.2  옵션 옵션조합정보 사이즈
-					sb.append("\t\t\t\t<options>\n");
-					sb.append("\t\t\t\t\t<name>사이즈</name>\n");
-					sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd2()).append("</id>\n");
-					sb.append("\t\t\t\t</options>\n");
-
-					sb.append("\t\t\t</combination>\n");
-				}
 				sb.append("\t\t</option>\n");
 
 				// 10. 배송정보조회

+ 5 - 2
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -147,8 +147,11 @@ public class TsfPlanningService {
 		if (TsfSession.isLogin()) {
 			
 			// 신규회원접근가능여부 조회
-			if ("N".equals(planningDao.getNewCustomerAccessibleYn(plan))) {
-				msg = "신규회원만 접근 가능합니다.";
+			if (TsfSession.getInfo().getCustGrade().equals("G110_50")) {
+				plan.setCustNo(TsfSession.getInfo().getCustNo());
+				if ("N".equals(planningDao.getNewCustomerAccessibleYn(plan))) {
+					msg = "신규회원만 접근 가능합니다.";
+				}
 			}
 			
 			// 고객구분접근가능여부 조회

+ 3 - 1
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -177,10 +177,13 @@ public class TsfReviewService {
 		review.setUpdNo(TsfSession.getInfo().getCustNo());
 		if (review.getKufKeyArr() == null && review.getOrgFileNmArr() == null) {
 			review.setPntGiveStat("G043_30");
+			review.setReviewGb("R");
 		}else if(review.getKufKeyArr() == null && review.getOrgFileNmArr() != null) {
 			review.setPntGiveStat("G043_30");
+			review.setReviewGb("P");
 		}else {
 			review.setPntGiveStat("G043_10");
+			review.setReviewGb("P");
 		}
 		
 		reviewDao.saveMypageReview(review);
@@ -259,7 +262,6 @@ public class TsfReviewService {
 				point.setReviewSq(review.getReviewSq());
 				reviewDao.createReviewPointHst(point);
 			}else if(review.getKufKeyArr() == null && review.getOrgFileNmArr() != null) {
-				
 				// 상품평 + 사진
 				point.setCustNo(TsfSession.getInfo().getCustNo());
 				point.setGvPntAmt(photoReviewPnt);

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

@@ -169,7 +169,6 @@ public class TsfCartController extends TsfBaseController {
 
 	@PostMapping("/tmtb/sales/goods/list")
 	public ModelAndView selectTmtbSalesGoodsList(@RequestBody Goods param) {
-		log.info("CHECK PARAM :::: {}", param.getArrTmtbSq()[0]);
 		ModelAndView mav = new ModelAndView();
 		param.setFrontGb(TsfSession.getFrontGb());
 		param.setSiteCd(TscConstants.Site.STYLE24.value());
@@ -428,8 +427,6 @@ public class TsfCartController extends TsfBaseController {
 			result = goods;		// goodsList는 상품정보 1라인만 조회됨
 		}
 
-		log.info("CHECK MY RESULT ::::: {} / {} / {}", goodsList.size(), result.getGoodsCd(), result.getOptCd());
-
 		return result;
 	}
 }

+ 26 - 17
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -106,19 +106,18 @@ public class TsfDisplayController extends TsfBaseController {
 		}
 
 		String mainCateNo = "1700";
-		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
-			mainCateNo = "1720";
-		} else {
-			mainCateNo = "1700";
-		}
+		// 몰메인 PC,MOBILE 동일하게 사용으로 인한 주석처리
+//		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
+//			mainCateNo = "1720";
+//		} else {
+//			mainCateNo = "1700";
+//		}
 
 		mallMainLayout.setCateNo(Integer.parseInt(mainCateNo));
 		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mallMainLayout);
 
 		Collection<MainLayout> mainLayoutList = new ArrayList<MainLayout>();
-		//mav.addObject("preview", paramMap.get("preview"));
-		//mav.addObject("viewDt", paramMap.get("viewDt"));
-		//mav.addObject("viewPage", "20");
+
 		for (MainLayout mainLayout : mainLayoutCollection) {
 			String contentsLoc = mainLayout.getContentsLoc();
 			Contents contents = new Contents();
@@ -127,6 +126,9 @@ public class TsfDisplayController extends TsfBaseController {
 			contents.setPreview(paramMap.get("preview"));
 			contents.setViewDt(paramMap.get("viewDt"));
 			contents.setCateNo(Integer.parseInt(mainCateNo));
+			if (contentsLoc.equals("SGNB001") || contentsLoc.equals("SGNB002") || contentsLoc.equals("STAB001") || contentsLoc.equals("SMM003") || contentsLoc.equals("SMM004") || contentsLoc.equals("SMM006")) {
+				contents.setMaxRow(1);
+			}
 
 			Cate4Srch cate4Srch = new Cate4Srch();
 			cate4Srch.setContentsLoc(contentsLoc);
@@ -270,12 +272,13 @@ public class TsfDisplayController extends TsfBaseController {
 
 		// 브랜드 레이아웃
 		MainLayout mainLayout = new MainLayout();
-		String mainCateNo = "";
-		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
-			mainCateNo = "1721";
-		} else {
-			mainCateNo = "1711";
-		}
+		String mainCateNo = "1711";
+		// PC,MOBILE 동일 사용으로 인해 주석처리
+//		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
+//			mainCateNo = "1721";
+//		} else {
+//			mainCateNo = "1711";
+//		}
 		mainLayout.setCateNo(Integer.parseInt(mainCateNo));
 		mainLayout.setBrandGroupNo(Integer.parseInt(paramMap.get("brandGroupNo")));
 		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mainLayout);
@@ -289,6 +292,9 @@ public class TsfDisplayController extends TsfBaseController {
 			contents.setViewDt(paramMap.get("viewDt"));
 			contents.setCateNo(Integer.parseInt(mainCateNo));
 			contents.setBrandGroupNo((brandMain.getBrandGroupNo()).toString());
+			if (contentsLoc.equals("SBM005") || contentsLoc.equals("SBM007") || contentsLoc.equals("SBM008") || contentsLoc.equals("SBM009") || contentsLoc.equals("SBM010") || contentsLoc.equals("SBM011") || contentsLoc.equals("SBM013") || contentsLoc.equals("SBM017") || contentsLoc.equals("SBM018") || contentsLoc.equals("SBM019")) {
+				contents.setMaxRow(1);
+			}
 
 			Cate4Srch cate4Srch = new Cate4Srch();
 			cate4Srch.setContentsLoc(contentsLoc);
@@ -479,7 +485,7 @@ public class TsfDisplayController extends TsfBaseController {
 //	}
 	@PostMapping("/lookbook/main/list")
 	@ResponseBody
-	public GagaMap lookbooklist(@RequestBody Lookbook params){
+	public GagaMap lookbooklist(@RequestBody Lookbook params) {
 		GagaMap result = new GagaMap();
 		TscPageRequest pageable = new TscPageRequest((params.getPageNo() > 0 ? params.getPageNo() - 1 : 0), params.getPageSize(), params.getPageUnit());
 		pageable.setTotalCount(coreLookbookService.getLookbookListCount(params));
@@ -492,7 +498,7 @@ public class TsfDisplayController extends TsfBaseController {
 
 	@GetMapping("/lookbook/main/brand/list")
 	@ResponseBody
-	public Collection<Lookbook> lookbookBrandList(Lookbook lookbook){
+	public Collection<Lookbook> lookbookBrandList(Lookbook lookbook) {
 		return coreLookbookService.lookbookBrandList(lookbook);
 	}
 
@@ -548,7 +554,7 @@ public class TsfDisplayController extends TsfBaseController {
 			popup.setCateNo(Integer.parseInt(paramMap.get("cateNo")));
 		}
 		popup.setBrandCd(paramMap.get("brandCd"));
-		popup.setPlanSq((StringUtils.isBlank(paramMap.get("planSq").toString())? 0 : Integer.parseInt(paramMap.get("planSq"))));
+		popup.setPlanSq((StringUtils.isBlank(paramMap.get("planSq").toString()) ? 0 : Integer.parseInt(paramMap.get("planSq"))));
 		popup.setPreview(paramMap.get("preview"));
 		popup.setViewDt(paramMap.get("viewDt"));
 		return displayService.getPopupList(popup);
@@ -827,6 +833,9 @@ public class TsfDisplayController extends TsfBaseController {
 	 */
 	@GetMapping("/outlet/main/form")
 	public ModelAndView outletMain(Cate4Srch cate) {
+		cate.setCate1No(1713);
+		log.info("{}", cate);
+
 		ModelAndView mav = new ModelAndView(super.getDeviceViewName("display/OutletMainForm"));
 
 		MainLayout mainLayout = new MainLayout();

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

@@ -570,6 +570,7 @@ public class TsfPlanningController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView();
 		Integer planSq = planningService.getShotPlanSq(plan);
 		plan.setPlanSq(planSq);
+		plan.setPlanGb(planGb);
 		
 		CustDeliveryAddr addr = new CustDeliveryAddr();
 		Integer custNo = null;

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

@@ -76,6 +76,7 @@ public class SearchEngine implements Serializable {
 	private String sizes;			// 사이즈들(,로 연결된 문자열. 사이즈코드:품절여부, ...)
 	private String benefits;		// 혜택들(,로 연결된 문자열. 혜택구분:혜택명, ...)
 	private String likeIt;			// 좋아요(위시리스트에담긴상품)
+	private String mainColorCd;		// 메인컬러
 
 //	private String adminIp;			// 검색엔진IP
 //	private String adminPort;		// 검색엔진포트

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

@@ -352,7 +352,6 @@
 							 AND	NOT_APPLY.TMTB_SQ IS NULL
 							 AND	T.DEL_YN = 'N'
 							 AND	TAG.DEL_YN = 'N'
-							 AND	C.CART_GB = 'G026_BC'
 							 AND	G.GOODS_STAT = 'G008_90'
 							 AND	G.SELF_MALL_YN = 'Y'
 							 <if test="cartSqArr != null and cartSqArr.length > 0">
@@ -378,7 +377,6 @@
 				AND	T.DEL_YN = 'N'
 				AND	T.TMTB_ST_DT <![CDATA[<=]]> NOW()
 				AND	T.TMTB_ED_DT >= NOW()
-				AND	C.CART_GB = 'G026_BC'
 				AND	G.GOODS_STAT = 'G008_90'
 				AND	G.SELF_MALL_YN = 'Y'
 				<if test="cartSqArr != null and cartSqArr.length > 0">

+ 5 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -259,6 +259,7 @@
 		            </otherwise>
 		        </choose>
 		       ) A
+		ORDER BY DISP_ORD
 		<if test="maxRow != null and maxRow > 0">
 		LIMIT #{maxRow}
 		</if>
@@ -361,7 +362,7 @@
 		               AND    FORMAL_GB = #{formalGb}
 		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
-		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               AND    STOCK_QTY > 0 /*품절상품전시여부N일 때 재고가 있는 카테고리만*/
 		               </if>
 		              )
 		ORDER  BY DISP_ORD
@@ -396,7 +397,7 @@
 		               AND    FORMAL_GB = #{formalGb}
 		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
-		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               AND    STOCK_QTY > 0 /*품절상품전시여부N일 때 재고가 있는 카테고리만*/
 		               </if>
 		              )
 		ORDER  BY DISP_ORD
@@ -433,7 +434,7 @@
 		               AND    FORMAL_GB = #{formalGb}
 		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
-		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               AND    STOCK_QTY > 0 /*품절상품전시여부N일 때 재고가 있는 카테고리만*/
 		               </if>
 		              )
 		ORDER  BY DISP_ORD
@@ -472,7 +473,7 @@
 		               AND    FORMAL_GB = #{formalGb}
 		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
-		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               AND    STOCK_QTY > 0 /*품절상품전시여부N일 때 재고가 있는 카테고리만*/
 		               </if>
 		              )
 		ORDER  BY DISP_ORD

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

@@ -460,6 +460,7 @@
 		<if test='selfGoodsYn != null and selfGoodsYn == "Y"'>
 		AND A.COLOR_CD = #{colorCd}
 		</if>
+		AND A.EXTMALL_IMG_YN = 'N'
 		ORDER BY A.DISP_ORD
 	</select>
 	
@@ -1419,6 +1420,7 @@
 		               , TB_GOODS_IMG GI
 		          WHERE  G.GOODS_CD = GI.GOODS_CD
 		          AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		          AND    GI.EXTMALL_IMG_YN = 'N'
 		          ) Z
 		     GROUP BY GOODS_CD
 		)
@@ -1645,6 +1647,7 @@
 		                , TB_GOODS_IMG GI
 		                WHERE  G.GOODS_CD = GI.GOODS_CD
 		                AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		                AND    GI.EXTMALL_IMG_YN = 'N'
 		         ) Z
 		         GROUP BY GOODS_CD
 		    )
@@ -1775,6 +1778,7 @@
 		               , TB_GOODS_IMG GI
 		          WHERE  G.GOODS_CD = GI.GOODS_CD
 		          AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		          AND    GI.EXTMALL_IMG_YN = 'N'
 		          ) Z
 		     GROUP BY GOODS_CD
 		)
@@ -2242,7 +2246,7 @@
 				  </otherwise>
 			  </choose>
 			  <if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
-				LIMIT #{pageable.startRow} , 30
+				LIMIT #{pageable.limitStartRow} , #{pageable.pageSize}
 			  </if>
 		)
 		SELECT G.BRAND_GROUP_NM
@@ -2693,6 +2697,7 @@
 		                 , TB_GOODS_IMG GI
 		            WHERE  G.GOODS_CD = GI.GOODS_CD
 		            AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		            AND    GI.EXTMALL_IMG_YN = 'N'
 		           ) Z
 		    GROUP  BY GOODS_CD
 		)
@@ -2945,6 +2950,7 @@
 		              , TB_GOODS_IMG GI
 		           WHERE G.GOODS_CD = GI.GOODS_CD
 		           AND G.MAIN_COLOR_CD = GI.COLOR_CD
+		           AND GI.EXTMALL_IMG_YN = 'N'
 		      ) Z
 		      GROUP BY GOODS_CD , MAIN_COLOR_CD
 		)

+ 5 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -1041,6 +1041,9 @@
 		            AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
 		            </if>
 		            AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT /*현재 전시되는 기획전*/
+		            <if test='planGb == "S"'>
+		            AND    G.GOODS_CD NOT IN (SELECT GOODS_CD FROM TB_GOODS_SHOT_DELV_SKIP GSDS)
+		            </if>
 		            AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
 		            AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
 		            AND    NOW() BETWEEN PD.DISP_STDT AND PD.DISP_EDDT /*현재 전시되는 코너*/
@@ -1634,6 +1637,8 @@
 		   AND PE.PLAN_SQ = #{planSq}
 		   <if test="planEntrySq != null and planEntrySq != ''">
 		   AND PE.PLAN_ENTRY_SQ = #{planEntrySq}
+		ORDER BY FIELD(PEA.PLAN_ENTRY_AT_SQ, #{planEntryAtSq})DESC
+		        ,PLAN_ENTRY_AT_SQ ASC 
 		   </if>
 	</select>
 	

+ 7 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -451,7 +451,7 @@
 					 , I.ITEMKIND_NM 
 		   	         , I.ITEMKIND_CD 
 			         , I.SIZE_GB 
-			         ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL #{reviewExpireDay} DAY),NOW()) AS REMAIN_DT -- 남은시간
+			         ,DATEDIFF(DATE_ADD(O.ORD_DT,INTERVAL #{reviewExpireDay} DAY),NOW()) AS REMAIN_DT -- 남은시간
 				  FROM TB_ORDER O
 				 INNER JOIN TB_ORDER_DETAIL OD
 				    ON O.ORD_NO = OD.ORD_NO
@@ -480,13 +480,13 @@
 				LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
 		                                   AND C.USE_YN = 'Y'
 				  WHERE 1=1
-				AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL #{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
 				-- AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
 				AND OD.ORD_DTL_NO NOT IN (SELECT R.ORD_DTL_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y' AND R.ORD_NO = O.ORD_NO AND R.ORD_DTL_NO = OD.ORD_DTL_NO AND R.CUST_NO = #{custNo})
 				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
 			 	AND O.SITE_CD = #{siteCd}
-				) Z
+				) Z		 
+		 WHERE Z.REMAIN_DT > 0
 		 GROUP BY Z.ORD_NO, Z.ORD_DT, Z.DELV_EDDT, Z.ORD_DTL_NO, Z.ORD_EXCH_GB
 				, Z.GOODS_CD, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM, Z.ORD_DTL_STAT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.ORD_AMT, Z.REAL_ORD_AMT
 				, Z.SAVE_PNT_AMT, Z.CNCL_RTN_AMT, Z.PNT_DC_AMT, Z.GFCD_USE_AMT, Z.INVOICE_NO
@@ -786,6 +786,7 @@
 		INSERT INTO TB_REVIEW (
 		                         REVIEW_SQ
 		                       , GOODS_CD
+		                       , REVIEW_GB
 		                       , CUST_NO
 		                       , ORD_NO
 		                       , ORD_DTL_NO
@@ -811,6 +812,7 @@
 		               VALUES (
 		                          #{reviewSq}
 		                        , #{goodsCd}
+		                        , #{reviewGb}
 		                        , #{custNo}
 		                        , #{ordNo}
 		                        , #{ordDtlNo}
@@ -865,10 +867,12 @@
 		<if test='confirmYn == "Y"'>
 		SET CONFIRM_DT = NOW()
 		   ,CONFIRM_YN = 'Y'
+		   ,REVIEW_GB = #{reviewGb}
 		   </if>
 		   <if test='confirmYn == "N"'>
 		 SET CONFIRM_DT = NULL
 		    ,CONFIRM_YN = 'N'
+		    ,REVIEW_GB = #{reviewGb}
 		   </if>
 		WHERE REVIEW_SQ  = #{reviewSq}
 	</update>

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

@@ -69,8 +69,10 @@ pg:
         js.url: https://testpay.kcp.co.kr/plugin/payplus_web.jsp
         server: false
         site:
-            cd: U3476
-            key:
+            #cd: U3476
+            #key:
+            cd: T0000
+            key: 3grptw1.zW0GSo4PQdaGvsF__
             name: ISTYLE TEST
         log.level: 3
         module.type: 01

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

@@ -22,7 +22,8 @@ domain:
     admin: //tdadmin.style24.com
 #    front: //tdfront.style24.com
     front: //ts5000.ipdisk.co.kr
-    image: //tdimage.style24.com
+#    image: //tdimage.style24.com
+    image: //ts5000.ipdisk.co.kr:8999
 #    uximage: //tdimage.style24.com
     uximage: //ts5000.ipdisk.co.kr
 
@@ -31,7 +32,8 @@ upload:
         target.path: /TSIT/servers/files/data/style24
         max.size: 10
         allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
-        view: //tdimage.style24.com
+#        view: //tdimage.style24.com
+        view: //ts5000.ipdisk.co.kr:8999
     goods:
         target.path: /TSIT/servers/files/data/style24/Upload/ProductImage
         max.size: 10
@@ -41,17 +43,20 @@ upload:
         target.path: /TSIT/servers/files/data/style24
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
-        view: //tdimage.style24.com
+#        view: //tdimage.style24.com
+        view: //ts5000.ipdisk.co.kr:8999
     excel:
         target.path: /TSIT/servers/files/data/style24/excel
         max.size: 10
         allow.extension: xls|xlsx
-        view: //tdimage.style24.com/excel
+#        view: //tdimage.style24.com/excel
+        view: //ts5000.ipdisk.co.kr:8999/excel
     sample:
         target.path: /WIDE/workspace/files/data/style24/sample
         max.size: 10
         allow.extension: txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
-        view: //tdimage.style24.com/sample
+#        view: //tdimage.style24.com/sample
+        view: //ts5000.ipdisk.co.kr:8999/sample
 
 download.path: /TSIT/servers/files/data
 

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

@@ -116,10 +116,10 @@
 	$(document).ready(function() {
 		$.getJSON('/cart/goods/not/soldout/cnt', function (order, status) {
 			let cartCnt;
-			if (order.totCartCnt > 99) {
+			if (order.cartGoodsList.length > 99) {
 				cartCnt = "99+";
 			} else {
-				cartCnt = order.totCartCnt;
+				cartCnt = order.cartGoodsList.length;
 			}
 
 			$("header #htopSub .button_wrap .store>span").text(cartCnt);

+ 92 - 15
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html

@@ -19,20 +19,37 @@
 		<section class="htop" id="htopMain">
 			<h1>
 				<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);"><img src="/images/mo/logo_STYLE24.png" alt="STYLE24"></a>
-				<button class="btn_gnb" title="메인메뉴 열기/닫기">
-					<span>
-						<i class="gl1"></i>
-						<i class="gl2"></i>
-					</span>
-				</button>
+				<button class="btn_gnb" title="메인메뉴 열기/닫기"><span><i></i></span></button>
 			</h1>
+			<div class="button_wrap">
+				<button class="search">
+					<img src="/images/mo/ico_btn_search_w.png" alt="검색">
+				</button>
+				<button class="store">
+					<img src="/images/mo/ico_btn_store_w.png" alt="쇼핑백">
+					<span>99+</span>
+				</button>
+			</div>
+		</section>
+		
+		<!-- 브랜드 리스트 -->
+		<section class="hmenu">
+			<div class="inner scrollWrap">
+				<nav class="bng">
+					<ul class="d1">
+						<li id="liGnbBrandGrp">
+						</li>
+					</ul>
+				</nav>
+			</div>
 		</section>
 	</header>
 	
 	<div id="gnb" class="gnb">
 		<div class="gnb-inner">
-			<ul>
-				<li class="on"><a href="#none">브랜드</a></li>
+			<ul id="ulGnbTab">
+				<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
+				<li class="on"><a href="javascript:void(0);">브랜드</a></li>
 				<li><a href="#none">여성</a></li>
 				<li><a href="#none">남성</a></li>
 				<li><a href="#none">유아동</a></li>
@@ -49,17 +66,77 @@
 		</div>
 		<button onclick="$('#gnb').toggleClass('expand');" class="btn-expand"></button>
 	</div>
+	
+	<!-- 통합검색 팝업 -->
+	<div class="modal pop_full schPop sch" id="schPop" tabindex="-1" role="dialog" aria-labelledby="schPopLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">      
+			</div>
+		</div>
+		<a href="#close-modal" rel="modal:close" id="schAllPop_close" class="close-modal">Close</a>
+	</div>
+	<!-- //통합검색 팝업 -->
+	
 <script th:inline="javascript">
 /*<![CDATA[*/
-	$(document).ready(function() {
-		// 카테고리목록
-		fnGetCategoryList();
-	});
+	// GNB탭 생성
+	let fnCreateGnbTab = function() {
+		$.getJSON('/display/gnb/tab/list'
+			, function(result, status) {
+				if (status == 'success') {
+					if (result.length > 0) {
+						$('#ulGnbTab').html('');
+						
+						let tag = '';
+						tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>\n';
+						tag += '<li class="on"><a href="javascript:void(0);">브랜드</a></li>\n';
+						$.each(result, function(idx, item) {
+							if (item.contentsType == 'C') { // 컨텐츠유형: 카테고리
+								tag += '<li><a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'G032_101\',' + item.cate1No + ');">' + item.gtabNm + '</a></li>\n';
+							} else if (item.contentsType == 'O') { // 컨텐츠유형: 아울렛
+								tag += '<li><a href="javascript:void(0);" onclick="cfnGoToOutletMain(\'G032_103\');">' + item.gtabNm + '</a></li>\n';
+							} else { // 컨텐츠유형: 링크
+								tag += '<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>\n';
+							}
+						});
+						
+						$('#ulGnbTab').html(tag);
+					}
+				}
+			});
+	}
 	
-	var fnGetCategoryList = function() {
-		// TODO: 카테고리목록으로 li 태그 만들어 처리
-// 		$('#gnb>div>ul').html('');
+	// GNB탭 > 브랜드 생성
+	let fnCreateGnbBrandGroup = function() {
+		$.getJSON('/display/gnb/brand/group/list'
+			, function(result, status) {
+				if (status == 'success') {
+					if (result.length > 0) {
+						$('#liGnbBrandGrp').html('');
+						let tag = '';
+						$.each(result, function (idx, item) {
+							tag += '<a href="javascript:void(0);" onclick="cfnGoToBrandMain(' + item.brandGroupNo + ');">\n';
+							tag += item.brandGroupNm + '<span><img src="' + _uploadDefaultUrl + item.logoFileNm + '" alt="' + item.brandGroupNm + '"></span>\n';
+							tag += '</a>\n';
+						});
+						$('#liGnbBrandGrp').html(tag);
+					}
+				}
+				
+				fnCreateGnbTab();
+		});
 	}
+	
+	$(document).on("click",".htop .search",function(){
+		$("#schPop .modal-content").load("popup_sch_layer.html");
+		$("#schPop").modal("show");
+		return false;
+	});
+	
+	$(document).ready(function() {
+		// GNB탭 > 브랜드 생성
+		fnCreateGnbBrandGroup();
+	});
 /*]]>*/
 </script>
 

+ 31 - 3
src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html

@@ -55,11 +55,11 @@
 							</ul>
 						</div>
 					</div>
-					<div class="list_defult">
+					<div class="list_defult" style="display:none;">
 						<div>
 							<p>선택하신 조건에 맞는 상품이 없습니다.<br>필터를 변경해 보세요.</p>
 						</div>
-						<button type="button" class="btn btn_default"><span>선택한 필터 초기화</span></button>
+						<button type="button" class="btn btn_default" onclick="fnMobFilterReset();"><span>선택한 필터 초기화</span></button>
 					</div>
 
 					<div id="infiniteContainer">
@@ -84,7 +84,7 @@
 				<div class="filter_top">
 					<div class="tt">필터</div>
 					<div>
-						<button class="fillter_reset"><span>초기화</span></button>
+						<button class="fillter_reset" onclick="fnMobFilterReset();"><span>초기화</span></button>
 						<button class="close">닫기</button>
 					</div>
 				</div>
@@ -595,6 +595,34 @@
 
 		});
 
+		// 필터 초기화
+		var fnMobFilterReset = function (){
+			$(".list_defult").hide();
+			$("#searchGoodsForm input:hidden[name=brandGroupArr]").remove();
+			$("#searchGoodsForm input:hidden[name=sizeArr]").remove();
+			$("#searchGoodsForm input:hidden[name=dcRateFrom]").remove();
+			$("#searchGoodsForm input:hidden[name=dcRateTo]").remove();
+			$("#searchGoodsForm input:hidden[name=priceFrom]").remove();
+			$("#searchGoodsForm input:hidden[name=priceTo]").remove();
+			$("#searchGoodsForm input:hidden[name=ageArr]").remove();
+			$("#searchGoodsForm input:hidden[name=seasonArr]").remove();
+			$("#searchGoodsForm input:hidden[name=colorArr]").remove();
+			$("#searchGoodsForm input:hidden[name=benefitArr]").remove();
+			$("#unisex").prop('checked',false);
+			$("#unisex").attr('onclick','fnFilterOption(this,\'on\');');
+			$("#searchGoodsForm input:hidden[name=unisex]").remove();
+			$("#newGoods").prop('checked',true);
+			$("#newGoods").attr('onclick','fnFilterOption(this,\'on\');');
+			$('.allFilter .chkFilter').find('input[type=checkbox]').each(function (idx){
+				$(this).prop('checked',false);
+			});
+			$('.allFilter .chkFilter .daps1').find('span').each(function (idx){
+				$(this).remove();
+			});
+			fnCategoryGoodsInfiniteScrollInit();
+			fnGoodsListSearch();
+		}
+
 		// TOP 카테고리 노출
 		var fnCreateDepthList = function (){
 			let cateList = [[${cateList}]];

+ 63 - 7
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -32,7 +32,7 @@
 								<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
 									<div class="swiper-slide">
 										<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
-											<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
+											<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath2}" alt="">
 											<div class="txtWrap">
 												<dl th:class="${ContentsData.strVar7=='BLACK'?'':'w'}">
 													<dt th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}">NBA</dt>
@@ -67,12 +67,16 @@
 						<div class="swiper-container post-stylereport">
 							<div class="swiper-wrapper">
 								<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
-								<div class="swiper-slide">
+								<div class="swiper-slide styleArea">
 									<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
 										<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
 										<dl>
-											<dt th:text="${ContentsData.strTitle1}"></dt>
-											<dd th:text="${ContentsData.subText1}"></dd>
+											<dt class="styleTitleC">
+												<input type="hidden" name="styleTitle" th:value="${ContentsData.strTitle1}"/>
+											</dt>
+											<dd class="styleNoteC">
+												<input type="hidden" name="styleNote" th:value="${ContentsData.subText1}"/>
+											</dd>
 <!--											<dd>준비한 아우터 픽을 만나보자</dd>-->
 										</dl>
 									</a>
@@ -353,12 +357,14 @@
 						<div class="swiper-container post-bnnWide">
 							<div class="swiper-wrapper">
 								<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
-									<div class="swiper-slide">
+									<div class="swiper-slide silderBannerArea">
 										<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
 											<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
 												<div class="bnnbox" style="background:#bdc3c7;">
-													<div class="txtWrap ">
-														<p th:text="${ContentsData.strTitle1}">TBJ 가을 신상</p>
+													<div class="txtWrap bannerNote">
+														<p class="noteArea">
+															<input type="hidden" name="bannerNote" th:value="${ContentsData.strTitle1}"/>
+														</p>
 <!--														<p>아우터 + 이너 단독세일</p>-->
 													</div>
 													<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
@@ -824,6 +830,54 @@
 			}
 			$(this).append(tag);
 		});
+
+		// 가로긴배너 슬라이드
+		$('.silderBannerArea').each(function (){
+			let tag = '';
+			if(!gagajf.isNull($(this).find("input[name=bannerNote]").val())) {
+				var noteText = $(this).find("input[name=bannerNote]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
+				if (noteText.indexOf('<br>') > -1) {
+					var reText = noteText.split("<br>");
+					tag += reText[0];
+					tag += '<br>';
+					tag += reText[1];
+				} else {
+					tag += noteText;
+				}
+				$(this).find('.noteArea').append(tag);
+			}
+		});
+
+		// 스타일리포트 <br> 태그
+		$('.styleArea').each(function (){
+			let tag = '';
+			let tag2 = '';
+			if(!gagajf.isNull($(this).find("input[name=styleTitle]").val())) {
+				var titleText = $(this).find("input[name=styleTitle]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
+				if(titleText.indexOf('<br>') > -1){
+					var reText = titleText.split("<br>");
+					tag += reText[0];
+					tag += '<br>';
+					tag += reText[1];
+				}else{
+					tag += titleText;
+				}
+				$(this).find('.styleTitleC').append(tag);
+			}
+
+			if(!gagajf.isNull($(this).find("input[name=styleNote]").val())) {
+				var noteText = $(this).find("input[name=styleNote]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
+				if(noteText.indexOf('<br>') > -1){
+					var reText = noteText.split("<br>");
+					tag2 += reText[0];
+					tag2 += '<br>';
+					tag2 += reText[1];
+				}else{
+					tag2 += noteText;
+				}
+				$(this).find('.styleNoteC').append(tag2);
+			}
+		});
 	});
 
 	function setHtop() {
@@ -1084,6 +1138,8 @@
 				clickable: true,
 			},
 		});
+
+
 	</script>
 
 </th:block>

+ 34 - 26
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html

@@ -72,51 +72,59 @@
 			
 		<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">	
 		<!-- 착용컷 노출 -->
-		<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1') 
-											or #strings.contains(goodsImgList,'_M2')
-											or #strings.contains(goodsImgList,'_M3')
-											or #strings.contains(goodsImgList,'_M4')
-											or #strings.contains(goodsImgList,'_M5')}">
+		<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_C1') 
+											or #strings.contains(goodsImgList,'_C2')
+											or #strings.contains(goodsImgList,'_C3')
+											or #strings.contains(goodsImgList,'_C4')
+											or #strings.contains(goodsImgList,'_C5')}">
 			<span class="tit_view">OUTFIT VIEW</span>
 			<span class="model_info">(모델정보 : 185cm / 78kg / XL 착용)</span>
 			<div class="view">
-				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1') 
-																			or #strings.contains(goodsImg.sysImgNm,'_M2')
-																			or #strings.contains(goodsImg.sysImgNm,'_M3')
-																			or #strings.contains(goodsImg.sysImgNm,'_M4')
-																			or #strings.contains(goodsImg.sysImgNm,'_M5')}">
+				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_C1') 
+																			or #strings.contains(goodsImg.sysImgNm,'_C2')
+																			or #strings.contains(goodsImg.sysImgNm,'_C3')
+																			or #strings.contains(goodsImg.sysImgNm,'_C4')
+																			or #strings.contains(goodsImg.sysImgNm,'_C5')}">
 				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
 				</th:block>
 			</div>
 		</div>
 		<!-- //착용컷 노출 -->
 		<!-- 상품컷 노출 -->
-		<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') 
-											or #strings.contains(goodsImgList,'_02')
-											or #strings.contains(goodsImgList,'_D1')
-											or #strings.contains(goodsImgList,'_D2')
-											or #strings.contains(goodsImgList,'_D3')
-											or #strings.contains(goodsImgList,'_D4')
-											or #strings.contains(goodsImgList,'_D5')}">
+		<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+											or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+											or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+											or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+											or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+											or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+											or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+											or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+											or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+											or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+											or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
 			<span class="tit_view">PRODUCT VIEW</span>
 			<div class="view">
-				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01') 
-																			or #strings.contains(goodsImg.sysImgNm,'_02')
-																			or #strings.contains(goodsImg.sysImgNm,'_D1')
-																			or #strings.contains(goodsImg.sysImgNm,'_D2')
-																			or #strings.contains(goodsImg.sysImgNm,'_D3')
-																			or #strings.contains(goodsImg.sysImgNm,'_D4')
-																			or #strings.contains(goodsImg.sysImgNm,'_D5')}">
+				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+													or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+													or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+													or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+													or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+													or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+													or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+													or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+													or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+													or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+													or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
 				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
 				</th:block>
 			</div>
 		</div>
 		<!-- //상품컷 노출 -->
 		<!-- 원단 노출 -->
-		<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_S1')}">
+		<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_F1')}">
 			<span class="tit_view">FABRIC</span>
 			<div class="view">
-				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1')}">
+				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_F1')}">
 				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
 				</th:block>
 			</div>

+ 36 - 28
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -61,7 +61,7 @@
 										</div>
 									</th:block>
 									<th:block th:each="goodsImg, status : ${goodsImgList}">
-									<div class="swiper-slide" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1') 
+									<div class="swiper-slide" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_F1') 
 																or #strings.contains(goodsImg.sysImgNm,'_L1')
 																or #strings.contains(goodsImg.sysImgNm,'_L2'))}">
 										<div class="thumb" ><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=1080'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></div></div>  <!--  mov -->
@@ -289,51 +289,59 @@
 				</div>
 				<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">	
 				<!-- 착용컷 노출 -->
-				<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1') 
-													or #strings.contains(goodsImgList,'_M2')
-													or #strings.contains(goodsImgList,'_M3')
-													or #strings.contains(goodsImgList,'_M4')
-													or #strings.contains(goodsImgList,'_M5')}">
+				<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_C1') 
+													or #strings.contains(goodsImgList,'_C2')
+													or #strings.contains(goodsImgList,'_C3')
+													or #strings.contains(goodsImgList,'_C4')
+													or #strings.contains(goodsImgList,'_C5')}">
 					<span class="tit_view">OUTFIT VIEW</span>
 					<span class="model_info">(모델정보 : 185cm / 78kg / XL 착용)</span>
 					<div class="view">
-						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1') 
-																					or #strings.contains(goodsImg.sysImgNm,'_M2')
-																					or #strings.contains(goodsImg.sysImgNm,'_M3')
-																					or #strings.contains(goodsImg.sysImgNm,'_M4')
-																					or #strings.contains(goodsImg.sysImgNm,'_M5')}">
+						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_C1') 
+																					or #strings.contains(goodsImg.sysImgNm,'_C2')
+																					or #strings.contains(goodsImg.sysImgNm,'_C3')
+																					or #strings.contains(goodsImg.sysImgNm,'_C4')
+																					or #strings.contains(goodsImg.sysImgNm,'_C5')}">
 						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
 						</th:block>
 					</div>
 				</div>
 				<!-- //착용컷 노출 -->
 				<!-- 상품컷 노출 -->
-				<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') 
-													or #strings.contains(goodsImgList,'_02')
-													or #strings.contains(goodsImgList,'_D1')
-													or #strings.contains(goodsImgList,'_D2')
-													or #strings.contains(goodsImgList,'_D3')
-													or #strings.contains(goodsImgList,'_D4')
-													or #strings.contains(goodsImgList,'_D5')}">
+				<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+													or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+													or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+													or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+													or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+													or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+													or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+													or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+													or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+													or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+													or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
 					<span class="tit_view">PRODUCT VIEW</span>
 					<div class="view">
-						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01') 
-																					or #strings.contains(goodsImg.sysImgNm,'_02')
-																					or #strings.contains(goodsImg.sysImgNm,'_D1')
-																					or #strings.contains(goodsImg.sysImgNm,'_D2')
-																					or #strings.contains(goodsImg.sysImgNm,'_D3')
-																					or #strings.contains(goodsImg.sysImgNm,'_D4')
-																					or #strings.contains(goodsImg.sysImgNm,'_D5')}">
+						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+																					or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+																					or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+																					or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+																					or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+																					or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+																					or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+																					or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+																					or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+																					or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+																					or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
 						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
 						</th:block>
 					</div>
 				</div>
 				<!-- //상품컷 노출 -->
 				<!-- 원단 노출 -->
-				<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_S1')}">
+				<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_F1')}">
 					<span class="tit_view">FABRIC</span>
 					<div class="view">
-						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1')}">
+						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_F1')}">
 						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
 						</th:block>
 					</div>
@@ -1041,7 +1049,7 @@
 					</div>
 				</div>
 				<th:block th:each="goodsImg, status : ${goodsImgList}">
-				<div id="popThumb2" class="scaleview" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
+				<div id="popThumb2" class="scaleview" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_F1.') 
 													or #strings.contains(goodsImg.sysImgNm,'_L1.')
 													or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
 					<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=1080'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">

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

@@ -217,7 +217,8 @@ let oneData = [[${oneData}]];
 var isLogin = [[${isLogin}]];
 
 $(document).ready(function() {
-
+	// 타이틀명
+	$('#htopTitle').text('취소상세');
 });
 /*]]>*/
 </script>

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

@@ -246,7 +246,8 @@
 	let memoGb = '';
 
 	$(document).ready(function() {
-		
+		// 타이틀명
+		$('#htopTitle').text('교환상세');
 	});
 	
 	// 배송메모 및 반품메모 변경 처리

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

@@ -282,7 +282,8 @@ let oneData = [[${oneData}]];
 var isLogin = [[${isLogin}]];
 
 $(document).ready(function() {
-
+	// 타이틀명
+	$('#htopTitle').text('반품상세');
 });
 
 // 회수지 정보 설정

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

@@ -215,6 +215,12 @@
 							<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
 						</div>
 						<div class="tbl">
+							<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
+							<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+							<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+							<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+							<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
+							<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
 							<div class="ship_info">
 								<dl>
 									<div class="name">
@@ -231,12 +237,6 @@
 									</div>
 									<div class="desc_txt">택배사에서 반품 상품을 직접 회수할 장소 선택</div>
 								</dl>
-								<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
-								<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
-								<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
-								<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
-								<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
-								<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
 							</div>
 						</div>
 					</div>
@@ -270,6 +270,12 @@
 						<button type="button" class="btn_popup" onclick="fnChangeAddr('recip')"><span>배송지 변경</span></button>
 					</div>
 					<div class="tbl">
+						<input type="hidden" name="recipNm" 		th:value="${deliveryAddrInfo.recipNm}">
+						<input type="hidden" name="recipPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+						<input type="hidden" name="recipZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+						<input type="hidden" name="recipBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+						<input type="hidden" name="recipDtlAddr"	th:value="${deliveryAddrInfo.recipDtlAddr}">
+						<input type="hidden" name="delvMemo" 		th:value="${deliveryAddrInfo.delvMemo}">
 						<div class="ship_info">
 							<dl>
 								<div class="name">
@@ -285,12 +291,6 @@
 									<dd id="recipPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></dd>
 								</div>
 							</dl>
-							<input type="hidden" name="recipNm" 		th:value="${deliveryAddrInfo.recipNm}">
-							<input type="hidden" name="recipPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
-							<input type="hidden" name="recipZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
-							<input type="hidden" name="recipBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
-							<input type="hidden" name="recipDtlAddr"	th:value="${deliveryAddrInfo.recipDtlAddr}">
-							<input type="hidden" name="delvMemo" 		th:value="${deliveryAddrInfo.delvMemo}">
 						</div>
 					</div>
 				</div>
@@ -301,7 +301,7 @@
 				</div>
 				<!-- //교환 배송비결제 필요할 경우 -->
 				<div class="btn_group btn_group_flex">
-					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>취소</span></button></div>
+					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST)"><span>취소</span></button></div>
 					<div><button type="button" id="btn_exchange_confirm" class="btn btn_dark" onclick="fnExchange()"><span>교환 신청</span></button></div>
 				</div>
 			</div>
@@ -364,15 +364,18 @@ let addrGb 			= '';
 let jsonObj 		= {};
 let ordNo 			= [[${oneData.ordNo}]];
 
-$(document).ready(function() {	
+$(document).ready(function() {
+	// 타이틀명
+	$('#htopTitle').text('교환 신청');
+
 	// 입점업체의 경우 회수방식 직접배송 처리
 	if (oneData.selfGoodsYn != 'Y') {
 		$('#withdraw').click();
 		$('.wdGb').css('display','none');
 	}
 
-	// 타이틀명
-	$('#htopTitle').text('교환 신청');
+	// 교환사유 선택 처리
+	$('#exchangeReasonPop .lap .popup_con .button_list button').eq(0).click();
 });
 
 // 교환수량버튼기능

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

@@ -1006,8 +1006,8 @@
 
 		// 버튼 클래스 설정
 		$.each($('.btn_count'), function(idx, item) {
-			if ($(item).children().length > 3 && !$(item).hasClass('type1')) {
-				$(item).addClass('type1');
+			if ($(item).children().length > 3 && !$(item).hasClass('col2')) {
+				$(item).addClass('col2');
 			}
 		});
 	});

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

@@ -491,8 +491,8 @@
 <script th:inline="javascript">
 // 버튼 클래스 설정
 $.each($('.btn_count'), function(idx, item) {
-	if ($(item).children().length > 3 && !$(item).hasClass('type1')) {
-		$(item).addClass('type1');
+	if ($(item).children().length > 3 && !$(item).hasClass('col2')) {
+		$(item).addClass('col2');
 	}
 });
 </script>

+ 16 - 13
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html

@@ -214,6 +214,12 @@
 							<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
 						</div>
 						<div class="tbl">
+							<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
+							<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+							<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+							<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+							<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
+							<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
 							<div class="ship_info">
 								<dl>
 									<div class="name">
@@ -230,12 +236,6 @@
 									</div>
 									<div class="desc_txt">택배사에서 반품 상품을 직접 회수할 장소 선택</div>
 								</dl>
-								<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
-								<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
-								<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
-								<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
-								<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
-								<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
 							</div>
 						</div>
 					</div>
@@ -269,6 +269,12 @@
 						<button type="button" class="btn_popup" onclick="fnChangeAddr('recip')"><span>배송지 변경</span></button>
 					</div>
 					<div class="tbl">
+						<input type="hidden" name="recipNm" 		th:value="${deliveryAddrInfo.recipNm}">
+						<input type="hidden" name="recipPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+						<input type="hidden" name="recipZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+						<input type="hidden" name="recipBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+						<input type="hidden" name="recipDtlAddr"	th:value="${deliveryAddrInfo.recipDtlAddr}">
+						<input type="hidden" name="delvMemo" 		th:value="${deliveryAddrInfo.delvMemo}">
 						<div class="ship_info">
 							<dl>
 								<div class="name">
@@ -284,12 +290,6 @@
 									<dd id="recipPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></dd>
 								</div>
 							</dl>
-							<input type="hidden" name="recipNm" 		th:value="${deliveryAddrInfo.recipNm}">
-							<input type="hidden" name="recipPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
-							<input type="hidden" name="recipZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
-							<input type="hidden" name="recipBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
-							<input type="hidden" name="recipDtlAddr"	th:value="${deliveryAddrInfo.recipDtlAddr}">
-							<input type="hidden" name="delvMemo" 		th:value="${deliveryAddrInfo.delvMemo}">
 						</div>
 					</div>
 				</div>
@@ -300,7 +300,7 @@
 				</div>
 				<!-- //교환 배송비결제 필요할 경우 -->
 				<div class="btn_group btn_group_flex">
-					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST)"><span>취소</span></button></div>
+					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST)"><span>취소</span></button></div>
 					<div><button type="button" id="btn_exchange_confirm" class="btn btn_dark" onclick="fnExchange()"><span>교환 신청</span></button></div>
 				</div>
 			</div>
@@ -372,6 +372,9 @@ $(document).ready(function() {
 
 	// 타이틀명
 	$('#htopTitle').text('교환 신청');
+
+	// 교환사유 선택 처리
+	$('#exchangeReasonPop .lap .popup_con .button_list button').eq(0).click();
 });
 
 // 교환수량버튼기능

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

@@ -24,7 +24,7 @@
 					<dt>주문번호</dt>
 					<dd  th:text="${ordNo}"></dd>
 				</dl>
-				<a href="javascript:void(0);" class="delete" onclick="fnDeleteOrder()">주문 내역 삭제</a>
+				<a href="javascript:void(0);" class="delete" onclick="fnDeleteOrder('noMember')">주문 내역 삭제</a>
 			</div>
 		</div>
 		<div class="inner">

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

@@ -24,6 +24,7 @@
 <!-- payment.js -->
 <script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
 <script type="text/javascript" src="/biz/payment.js"></script>
+<script type="text/javascript" src="/ux/plugins/approval_key.js"></script>
 
 <form id="order_info" name="order_info" method="post" action="/order/pay/result/response" ></form>
 

+ 1 - 3
src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html

@@ -4,7 +4,6 @@
 <meta http-equiv="Pragma" content="no-cache">
 <meta http-equiv="Expires" content="-1">
 
-<form id="order_info" name="order_info" method="post" action="/order/pay/result/response" >
 	<!-- 페이코 송부 정보 -->
 	<th:block th:if="${!#strings.isEmpty(payment.paycoDirect)}">
 		<input type="hidden" name="payco_direct"	th:value="${payment.paycoDirect}" />
@@ -15,7 +14,7 @@
 	<input type="hidden" name="pgGb"			th:value="${payment.pgGb}" />
 	<input type="hidden" name="payMeans"		th:value="${payment.payMeans}" />
 
-	<input type="hidden" name="encoding_trans"	value="UTF 8" />	<!-- 추가 인코딩 네임은 대문자 -->
+	<input type="hidden" name="encoding_trans"	value="UTF-8" />	<!-- 추가 인코딩 네임은 대문자 -->
 
 	<input type="hidden" name="req_tx"			th:value="${payment.reqTx}" />		<!-- 요청의 종류를 구분하는 변수 결제요청페이지의 경우 ‘pay’로 설정 -->
 	<input type="hidden" name="shop_name"		th:value="${payment.siteName}" />	<!-- 상점이름(영문으로 작성권장) -->
@@ -105,5 +104,4 @@
 	<!-- 네이버페이 관련 정보 -->
 	<input type="hidden" name="reserveId" th:value="${payment.reserveId}"/>
 	<input type="hidden" name="paymentId" value=""/>
-</form>
 </html>

+ 4 - 4
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html

@@ -139,7 +139,8 @@
 				</div>
 				</th:block>
 				
-				<div class="inner">
+				<th:block th:if="${#lists.size(planCornerList)}>0">
+				<div class="inner" id="cornerInner">
 					<div class="dp_listItems_wrap typeSelector">
 						<div class="items_option">
 							<div class="open_categori" style="position: relative; width: 100%; z-index: 0;">
@@ -148,9 +149,8 @@
 						</div>
 					</div>
 				</div>
-				<div id="cornerGoodsList">
-
-				</div>
+				<div id="cornerGoodsList"></div>
+				</th:block>
 				<div class="inner">
 					<div class="other_promotion_slide">
 						<h2 th:if="${planInfo.planGb == 'P'}" class="dp_subtitle">다른 기획전 보기</h2>

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

@@ -68,7 +68,7 @@
 						
 						$.each(result, function(idx, item) {
 							let tag = '<div>\n';
-							tag += '	<div class="visual">\n';
+							tag += '	<div class="visual" onclick="cfnGoToPlanDetail(\'' + item.planSq + '\')">\n';
 							
 							if (item.newYn == 'Y') {
 								tag += '		<div class="shape ranker"><span>NEW</span></div>\n';

+ 9 - 7
src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html

@@ -299,15 +299,17 @@ var fnOpenDaumAddr = function() {
 						success 	: function(result) {
 							if (result != null) {
 								$('#addr').text(cfnGetDaumRoadAddr(data));
-								if(result.shotYn.shotDelvUseYn == "Y"){
-									$("#classPop").attr("class","possible-popup");
-									$('#shotAdr').text("총알배송");
-									$("#infoTxt").html("오늘 오전 10시까지 주문하시면 오늘 도착합니다. <br>(토, 일, 공휴일 휴무)")
-									
-								}else{
+								if (result.shotYn != null && result.shortYn != '') {
+									if(result.shotYn.shotDelvUseYn == "Y"){
+										$("#classPop").attr("class","possible-popup");
+										$('#shotAdr').text("총알배송");
+										$("#infoTxt").html("오늘 오전 10시까지 주문하시면 오늘 도착합니다. <br>(토, 일, 공휴일 휴무)");
+									}
+								}
+								else{
 									$("#classPop").attr("class","impossible-popup");
 									$('#shotAdr').text("일반배송");
-									$("#infoTxt").html("주문시간/배송지에 따라 2~3일 이내 도착합니다.<br> (일, 공휴일 휴무)")
+									$("#infoTxt").html("주문시간/배송지에 따라 2~3일 이내 도착합니다.<br> (일, 공휴일 휴무)");
 								}
 								
 								$("#bulletShipPop").modal("show");

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

@@ -8,7 +8,7 @@
 			<div class="modal-body">
 				<div class="pop_cont">
 					<div class="area_slider">
-						<div class="swiper-container swiper-container-initialized swiper-container-horizontal">
+						<div class="swiper-container swiper-container-initialized swiper-container-horizontal swiper-delv-container">
 							<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
 								<div th:each="goods, status : ${goodsList}" class="swiper-slide swiper-slide-active" style="width: 150px; margin-right: 20px;">
 									<div class="item_prod">
@@ -33,7 +33,7 @@
 								</div>
 							</div>
 							<!-- Add Scrollbar -->
-							<!--<div class="swiper-scrollbar"></div>-->
+							<div class="swiper-scrollbar" th:if="${goodsList.size() > 5}" style="opacity: 0; transition-duration: 400ms;"><div class="swiper-scrollbar-drag" style="width: 514.104px; transform: translate3d(0px, 0px, 0px);"></div></div>
 							<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
 						</div>
 					</div>
@@ -43,13 +43,13 @@
 
 			<script>
 				//팝업 - 배송비 SAVE 상품보기 > 슬라이드
-				var dlvrSaveSwiper = new Swiper('.dlvrSave_pop .swiper-container', {
+				var dlvrSaveSwiper = new Swiper('#dlvrSavePop .swiper-delv-container', {
 					observer:true,
 					observeParents: true,
 					slidesPerView: 5,
 					spaceBetween: 20,
 					scrollbar: {
-						el: '.dlvr_save_pop .swiper-scrollbar',
+						el: '#dlvrSavePop .swiper-scrollbar',
 						hide: true,
 					},
 				});

+ 6 - 6
src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html

@@ -15,9 +15,8 @@
 				</div>
 				<!-- -->
 				<div class="area_slider">
-					<div class="swiper-container swiper-container-initialized swiper-container-horizontal">
+					<div class="swiper-container swiper-container-initialized swiper-container-horizontal swiper-tmtb-container">
 						<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
-
 							<div th:each="goods, status : ${goodsList}" class="swiper-slide swiper-slide-active" style="width: 150px; margin-right: 20px;">
 								<div class="item_prod">
 									<div class="item_state">
@@ -41,8 +40,9 @@
 							</div>
 						</div>
 						<!-- Add Scrollbar -->
-						<!--<div class="swiper-scrollbar" style="opacity: 0; transition-duration: 400ms;"><div class="swiper-scrollbar-drag" style="width: 514.104px; transform: translate3d(0px, 0px, 0px);"></div></div>-->
-						<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span></div>
+						<div class="swiper-scrollbar" th:if="${goodsList.size() > 5}" style="opacity: 0; transition-duration: 400ms;"><div class="swiper-scrollbar-drag" style="width: 514.104px; transform: translate3d(0px, 0px, 0px);"></div></div>
+						<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
+					</div>
 				</div>
 				<!-- -->
 			</div>
@@ -50,13 +50,13 @@
 
 		<script>
 			//팝업 - 다다익선 상품보기 > 슬라이드
-			var moreSaleSwiper = new Swiper('.moresale_pop .swiper-container', {
+			var moreSaleSwiper = new Swiper('#moresalePop .swiper-tmtb-container', {
 				observer:true,
 				observeParents: true,
 				slidesPerView: 5,
 				spaceBetween: 20,
 				scrollbar: {
-					el: '.tmtbSalesPopup .swiper-scrollbar',
+					el: '#moresalePop .swiper-scrollbar',
 					hide: true,
 				},
 			});

+ 2 - 0
src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html

@@ -162,6 +162,8 @@
 						$.each(result, function(idx, item) {
 							if (item.contentsType == 'L') { // 컨텐츠유형:링크
 								$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
+							}else{
+								$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
 							}
 						});
 					}

+ 12 - 8
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1042,15 +1042,11 @@
 	// 장바구니
 	let fnGetCartGoodsList = function() {
 		$.getJSON('/cart/quick/cart/list', function(order, status) {
-			let cartCnt;
-			if(order.totCartCnt > 99) {cartCnt = "99+";} else {cartCnt = order.totCartCnt;}
 			$("#quick_menu .shopingbag.quick_con.quick02 .quick_head a").attr("href", _PAGE_CART);
 			$("#header .gnb .btn_cart").attr("href", _PAGE_CART);
-			$("#header .gnb .btn_cart .circle_count").text(cartCnt);
 
 			if (status == 'success') {
 				let quickShoppingBagHtml = "";
-				$("#quick_menu #quick02 .count").text(cartCnt);
 
 				$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").html("");
 				if(order.totCartCnt > 0) {
@@ -1061,8 +1057,9 @@
 					let ordCanCnt = 0;
 					for(let i = 0 ; i < order.delvAllCartList.length ; i++) {
 						let info = order.delvAllCartList[i];
-						//alert(info.soldoutYn + " / " + info.ordCanYn + " / " + info.ordCanQty + " / " + info.goodsQty + " / " + info.minOrdQty + " / " + info.maxOrdQty);
-						if(info.soldoutYn == "N" && info.ordCanYn == "Y" && info.ordCanQty >= info.goodsQty && info.goodsQty >= info.minOrdQty && info.goodsQty <= info.maxOrdQty){
+
+						// 구매하기 버튼에서 장바구니 버튼으로 변경 후 품절 상품 보여주지 말것 이라는 멘트 사라짐. 전체 노출
+						//if(info.soldoutYn == "N" && info.ordCanYn == "Y" && info.ordCanQty >= info.goodsQty && info.goodsQty >= info.minOrdQty && info.goodsQty <= info.maxOrdQty){
 							ordCanCnt++;		// 주문 가능 수량
 							quickShoppingBagHtml += '	<div class="item_prod">';
 							quickShoppingBagHtml += '		<input type="hidden" id="cartSq" value="' + info.cartSq + '">';
@@ -1110,11 +1107,13 @@
 							quickShoppingBagHtml += '			</a>';
 							quickShoppingBagHtml += '		</div>';
 							quickShoppingBagHtml += '	</div>';
-						}
+						//}
 					}
 
 					quickShoppingBagHtml += '</div>';
 					quickShoppingBagHtml += '<button type="button" class="btn btn_default purchase_btn" onclick="cfnGoToPage(_PAGE_CART);"><span>쇼핑백 바로가기</span></button>';
+
+					$("#quick_menu #quick02 .count").text(ordCanCnt);
 				} else {
 					if(!$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").hasClass("nodata")) {
 						$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").addClass("nodata");
@@ -1144,6 +1143,12 @@
 				}
 
 				$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").html(quickShoppingBagHtml);
+
+				let cartCnt = $("#quick_menu #quick02 .count").text();
+				if(!cartCnt) cartCnt = 0;
+				if(cartCnt > 99) cartCnt = "99+";
+				$(".shopingbag .quick_body .product_count .c_primary").text(cartCnt);
+				$("#header .gnb .btn_cart .circle_count").text(cartCnt);
 			}
 		});
 	}
@@ -1192,7 +1197,6 @@
 								tag += '				</div>';	
 								tag += '			</a>';	
 								tag += '			<div class="hover_con">';
-								console.log(item.stockQtySum);
 								if (item.stockQtySum>0) {
 									tag += '			<button type="button" class="btn btn_sm cart_btn on" afLinkCd="'+item.afLinkCd+'" goodsCd="'+item.goodsCd+'" optCd="'+item.optCd+'" minOrdQty="'+item.minOrdQty+'" goodsType="'+item.goodsType+'" contentsLoc="'+item.contentLoc+'" onclick="wishCardAdd(this)"><span>쇼핑백 담기</span></button>';
 								}

+ 2 - 2
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html

@@ -701,12 +701,12 @@
 		let formalGb = 'G009_20';
 		var tag = '';
 		tag += '<li class="has_depth">\n'; //depth_menu 있을 시 has_depth 클래스 추가
-		tag += '	<a href="javascript:void(0);" onclick="cfnGoToOutletMain(\'G032_103\',\'1713\')">' + outletNm + '</a>\n';
+		tag += '	<a href="javascript:void(0);" onclick="cfnGoToOutletMain(\'G032_103\');">' + outletNm + '</a>\n';
 		tag += '	<div class="depth_menu category">\n';
 		tag += '		<div class="head_category">\n';
 		tag += '			<div class="tit">\n';
 		tag += '				<p>' + outletNm + '</p>\n';
-		tag += '				<a href="javascript:void(0);" onclick="cfnGoToOutletMain(\'G032_103\',\'1713\')" class="more">전체보기</a>\n';
+		tag += '				<a href="javascript:void(0);" onclick="cfnGoToOutletMain(\'G032_103\');" class="more">전체보기</a>\n';
 		tag += '			</div>\n';
 		let allCate = [[${allCateList}]];
 		tag += '			<div class="menu">\n';

+ 1 - 1
src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html

@@ -249,10 +249,10 @@
 									<div class="swiper-slide">
 										<div class="item_prod sUiXc">
 											<div class="item_state">
-												<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc=${contentsLoc}, planDtlSq=''">관심상품 추가</button>
 												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM009');">
 													<div class="itemPic">
 														<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+														<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc=${contentsLoc}, planDtlSq=''">관심상품 추가</button>
 													</div>
 													<p class=" itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 													<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>

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

@@ -234,7 +234,7 @@
 										<p>선택하신 조건에 맞는 상품이 없습니다.<br>필터를 변경해 보세요.</p>
 									</div>
 									<div class="ui_row">
-										<button type="button" class="btn btn_default btn_md"><span>선택한 필터 초기화</span></button>
+										<button type="button" class="btn btn_default btn_md" onclick="fnFilterReset();"><span>선택한 필터 초기화</span></button>
 									</div>
 								</div>
 								<div class="count_wrap">
@@ -441,17 +441,32 @@
 			fnFilterSlider('dcrate' , custom_values02[min].replace('%',''), custom_values02[max].replace('%',''));
 		}
 
+		// 필터 초기화
 		var fnFilterReset = function (){
-			document.location.href = currUrl;
-			// $("#searchGoodsForm input:hidden[name=brandSearch]").remove();
-			// $("#searchGoodsForm input:hidden[name=sizeSearch]").remove();
-			// $("#searchGoodsForm input:hidden[name=priceRow]").remove();
-			// $("#searchGoodsForm input:hidden[name=priceHigh]").remove();
-			// $("#searchGoodsForm input:hidden[name=dcrateRow]").remove();
-			// $("#searchGoodsForm input:hidden[name=dcrateHigh]").remove();
-			// $("#searchGoodsForm input:hidden[name=seasonSearch]").remove();
-			// $("#searchGoodsForm input:hidden[name=colorSearch]").remove();
-			// $("#searchGoodsForm input:hidden[name=benefitSearch]").remove();
+			//document.location.href = currUrl;
+			$("#searchGoodsForm input:hidden[name=brandGroupArr]").remove();
+			$("#searchGoodsForm input:hidden[name=sizeArr]").remove();
+			$("#searchGoodsForm input:hidden[name=dcRateFrom]").remove();
+			$("#searchGoodsForm input:hidden[name=dcRateTo]").remove();
+			$("#searchGoodsForm input:hidden[name=priceFrom]").remove();
+			$("#searchGoodsForm input:hidden[name=priceTo]").remove();
+			$("#searchGoodsForm input:hidden[name=ageArr]").remove();
+			$("#searchGoodsForm input:hidden[name=seasonArr]").remove();
+			$("#searchGoodsForm input:hidden[name=colorArr]").remove();
+			$("#searchGoodsForm input:hidden[name=benefitArr]").remove();
+			$("#unisex").prop('checked',false);
+			$("#unisex").attr('onclick','fnFilterOption(this,\'on\');');
+			$("#searchGoodsForm input:hidden[name=unisex]").remove();
+			$("#newGoods").prop('checked',true);
+			$("#newGoods").attr('onclick','fnFilterOption(this,\'on\');');
+			fnFilterSliderMove(0,5);
+			fnDcRateFilterSliderMove(0,10);
+			$('.filter_content .sort').find('input[type=checkbox]').each(function (idx){
+				$(this).prop('checked',false);
+			});
+			$("#filterData").html('');
+			fnCategoryGoodsInfiniteScrollInit();
+			fnGoodsListSearch();
 		}
 
 		var fnGoodsListSearch = function (){

+ 2 - 1
src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html

@@ -122,7 +122,8 @@
 			<div class="content br_lookbook_view cont_others" th:if="${otherLookbookList}">
 				<div class="cont_head">
 					<h3 class="subH1 t_c mb40">다른 룩북 보기</h3>
-					<button onclick="cfnGoToLookbookList();"><span>전체보기</span></button>
+					<button th:if="${lookbookInfo.lookbookGb=='BL'}" th:onclick="cfnGoToLookbookList([[${lookbookInfo.lookbookGb}]],[[${lookbookInfo.brandCd}]])"><span>전체보기</span></button>
+					<button th:if="${lookbookInfo.lookbookGb=='L'}" th:onclick="cfnGoToLookbookList([[${lookbookInfo.lookbookGb}]])"><span>전체보기</span></button>
 				</div>
 				<div class="cont_body">
 					<div class="area_slider">

+ 34 - 26
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -73,19 +73,19 @@
 			
 	<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">
 	<!-- 착용컷 노출 -->
-	<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1') 
-										or #strings.contains(goodsImgList,'_M2')
-										or #strings.contains(goodsImgList,'_M3')
-										or #strings.contains(goodsImgList,'_M4')
-										or #strings.contains(goodsImgList,'_M5')}">
+	<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_C1') 
+										or #strings.contains(goodsImgList,'_C2')
+										or #strings.contains(goodsImgList,'_C3')
+										or #strings.contains(goodsImgList,'_C4')
+										or #strings.contains(goodsImgList,'_C5')}">
 		<span class="tit_view">OUTFIT VIEW</span>
 		<span class="model_info">(모델정보 : 185cm / 78kg / XL 착용)</span>
 		<div class="view">
-			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1') 
-																		or #strings.contains(goodsImg.sysImgNm,'_M2')
-																		or #strings.contains(goodsImg.sysImgNm,'_M3')
-																		or #strings.contains(goodsImg.sysImgNm,'_M4')
-																		or #strings.contains(goodsImg.sysImgNm,'_M5')}">
+			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_C1') 
+																		or #strings.contains(goodsImg.sysImgNm,'_C2')
+																		or #strings.contains(goodsImg.sysImgNm,'_C3')
+																		or #strings.contains(goodsImg.sysImgNm,'_C4')
+																		or #strings.contains(goodsImg.sysImgNm,'_C5')}">
 			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 			</th:block>
 		</div>
@@ -93,32 +93,40 @@
 	
 	<!-- //착용컷 노출 -->
 	<!-- 상품컷 노출 -->
-	<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') 
-										or #strings.contains(goodsImgList,'_02')
-										or #strings.contains(goodsImgList,'_D1')
-										or #strings.contains(goodsImgList,'_D2')
-										or #strings.contains(goodsImgList,'_D3')
-										or #strings.contains(goodsImgList,'_D4')
-										or #strings.contains(goodsImgList,'_D5')}">
+	<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+										or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+										or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+										or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+										or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+										or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+										or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+										or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+										or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+										or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+										or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
 		<span class="tit_view">PRODUCT VIEW</span>
 		<div class="view">
-			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01') 
-																		or #strings.contains(goodsImg.sysImgNm,'_02')
-																		or #strings.contains(goodsImg.sysImgNm,'_D1')
-																		or #strings.contains(goodsImg.sysImgNm,'_D2')
-																		or #strings.contains(goodsImg.sysImgNm,'_D3')
-																		or #strings.contains(goodsImg.sysImgNm,'_D4')
-																		or #strings.contains(goodsImg.sysImgNm,'_D5')}">
+			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+																		or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+																		or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+																		or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+																		or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+																		or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+																		or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+																		or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+																		or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+																		or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+																		or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
 			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 			</th:block>
 		</div>
 	</div>
 	<!-- //상품컷 노출 -->
 	<!-- 원단 노출 -->
-	<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_S1')}">
+	<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_F1')}">
 		<span class="tit_view">FABRIC</span>
 		<div class="view">
-			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1')}">
+			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_F1')}">
 			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 			</th:block>
 		</div>

+ 91 - 60
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -54,7 +54,7 @@
 									</th:block>
 									<th:block th:each="goodsImg, status : ${goodsImgList}">
 										<div class="swiper-slide" th:classappend="${status.first and videoYn == 'N'}? 'on' : ''"  th:with="count=${(videoYn == 'Y')?  (status.count +1): status.count }"
-																	th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1') 
+																	th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_F1') 
 																			or #strings.contains(goodsImg.sysImgNm,'_L1')
 																			or #strings.contains(goodsImg.sysImgNm,'_L2'))}">
 											<a th:href="${'#navLocate'+ count}">
@@ -87,7 +87,7 @@
 								<th:block th:each="goodsImg, status : ${goodsImgList}" >
 								<th:block th:with="count=${(videoYn == 'Y')?  (status.count +1): status.count }">
 								<li th:id="${'navLocate'+ count}"  th:classappend="${status.first and videoYn == 'N'}? 'on' : ''" 
-									th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1') 
+									th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_F1') 
 												or #strings.contains(goodsImg.sysImgNm,'_L1')
 												or #strings.contains(goodsImg.sysImgNm,'_L2'))}">
 									<a href="javascript:void(0);">
@@ -393,23 +393,26 @@
 											let goodsType = "[[${goodsInfo.goodsType}]]";
 											let selfGoodsYn = "[[${goodsInfo.selfGoodsYn}]]";
 
+											if (!goodsCd) {
+												mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+												return false;
+											}
+
+											if (!goodsQty || goodsQty < 1) {
+												mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+												return false;
+											}
+
 											if(goodsType == "G056_N") {
 												// 자사 상품이 아닐 경우
 												if(selfGoodsYn == "N") {
 													optCd = $(".item_opt2 .select input[name=opt2]").attr("optcd");				// 입점업체 일반 상품
 												}
-												if (!goodsCd) {
-													mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
-													return false;
-												}
+
 												if (!optCd) {
 													mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
 													return false;
 												}
-												if (!goodsQty || goodsQty < 1) {
-													mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
-													return false;
-												}
 
 												let compsList = [];
 												let obj = new Object();
@@ -428,34 +431,54 @@
 												cfnAddCart(compsList);
 											} else {
 												// TODO 세트상품 추가 예정
-												alert("개발 중");
-											}
+												//alert("개발 중");
+												let itemCds = [];
+												let optCds = [];
+												$("#cartForm .area_desc .option_box .opt_set_select .item_opt2 .list>li").each(function() {
+													if($(this).hasClass("selected")) {
+														itemCds.push($(this).find("input[name=opt2]").attr("goodscd"));
+														optCds.push($(this).find("input[name=opt2]").attr("optcd"));
+													}
+												});
 
-											/*$.ajax( {
-												type        : "POST",
-												url         : "/pg/nPayReq",
-												dataType    : 'json',
-												contentType : 'application/json',
-												data        : JSON.stringify(param),
-												async       : false,
-												error: function(xhr, status, error) {
-													alert("!!  " + status + '; ' + error);
-												},
-												success : function(result) {
-													if (result.state == "sucess") {
-														window.open('about:blank', 'popupView');
-														document.nPayForm.target = 'popupView';
-														document.nPayForm.action = "$!{NPAY_ORDER_URL}" + result.orderKey + "/" + result.resultNo;
-														document.nPayForm.submit();
-													} else {
-														alert(result.message);
+												let goodsList = {
+													cartCompsList : new Array()
+												}
+												let cartGoodsList = [];
+												let compsList = [];
+
+												for(let i = 0 ; i < itemCds.length ; i++) {
+													if (!itemCds[i]) {
+														mcxDialog.alert("구성 상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+														return false;
 													}
+													if (!optCds[i]) {
+														mcxDialog.alert("구성 상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+														return false;
+													}
+
+
+
+													let obj = new Object;
+													obj.goodsCd = goodsCd;
+													obj.itemCd = itemCds[i];
+													obj.optCd = optCds[i];
+													obj.goodsQty = goodsQty;
+													obj.goodsType = goodsType;
+													obj.cartGb = "N";
+													obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+													obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+													obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+													obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+													compsList.push(obj);
 												}
-											});*/
 
-											//해당 페이지에서 주문 정보 등록 후 네이버페이 주문서 페이지로 이동.
-											//네이버페이로 주문 정보를 등록하는 가맹점 페이지로 이동.
-											//해당 페이지에서 주문 정보 등록 후 네이버페이 주문서 페이지로 이동.
+												goodsList.cartCompsList = compsList;
+												cartGoodsList.push(goodsList);
+
+												cfnAddCart(cartGoodsList);
+											}
+
 											return false;
 										}
 
@@ -666,21 +689,21 @@
 				<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">
 				
 				<!-- 착용컷 노출 -->
-				<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1') 
-													or #strings.contains(goodsImgList,'_M2')
-													or #strings.contains(goodsImgList,'_M3')
-													or #strings.contains(goodsImgList,'_M4')
-													or #strings.contains(goodsImgList,'_M5')}">
+				<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_C1') 
+													or #strings.contains(goodsImgList,'_C2')
+													or #strings.contains(goodsImgList,'_C3')
+													or #strings.contains(goodsImgList,'_C4')
+													or #strings.contains(goodsImgList,'_C5')}">
 					<span class="tit_view">OUTFIT VIEW</span>
 					<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${status.first}">
 					<span class="model_info" th:text="${goodsImg.modelInfo}">(모델정보 : 185cm / 78kg / XL 착용)</span>
 					</th:block>
 					<div class="view">
-						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1') 
-																					or #strings.contains(goodsImg.sysImgNm,'_M2')
-																					or #strings.contains(goodsImg.sysImgNm,'_M3')
-																					or #strings.contains(goodsImg.sysImgNm,'_M4')
-																					or #strings.contains(goodsImg.sysImgNm,'_M5')}">
+						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_C1') 
+																					or #strings.contains(goodsImg.sysImgNm,'_C2')
+																					or #strings.contains(goodsImg.sysImgNm,'_C3')
+																					or #strings.contains(goodsImg.sysImgNm,'_C4')
+																					or #strings.contains(goodsImg.sysImgNm,'_C5')}">
 						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 						</th:block>
 					</div>
@@ -688,32 +711,40 @@
 				
 				<!-- //착용컷 노출 -->
 				<!-- 상품컷 노출 -->
-				<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') 
-													or #strings.contains(goodsImgList,'_02')
-													or #strings.contains(goodsImgList,'_D1')
-													or #strings.contains(goodsImgList,'_D2')
-													or #strings.contains(goodsImgList,'_D3')
-													or #strings.contains(goodsImgList,'_D4')
-													or #strings.contains(goodsImgList,'_D5')}">
+				<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+													or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+													or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+													or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+													or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+													or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+													or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+													or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+													or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+													or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+													or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
 					<span class="tit_view">PRODUCT VIEW</span>
 					<div class="view">
-						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01.') 
-																					or #strings.contains(goodsImg.sysImgNm,'_02.')
-																					or #strings.contains(goodsImg.sysImgNm,'_D1.')
-																					or #strings.contains(goodsImg.sysImgNm,'_D2.')
-																					or #strings.contains(goodsImg.sysImgNm,'_D3.')
-																					or #strings.contains(goodsImg.sysImgNm,'_D4.')
-																					or #strings.contains(goodsImg.sysImgNm,'_D5.')}">
+						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+																					or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+																					or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+																					or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+																					or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+																					or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+																					or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+																					or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+																					or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+																					or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+																					or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
 						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 						</th:block>
 					</div>
 				</div>
 				<!-- //상품컷 노출 -->
 				<!-- 원단 노출 -->
-				<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_S1')}">
+				<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_F1')}">
 					<span class="tit_view">FABRIC</span>
 					<div class="view">
-						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1')}">
+						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_F1')}">
 						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 						</th:block>
 					</div>

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

@@ -127,7 +127,7 @@
 														<input type="hidden" name="chgReason"/>
 														<div class="select">교환 사유를 선택하세요.</div>
 														<ul class="list">
-															<li class="selected">교환 사유를 선택하세요.</li>
+<!--															<li class="selected">교환 사유를 선택하세요.</li>-->
 															<li th:if="${exchangeReason}" th:each="oneData, status : ${exchangeReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeExchangeReason(this);"></li>
 														</ul>
 													</div>
@@ -174,6 +174,10 @@
 						<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
 							<h4 class="subH3">교환 회수지 주소 <span class="tit_info">택배사에서 교환 상품을 직접 회수할 장소 선택</span></h4>
 							<div class="tbl type1">
+								<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
+								<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
+								<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
+								<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
 								<table>
 									<colgroup>
 										<col width="210">
@@ -193,13 +197,10 @@
 										<tr>
 											<th>주소</th>
 											<td id="chgerAddr">
-												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
+												<span th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
+	<!--											<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>-->
 												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
 											</td>
-											<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
-											<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
-											<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
-											<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
 										</tr>
 									</tbody>
 								</table>
@@ -240,6 +241,12 @@
 						</div>
 						<h4 class="subH3">교환 상품 배송지</h4>
 						<div class="tbl type1">
+							<input type="hidden" name="recipNm" th:value="${deliveryAddrInfo.recipNm}">
+							<input type="hidden" name="recipPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
+							<input type="hidden" name="recipZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
+							<input type="hidden" name="recipBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
+							<input type="hidden" name="recipDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
+							<input type="hidden" name="delvMemo" th:value="${deliveryAddrInfo.delvMemo}">
 							<table>
 								<colgroup>
 									<col width="210">
@@ -270,12 +277,6 @@
 												</ul>
 											</div>
 										</td>
-										<input type="hidden" name="recipNm" th:value="${deliveryAddrInfo.recipNm}">
-										<input type="hidden" name="recipPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
-										<input type="hidden" name="recipZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
-										<input type="hidden" name="recipBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
-										<input type="hidden" name="recipDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
-										<input type="hidden" name="delvMemo" th:value="${deliveryAddrInfo.delvMemo}">
 									</tr>
 								</tbody>
 							</table>
@@ -287,7 +288,7 @@
 							</p>
 						</div>
 						<div class="btn_footer_area">
-							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>취소</span></button>
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST)"><span>취소</span></button>
 							<button type="button" id="btn_confirm_exchange" class="btn btn_dark btn_md" onclick="fnExchange()"><span>교환 신청</span></button>
 						</div>
 					</div>
@@ -321,6 +322,9 @@
 			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
+
+		// 교환사유 선택 처리
+		$('.select_reason .combo .list li').eq(0).click();
 	});
 
 	// 교환 옵션 변경 팝업

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

@@ -174,6 +174,10 @@
 						<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
 							<h4 class="subH3">반품 회수지 주소 <span class="tit_info">택배사에서 반품 상품을 직접 회수할 장소 선택</span></h4>
 							<div class="tbl type1">
+								<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
+								<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
+								<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
+								<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
 								<table>
 									<colgroup>
 										<col width="210">
@@ -193,13 +197,10 @@
 										<tr>
 											<th>주소</th>
 											<td id="chgerAddr">
-												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
+												<span th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
+<!--												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>-->
 												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
 											</td>
-											<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
-											<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
-											<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
-											<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
 										</tr>
 									</tbody>
 								</table>
@@ -409,7 +410,8 @@
 		let accountNm = $('#returnForm input[name=accountNm]').val();
 		let bankCd = $('#returnForm input[name=bankCd]').val();
 
-		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+		//if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+		if (true) {
 			let data = {};
 			data.ordNo = oneData.ordNo;
 			data.accountNm = oneData.accountNm;

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

@@ -598,15 +598,17 @@ var fnChooseFile = function(obj) {
 				); 
 		}else if((new RegExp("mp4", "i")).test(file.name)){
 			setTimeout(function(){
+				$(".imgUpload").find('.pics').eq(0).addClass("mov");
 				$(".pics").children().eq(0).append("<input type='hidden' name='kufKeyArr' id='kufKey"+(picLength+1)+"'>");
 				$(".pics").children().eq(0).append("<input type='hidden' name='kmcKeyArr' id='kmcKey"+(picLength+1)+"'>");
 				gagaKollus.upload('Review', file, $('#kufKey'+(picLength+1)));
-			}, 2000);
+			}, 200);
 		}else{
 			mcxDialog.alertC('첨부할 수 없는 파일 형식입니다.', {
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					$(obj).parent('.imgUpload').find('.removes').trigger('click');
+					//$(obj).parent('.imgUpload').find('.removes').trigger('click');
+					$(".pics").find(".removes").eq(0).trigger('click');
 				}
 			});
 			return false;

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

@@ -319,7 +319,7 @@
 						html+='										<a>';
 						html+='											<div class="pic">';
 						if (attachList[i].fileGb == 'M') {
-							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" class="thumb mov" style="background-image:url(' + _kollusMediaUrl + '/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
+							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" class="thumb mov" style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
 						}else{
 							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" class="thumb" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
 						}

+ 16 - 13
src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html

@@ -126,7 +126,7 @@
 														<input type="hidden" name="chgReason"/>
 														<div class="select">교환 사유를 선택하세요.</div>
 														<ul class="list">
-															<li class="selected">교환 사유를 선택하세요.</li>
+<!--															<li class="selected">교환 사유를 선택하세요.</li>-->
 															<li th:if="${exchangeReason}" th:each="oneData, status : ${exchangeReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeExchangeReason(this);"></li>
 														</ul>
 													</div>
@@ -173,6 +173,10 @@
 						<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
 							<h4 class="subH3">교환 회수지 주소 <span class="tit_info">택배사에서 교환 상품을 직접 회수할 장소 선택</span></h4>
 							<div class="tbl type1">
+								<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
+								<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
+								<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
+								<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
 								<table>
 									<colgroup>
 										<col width="210">
@@ -192,13 +196,9 @@
 										<tr>
 											<th>주소</th>
 											<td id="chgerAddr">
-												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
+												<span th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
 												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
 											</td>
-											<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
-											<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
-											<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
-											<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
 										</tr>
 									</tbody>
 								</table>
@@ -239,6 +239,12 @@
 						</div>
 						<h4 class="subH3">교환 상품 배송지</h4>
 						<div class="tbl type1">
+							<input type="hidden" name="recipNm" th:value="${deliveryAddrInfo.recipNm}">
+							<input type="hidden" name="recipPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
+							<input type="hidden" name="recipZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
+							<input type="hidden" name="recipBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
+							<input type="hidden" name="recipDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
+							<input type="hidden" name="delvMemo" th:value="${deliveryAddrInfo.delvMemo}">
 							<table>
 								<colgroup>
 									<col width="210">
@@ -269,12 +275,6 @@
 												</ul>
 											</div>
 										</td>
-										<input type="hidden" name="recipNm" th:value="${deliveryAddrInfo.recipNm}">
-										<input type="hidden" name="recipPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
-										<input type="hidden" name="recipZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
-										<input type="hidden" name="recipBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
-										<input type="hidden" name="recipDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
-										<input type="hidden" name="delvMemo" th:value="${deliveryAddrInfo.delvMemo}">
 									</tr>
 								</tbody>
 							</table>
@@ -286,7 +286,7 @@
 							</p>
 						</div>
 						<div class="btn_footer_area">
-							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"><span>취소</span></button>
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);"><span>취소</span></button>
 							<button type="button" id="btn_confirm_exchange" class="btn btn_dark btn_md" onclick="fnExchange()"><span>교환 신청</span></button>
 						</div>
 					</div>
@@ -320,6 +320,9 @@
 			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
+
+		// 교환사유 선택 처리
+		$('.select_reason .combo .list li').eq(0).click();
 	});
 
 	// 교환 옵션 변경 팝업

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

@@ -35,7 +35,7 @@
 					<div class="sec_head">
 						<h3 class="subH1">주문상세</h3>
 						<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${ordNo}"></em></span>
-						<button type="button" id="btn_order_cancel" class="btn_underline" onclick="fnDeleteOrder()"><span>삭제하기</span></button>
+						<button type="button" id="btn_order_cancel" class="btn_underline" onclick="fnDeleteOrder('noMember')"><span>삭제하기</span></button>
 					</div>
 					<div class="sec_body">
 						<th:block th:if="${orderList}" th:each="order, status : ${orderList}">

+ 4 - 4
src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html

@@ -172,6 +172,10 @@
 						<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
 							<h4 class="subH3">반품 회수지 주소 <span class="tit_info">택배사에서 반품 상품을 직접 회수할 장소 선택</span></h4>
 							<div class="tbl type1">
+								<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
+								<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
+								<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
+								<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
 								<table>
 									<colgroup>
 										<col width="210">
@@ -194,10 +198,6 @@
 												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
 												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
 											</td>
-											<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
-											<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
-											<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
-											<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
 										</tr>
 									</tbody>
 								</table>

+ 8 - 7
src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html

@@ -306,15 +306,16 @@ var fnOpenDaumAddr = function() {
 						success 	: function(result) {
 							if (result != null) {
 								$('#addr').text(cfnGetDaumRoadAddr(data));
-								if(result.shotYn.shotDelvUseYn == "Y"){
-									$('#shotAdr').text("총알배송");
-									$("#infoTxt").text("오늘 오전 10시까지 주문하시면 오늘 도착합니다. (토, 일, 공휴일 휴무)")
-									
-								}else{
+								if (result.shotYn != null && result.shortYn != '') {
+									if(result.shotYn.shotDelvUseYn == "Y"){
+										$('#shotAdr').text("총알배송");
+										$("#infoTxt").text("오늘 오전 10시까지 주문하시면 오늘 도착합니다. (토, 일, 공휴일 휴무)");
+									}
+								}
+								else{
 									$('#shotAdr').text("일반배송");
-									$("#infoTxt").text("주문시간/배송지에 따라 2~3일 이내 도착합니다. (일, 공휴일 휴무)")
+									$("#infoTxt").text("주문시간/배송지에 따라 2~3일 이내 도착합니다. (일, 공휴일 휴무)");
 								}
-								
 								$("#bulletShipPop").modal("show");
 								
 							}

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

@@ -64,7 +64,7 @@
 							<div class="form_field">
 								<div class="input_wrap">
 									<input type="text" id="accountNo" name="accountNo" class="form_control" maxlength="20" data-valid-type="numeric"  placeholder="계좌번호를 입력해 주세요"/>
-									<button type="button" id="btnAccountCheck" class="btn btn_dark">
+									<button type="button" id="btnAccountCheck" class="btn btn_dark btn_sm">
 										<span>계좌인증</span>
 									</button>
 								</div>

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

@@ -202,7 +202,7 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		}
 		tag += ' "';
 		tag += ' onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
-		tag += '<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\');">';
+		tag += '<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\',\''+item.mainColorCd+'\');">';
 		tag += '			<div class="itemPic">';
 		if(!gagajf.isNull(item.videos)){
 			var videoArr = item.videos.split(",");
@@ -511,6 +511,24 @@ var fnFilterSliderMove = function (min, max){
 	$inputTo.prop("value",max);
 }
 
+var fnDcRateFilterSliderMove = function (min, max){
+	var $range = $(".dp .js-range-slider02, .sch_result .js-range-slider02");
+	var $inputFrom = $("#dcrate_input_from");
+	var $inputTo = $("#dcrate_input_to");
+	var instance;
+
+	instance = $range.data("ionRangeSlider");
+	instance.update({
+		from: min
+	});
+	$inputFrom.val(min);
+
+	instance.update({
+		to: max
+	});
+	$inputTo.prop("value",max);
+}
+
 var fnFilterSlider = function (gubun, min, max){
 	let tag = '';
 	let oriMin = '';

+ 16 - 4
src/main/webapp/biz/mypage.js

@@ -222,18 +222,30 @@ var fnCreateChange = function(param, gubun, noMember) {
 }
 
 // 주문 내역 삭제 처리
-var fnDeleteOrder = function() {
-	mcxDialog.confirm('주문 내역을 삭제하시겠습니까?', {
+var fnDeleteOrder = function(noMember) {
+	mcxDialog.confirm('주문내역을 삭제하시면 더 이상 해당 주문의 내용을 확인 및 교환/반품 등을 할 수 없습니다. 계속 하시겠습니까?', {
 		cancelBtnText: "취소",
 		sureBtnText: "확인",
 		sureBtnClick: function(){
+			let url = '';
+			
+			if (noMember == 'noMember') {
+				url = '/noMember/order/delete';
+			} else {
+				url = '/mypage/order/delete';
+			}
+
 			let data = {};
 			data.ordNo = ordNo;
 
 			var jsonData = JSON.stringify(data);
 
-			gagajf.ajaxJsonSubmit('/mypage/order/delete', jsonData, function() {
-				cfnGoToPage(_PAGE_MYPAGE);
+			gagajf.ajaxJsonSubmit(url, jsonData, function() {
+				if (noMember == 'noMember') {
+					cfnGoToPage(_PAGE_NOMEMBER_MAIN);
+				} else {
+					cfnGoToPage(_PAGE_MYPAGE);
+				}
 			});
 		}
 	});

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

@@ -313,6 +313,7 @@ input[type="file"] {
   display: inline !important;float: left;margin: 0 10px 0 0;width: 7.2rem;height:7.2rem;
   border: 1px solid #dddddd;box-sizing: border-box;position: relative; overflow: hidden;
 }
+.pics.mov::after {content:''; position:absolute; left:0; top:0; width:100%; height:100%; background:rgba(0,0,0,0.3) url('/images/mo/ico_play.png') no-repeat 50% 50%; z-index:0;}
 .picsThumbs {
   width: auto;height: auto;max-height: 7.1rem;max-width:7.1rem;margin: auto 0;
   position: absolute;top: 50%;bottom: auto;left: 50%;right: 0;
@@ -320,7 +321,7 @@ input[type="file"] {
 }
 .removes {
   display: block;width:2rem;height:2rem;font-size: 0;text-align: center;cursor: pointer;background-color: #666666;
-  position: absolute;top: 0;bottom: auto;left: auto;right: 0;
+  position: absolute;top: 0;bottom: auto;left: auto;right: 0; z-index: 1;
 }
 .removes::after {
   content: '';display: inline-block;width: 2rem;height: 2rem;

+ 28 - 36
src/main/webapp/ux/mo/css/layout_m.css

@@ -5,7 +5,8 @@
 .cs .pnb ul{padding-left:1rem;}
 .cs .search_wrap{position: relative;}
 .cs .cs_search_input{font-size:1.5rem; height:4.5rem; width:100%; border:none !important; border-bottom:0.2rem solid #000 !important; position:relative; padding:0 !important;}
-.cs .cs_search_input + button{position:absolute; top:0; right:0; background:url(/images/mo/cs_search_btn.png) center center no-repeat; text-indent:-9999px; width:2.2rem; height:4.5rem;}
+.cs .search_wrap button.btn_sch {position:absolute; top:0; right:0; background:url(/images/mo/cs_search_btn.png) center center no-repeat; text-indent:-9999px; width:2.2rem; height:4.5rem;}
+.cs .search_wrap button.btn_x { width: 2rem; height: 2rem; background: #aaa; border-radius: 1rem; color: #fff; font-size: 1rem; position: absolute; top: 1.2rem; right: 3.2rem; background:#aaa url(/images/mo/ico_sch_del_w.png) no-repeat center; background-size:1.1rem; text-indent:-999em;}
 .cs .inner{background:#fff;}
 .cs .inner > p{margin-top:1rem;}
 .cs .inner.none{position:relative; width:100%; height:31.2rem; color:#808080;}
@@ -140,12 +141,10 @@
 .cs_contactUs_my textarea::placeholder {color:#888; font-weight:200;}
 .cs_contactUs_my .form_field { margin: 0 0 1.2rem; }
 .cs_contactUs_my .form_field {margin-top:1rem}
-.cs_contactUs_my .form_field:first-of-type {margin-top:0; margin-bottom:-0.5rem;}
-.cs_contactUs_my .form_field:first-of-type{margin:0;} /* 재확인 */
+.cs_contactUs_my .form_field:first-of-type {margin:0 0 -0.5rem 0;}
 .cs_contactUs_my .form_field .cellphone {display:block;}
 .cs_contactUs_my .form_field .cellphone input[type="text"]{width:40rem;}
 .cs_contactUs_my .form_field .cellphone .ck_box {display:inline-block;}
-.cs_contactUs_my .form_field .pics{position:absolute; top:0; left:0; z-index:2;}
 .cs_contactUs_my .imgUpload{margin-left:0.6rem;}
 .cs_contactUs_my .imgUpload:first-child{margin: 0;}
 .cs_contactUs_my .info_addfile ul li {font-size: 1.2rem; color: #c6c6c6;}
@@ -449,6 +448,20 @@
 .pd .pd_detail .inner{background: #ffffff;}
 .pd .pd_detail .size{color:#666666}
 .pd .pd_detail .pd_info .inner:nth-of-type(2){background:linear-gradient(to bottom,rgba(255, 255, 255, 0.93) 1%,rgba(255, 255, 255, 1) 25%,rgba(255, 255, 255, 1) 50%,rgba(255, 255, 255, 1) 75%,rgba(255, 255, 255, 1) 100%)}
+.pd .pd_detail .btPopAuto_body .opt_count .number_count span.min_val,
+.pd .pd_detail .btPopAuto_body .opt_count .number_count span.max_val {opacity:0.2;}
+.pd .pd_detail .btPopAuto_body .opt_result .number_count span.min_val,
+.pd .pd_detail .btPopAuto_body .opt_result .number_count span.max_val {opacity:0.2;}
+.pd .pd_detail .btPopAuto_body .size{color:#666666}
+.pd .pd_detail .Purchase_pop{transition:none;}
+.pd .pd_detail .Purchase_pop .btPop_foot{position: absolute;width: 100%;bottom: 0; background: #fff;}
+.pd .pd_detail .Purchase_pop .item_prod .itemPercent{left:10.2rem;}
+.pd .pd_detail .Purchase_pop .item_prod .itemPrice_original{margin-left:0.5rem;}
+.pd .pd_detail .Purchase_pop .select_custom.on .combo .select{border-bottom:1px solid #dcdcdc;}
+.pd .pd_detail .Purchase_pop .select_custom .combo .list>li{padding:1.2rem 4.2rem 1.2rem 1.2rem; line-height:2rem; word-wrap: break-word;}
+.pd .pd_detail .Purchase_pop .select_custom .combo .list>li[data-soldout="true"]::after{top:1rem}
+.pd .pd_detail .Purchase_pop .select_custom .opt_price{font-size:1.2rem; color:#888888}
+.pd .pd_detail .Purchase_pop .btn_box{display:flex;}
 .pd_detail .pd_info > .inner:after, .pd_detail > .inner:after{content: '';width: 100%;height: 1.2rem;padding: 0;background: #f5f5f5;position: absolute;bottom: -1.2rem;left: 0;right: auto;}
 .pd_detail > .inner:last-child::after{content: '';width: 100%;height: 0rem;}
 .pd_detail .pd_info > .inner:last-child {margin-bottom: 1.2rem;padding-bottom: 3rem;}
@@ -589,17 +602,10 @@
 
 /* 재확인할 것 */
 .form_field.mb20{margin-bottom:2rem !important}
-.cs .cs_contactUs_1 .inner.m_pb45{padding-bottom:4.5rem;}
-.btPopAuto_body .opt_count .number_count span.min_val,
-.btPopAuto_body .opt_count .number_count span.max_val {opacity:0.2;}
-.btPopAuto_body .opt_result .number_count span.min_val,
-.btPopAuto_body .opt_result .number_count span.max_val {opacity:0.2;}
-.btPopAuto_body .size{color:#666666}
+/*.cs .cs_contactUs_1 .inner.m_pb45{padding-bottom:4.5rem;}*/
 .opt_name {margin-bottom:0.4rem;}
 .pd_line_box{padding:0.7rem; background:#f5f5f5; width:100%; margin:0 -2rem; display:block; position: absolute; bottom:0;}
 .select_custom .combo .list>li[aria-disabled="true"] .opt_price{color:#bbb !important}
-.dp .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
-.dp .open_categori a{display: inline-block;font-size: 1.2rem;font-weight: 300;padding-right: 1.4rem;background: url(/images/mo/ico_sort_arrow.png) no-repeat;background-position: 97% 50%; background-size: 0.7rem 0.43rem;}
 /* popup_box알수없음 */
 .dp .popup_box .button_list.clear button{width:100% !important;}
 .dp_lookbook ~ .popup_box .popup_con{margin-bottom:5rem}
@@ -810,14 +816,6 @@
 /* 재확인 할 것 */
 .pd_pop.Purchase_pop .btPop_body{max-height:calc(100% - 14%);}
 .pd_pop.Purchase_pop .select_custom .combo .list{position:relative; top:0; margin-top:-0.6rem}
-.Purchase_pop{transition:none;}
-.Purchase_pop .btPop_foot{position: absolute;width: 100%;bottom: 0; background: #fff;}
-.Purchase_pop .item_prod .itemPercent{left:10.2rem;}
-.Purchase_pop .item_prod .itemPrice_original{margin-left:0.5rem;}
-.Purchase_pop .select_custom.on .combo .select{border-bottom:1px solid #dcdcdc;}
-.Purchase_pop .select_custom .combo .list>li{padding:1.2rem 4.2rem 1.2rem 1.2rem; line-height:2rem; word-wrap: break-word;}
-.Purchase_pop .select_custom .combo .list>li[data-soldout="true"]::after{top:1rem}
-.Purchase_pop .select_custom .opt_price{font-size:1.2rem; color:#888888}
 .btPop_open .btPop.Purchase_pop{bottom:0; top:auto!important; height:84%;}
 .btPop_open .btPop.Purchase_pop .btPop_close{width:1.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png);}
 /* 재확인 할 것 */
@@ -827,17 +825,11 @@
 .pd_pop.Purchase_pop .option_box .opt_color{padding-top:0}
 .pd_pop.Purchase_pop .btn_box{}
 .pd_pop.Purchase_pop .btn_box:after{content:''; display:block; clear:both;}
-.pd_pop.Purchase_pop .btn_box button {display: block; height: 5.8rem; line-height: 5.8rem; font-size: 1.6rem; font-weight: 500; float:left; width:43%; color:#fff; border-top:1px solid #ddd; box-sizing:border-box;}
-.pd_pop.Purchase_pop .btn_box button.gift{position:relative; background:#444 url(/images/mo/ico_present_purchase.png) center center no-repeat; background-size:1.8rem; font-size:0; width:14%;}
+.pd_pop.Purchase_pop .btn_box button {display: block; height: 5.8rem; line-height: 5.8rem; font-size: 1.6rem; font-weight: 500; float:left; width:100%; color:#fff; border-top:1px solid #ddd; box-sizing:border-box;}
+.pd_pop.Purchase_pop .btn_box button.gift{position:relative; background:#444 url(/images/mo/ico_present_purchase.png) center center no-repeat; background-size:1.8rem; font-size:0; width:30%;}
 .pd_pop.Purchase_pop .btn_box button.gift > span{position:relative; display:inline-block; width:1.8rem; height:1.9rem;}
 .pd_pop.Purchase_pop .btn_box button.gift > span > span{position:absolute; left:0; top:0; display:inline-block; padding:0.3rem 1rem; font-size:1.2rem; color:#fff; background-color:#fd4801; -webkit-transform:translate(0 ,-125%); transform:translateX(0 ,-125%);}
-.pd_pop.Purchase_pop .btn_box button.gift > span > span{
-    background: #ff7800;
-    background: -moz-linear-gradient(-45deg, #ff7800 0%, #fd4b02 100%);
-    background: -webkit-linear-gradient(-45deg, #ff7800 0%,#fd4b02 100%);
-    background: linear-gradient(135deg, #ff7800 0%,#fd4b02 100%);
-    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff7800', endColorstr='#fd4b02',GradientType=1 );
-}
+.pd_pop.Purchase_pop .btn_box button.gift > span > span{background: #ff7800;background: -moz-linear-gradient(-45deg, #ff7800 0%, #fd4b02 100%);background: -webkit-linear-gradient(-45deg, #ff7800 0%,#fd4b02 100%);background: linear-gradient(135deg, #ff7800 0%,#fd4b02 100%);filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff7800', endColorstr='#fd4b02',GradientType=1 );}
 .pd_pop.Purchase_pop .btn_box button.gift > span > span:after{content:''; display:block; position:absolute; bottom:-1rem; left:0.4rem; border:0.5rem solid transparent; border-bottom-color:#ff7800; -webkit-transform:rotate(180deg); transform:rotate(180deg);}
 .pd_pop.Purchase_pop .btn_box button.cart{background-color:#222222;}
 .pd_pop.Purchase_pop .btn_box button.buyNow{background-color:#fd4801;}
@@ -1015,7 +1007,7 @@
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont {display:none; position:relative;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont::after {content:''; clear:both; display:block;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont:first-of-type {display:block}
-.modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont .img_sizeinfo {display:block; text-align:center; border:0.1rem solid #eeeeee; padding:8rem 3rem;}
+.modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont .img_sizeinfo {display:block; text-align:center; border:0.1rem solid #eeeeee; padding:3rem 3rem;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl {text-align:left; margin-top:3rem; font-size:1.3rem; word-break:keep-all;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl div {padding:0 0 2rem}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl div dt {margin-bottom:0.5rem; color:#222; font-weight:300;}
@@ -1089,7 +1081,7 @@
 /* pd_pop > 상품문의 페이지 */
 .modal.pd_pop.pd_qnalist_pop .modal-header {position:fixed; top:0; left:0; right:0; width:100%; height:auto; border-bottom:1px solid #eee !important; box-sizing:border-box; background:#fff; z-index:11; box-sizing:border-box;}
 .modal.pd_pop.pd_qnalist_pop .modal-body{position:relative; margin:auto; padding:9.3rem 0 3rem;}
-.modal.pd_pop.pd_qnalist_pop .ui_row{margin:0 -1.33rem!important; width:auto;}
+.modal.pd_pop.pd_qnalist_pop .ui_row{margin:0 0 0 -1.3rem!important; width:auto;}
 .modal.pd_pop.pd_qnalist_pop .pd_qnalist > .btn_group_flex{position:fixed; width: 100%; bottom: 0; margin-top: 0;}
 .modal.pd_pop.pd_qnalist_pop .btn_group_flex > div > .btn{height:5.3rem;}
 .pd_qnalist_pop .foldGroup > ul > li{border-bottom:0px none;}
@@ -1108,7 +1100,7 @@
 .pd_qnalist .qna_list .form_field input[type="checkbox"] + label:before,
 .pd_qnalist .qna_list .form_field input[type="checkbox"] + label:after {top:50%; transform:translateY(-50%); margin-top:0;}
 .pd_qnalist .qna_list .foldGroup .fold_head a{padding: 1.4rem 3rem; border-bottom:0.1rem solid #E5E5E5;}
-.pd_qnalist .pd_qnalist .qna_list .foldGroup .fold_head a{padding: 1.4rem 1.6rem; border-bottom:0.1rem solid #E5E5E5;} /* 재확인 할 것 */
+/*.pd_qnalist .pd_qnalist .qna_list .foldGroup .fold_head a{padding: 1.4rem 1.6rem; border-bottom:0.1rem solid #E5E5E5;}*/
 .pd_qnalist .qna_list .foldGroup .fold_head .fold_tit .ico {display:inline-block; width:auto; height:auto; vertical-align:middle;}
 .pd_qnalist .qna_list .foldGroup .fold_head .fold_tit .ico_myqna::after {content:'내문의'; display:inline-block; margin-right:1rem; color:#fd4802; font-size:1.1rem; text-align:center; box-sizing:border-box; line-height:20px;}
 .pd_qnalist .qna_list .foldGroup .fold_head .fold_tit .ico_secret::after {content:''; display:inline-block; margin-right:1rem; width:1.2rem; height:1.2rem; background:url('/images/mo/ico_secret.png') no-repeat 50% 50%; background-size:contain;}
@@ -1137,7 +1129,7 @@
 .modal.pd_pop.pd_qnawrite_pop .form_field .lap{position:relative;}
 .modal.pd_pop.pd_qnawrite_pop .input_box {margin-top:3rem}
 .modal.pd_pop.pd_qnawrite_pop .input_box textarea {display:block; width:100%; height:20rem; padding:1.5rem; color:#222; font-size: 1.2rem; font-weight: 300; box-sizing: border-box;}
-.modal.pd_pop.pd_qnawrite_pop .input_box .txt_cnt {display:block; position:absolute; margin-top:0; right: 1.5rem; bottom: 1.5rem; text-align: right; font-size: 1.2rem; z-index:1;}
+.modal.pd_pop.pd_qnawrite_pop .input_box .txt_cnt {display:block; position:absolute; margin-top:0; right: 1rem; bottom: 0.1rem; text-align: right; font-size: 1.2rem; z-index:1; width:95%; background-color:#fff;}
 .modal.pd_pop.pd_qnawrite_pop .secret_box {margin-top:1rem;}
 .modal.pd_pop.pd_qnawrite_pop .push_box {margin-top:3rem;}
 .modal.pd_pop.pd_qnawrite_pop .push_box dl {display:flex; flex-wrap: wrap; align-items: center; color:#222; font-size:1.3rem;}
@@ -1506,8 +1498,7 @@
 .pd_listDescrp_pop .deal_list_select .list li{border-bottom:0 none;}
 .deal_list_select .select {cursor: pointer;display: inline-block; position: relative;font-size: 1.6rem;color: #333333;width: 100%; height:66px;}
 .deal_list_select .list{background-color:#fff;}
-.deal_list_select .list li{position: relative; border-bottom:1px solid #eeeeee;}
-.deal_list_select .list li {position: relative; display:table; width:100%; box-sizing: border-box; z-index:1;} /* 재확인 할 것 */
+.deal_list_select .list li{position: relative; border-bottom:1px solid #eeeeee; display:table; width:100%; box-sizing: border-box; z-index:1;}
 .deal_list_select .list li:after{content:''; position:absolute; width:100%; height:100%; top:0; left:0; box-sizing:border-box; z-index:2;}
 .deal_list_select .list li:first-child{margin-top:0;}
 .deal_list_select .list li.selected:after{border:1px solid #fd4802;}
@@ -1601,6 +1592,8 @@
 .dp .category_nav ul li:hover button::after, 
 .dp .category_nav ul li button.active::after{content:''; position: absolute; bottom:0; left:0; width:100%; height:2px; background: #fd4802; }
 .dp .category_nav ul li:last-child {margin-right: 0;}
+.dp .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
+.dp .open_categori a{display: inline-block;font-size: 1.2rem;font-weight: 300;padding-right: 1.4rem;background: url(/images/mo/ico_sort_arrow.png) no-repeat;background-position: 97% 50%; background-size: 0.7rem 0.43rem;}
 .dp .dp_util{display:block; float:right; text-align:right; font-size: 0;}
 .dp .dp_util li {display:inline-block; margin-left:2rem; vertical-align:middle;}
 .dp .dp_util li:first-child{margin-left:0;}
@@ -1790,7 +1783,6 @@
 .dp .items_option{margin:0 -2.1rem;}
 .dp .items_option.fix{position:fixed; top:0; z-index:999; width:100%; left:0; margin:0; box-shadow:rgb(0 0 0 / 30%) 0px 3px 15px 0px;}
 .dp .items_option #filter{height:4.5rem; border:0.1rem solid #dddddd; font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
-.dp .items_option #filter{font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;} /* 재확인 */
 
 .dp .dp_listItems_wrap{padding-bottom:3rem;}
 .dp .dp_listItems_wrap.typeSelector{padding-bottom:3rem;margin-bottom: -1.2rem;}

+ 10 - 10
src/main/webapp/ux/mo/css/style24_m.css

@@ -653,7 +653,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .cmt_wrap .cmt_tarea {padding:0 2rem;}
 .cmt_wrap .comment_textarea .input_wrap{display: block;}
 .cmt_wrap .cmt_thumb {padding:0 2rem;}
-.cmt_wrap .cmt_thumb .imgUpload {margin:0 -1%;}
+/* .cmt_wrap .cmt_thumb .imgUpload {margin:0 -1%;} */
 .cmt_wrap .doc_contactus {width: 100%; height: 15rem; padding: 1.5rem; margin:3rem 0 1rem;}
 .cmt_wrap .doc_ans {width: 100%; height: 15rem; padding: 20px; font-size: 1.3rem; line-height: 1.6; color: #888; font-weight: 300; resize:none;}
 .cmt_wrap .txt_cnt {position: absolute; right: 1.6rem; bottom: 1.6rem; margin-top: 0;}
@@ -932,19 +932,19 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 .btn_group_flex > div > .btn {padding:1.2rem 1.3rem;}
 .goods_btn_wrap {display:flex; flex-wrap: wrap; width:100%; align-items:stretch; flex-direction:row;}
-.goods_btn_wrap > div {margin:0px 0.4rem; flex:1;}
+.goods_btn_wrap > div {margin:0 0.4rem 0.5rem 0; flex:1;}
 .goods_btn_wrap > div:first-child {margin-left:0}
 .goods_btn_wrap > div:last-child {margin-right:0}
 .goods_btn_wrap > div > .btn {display:block; width:100%; height:100%; border:1px solid #a7a7a7; font-size: 1.2rem; padding:1rem 1.3rem; font-weight: 500;}
 .goods_btn_wrap > div > .btn.btn_primary {background-color:#fff; border-color:#fd4802; color: #fd4802;}
 
-.goods_btn_wrap.type1 {font-size: 0;}
-.goods_btn_wrap.type1 > div {width: 50%; margin:0; display: inline-block; flex:none;}
-.goods_btn_wrap.type1 > div:first-child {padding-right: 0.4rem; padding-bottom: 0.4rem;}
-.goods_btn_wrap.type1 > div:nth-child(2) {padding-left: 0.4rem; padding-bottom: 0.4rem;}
-.goods_btn_wrap.type1 > div:nth-child(3) {padding-right: 0.4rem; padding-top: 0.4rem;}
-.goods_btn_wrap.type1 > div:nth-child(4) {padding-left: 0.4rem; padding-top: 0.4rem;}
-.goods_btn_wrap.type1 > div > .btn {font-size: 1.4rem;}
+.goods_btn_wrap.col2 {font-size: 0;}
+.goods_btn_wrap.col2 > div {width: 50%; margin:0; display: inline-block; flex:none;}
+.goods_btn_wrap.col2 > div:nth-child(2n) {padding-left: 0.4rem; padding-bottom: 0.4rem;}
+.goods_btn_wrap.col2 > div:nth-child(2n+1) {padding-right: 0.4rem; padding-bottom: 0.4rem;}
+/* .goods_btn_wrap.col2 > div:nth-child(odd) {padding-right: 0.4rem; padding-bottom: 0.4rem;} */
+/* .goods_btn_wrap.col2 > div:nth-child(even) {padding-left: 0.4rem; padding-bottom: 0.4rem;} */
+.goods_btn_wrap.col2 > div > .btn {font-size: 1.4rem;}
 
 /* my_main */
 /* main.container.my .inner:last-child {padding-bottom: 0;} */
@@ -996,7 +996,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 .my .part_goods {position:relative;}
 .my .part_goods:first-child {margin-top: -1.2rem; padding-top:3rem}
-.my .part_goods h3.subH2 span {color:#888; font-size:16px; font-weight:200;}
+.my .part_goods h3.subH2 span {color:#888; font-size:1.6rem; font-weight:200;}
 .my .part_goods .goods_section {padding-bottom: 2.4rem; margin-bottom: 2.4rem; border-bottom: 1px solid #eee;}
 .my .part_goods .goods_section:last-of-type {margin-bottom: 0; border-bottom: 0;}
 .my .part_goods .btn_area {position:absolute; right:0; top:-8px; z-index:2;}

+ 43 - 19
src/main/webapp/ux/mo/js/common_m.js

@@ -153,6 +153,7 @@ $(document).ready(function() {
                 var cmtIn = $('.form_field .imgUpload input');
                 var myrvLa = $('.form_field .imgUpload label');
                 var myrvIn = $('.form_field .imgUpload input');
+
                 for (var i = 0; i < filesLength; i++) {
                     var f = files[i]
                     var fileReader = new FileReader();
@@ -160,7 +161,7 @@ $(document).ready(function() {
                         var file = e.target;
                         console.log(file);
                         $("<span class=\"pics\">" +
-                            "<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
+                            "<img class=\"picsThumbs\" src=\"" + e.target.result + "\"/>" +
                             "<br/><span class=\"removes\">Removes image</span>" +
                             "</span>").insertBefore(".fileAdd");
                         $(".removes").click(function(){
@@ -176,11 +177,7 @@ $(document).ready(function() {
                 fileReader.readAsDataURL(f);
                     var maxFileLength = 10; /* 최대 파일 갯수를 입력해 주세요 */
                     var imgFiles=$('.imgUpload .pics');
-                    var cmtLa = $('.form_field .imgUpload label');
-                    var cmtIn = $('.form_field .imgUpload input');
-                    var myrvLa = $('.form_field .imgUpload label');
-                    var myrvIn = $('.form_field .imgUpload input');
-                    console.log(imgFiles.length)
+
                     if (imgFiles.length >= maxFileLength-1) {
                         //mcxDialog.alert('이미지는 최대' + maxFileLength +'장 까지 첨부 가능합니다.'); //210507_삭제
                         $('#fileAdd').attr("disabled",true);
@@ -198,27 +195,42 @@ $(document).ready(function() {
         }
     });
 
+    //210514_ 수정 : 파일첨부가 최대 2개일 경우 스크립트 수정.
     // input-File-Adds
     $(document).ready(function() {
         if (window.File && window.FileList && window.FileReader) {
             $("#fileAdds").on("change", function(e) {
                 var files = e.target.files,
                     filesLength = files.length;
+                var cmtLa = $('.form_field .imgUpload label');
                 for (var i = 0; i < filesLength; i++) {
                     var f = files[i]
                     var fileReader = new FileReader();
                     fileReader.onload = (function(e) {
                         var file = e.target;
                         $("<span class=\"pics\">" +
-                            "<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
+                            "<img class=\"picsThumbs\" src=\"" + e.target.result + "\"/>" +
                             "<br/><span class=\"removes\">Removes image</span>" +
-                            "</span>").insertAfter("#fileAdds");
+                            "</span>").insertBefore(".fileAdd");
                         $(".removes").click(function(){
+                            cmtLa.css('display', 'block');
+                            $(this).parent(".pics").closest(".imgUpload").children("input").val("");
                             $(this).parent(".pics").remove();
+                            $('#fileAdds').removeAttr("disabled");
                         });
                     });
                 fileReader.readAsDataURL(f);
-                }
+                    var maxFileLength = 2; /* 최대 파일 갯수를 입력해 주세요 */
+                        var imgFiles=$('.imgUpload .pics');
+                        
+                        if (imgFiles.length >= maxFileLength-1) {
+                            //mcxDialog.alert('이미지는 최대' + maxFileLength +'장 까지 첨부 가능합니다.'); //210507_삭제
+                            $('#fileAdds').attr("disabled",true);
+                            cmtLa.css('display', 'none');
+                        } else if(imgFiles.length < maxFileLength){
+                            $('#fileAdds').removeAttr("disabled");
+                        }
+                    }
             });
         } else {
             alert("브라우저가 File API를 지원하지 않습니다.")
@@ -813,16 +825,16 @@ $(document).ready(function () {
         //});
 
         // 210407_텍스트 카운팅
-        $('.doc_itemqna').keyup(function (e){
-            var content = $(this).val();
-            $('#itemqna_cnt').html("<em class='c_primary'>"+content.length+"</em>/500자");//글자수 실시간 카운팅
+        //$('.doc_itemqna').keyup(function (e){
+        //    var content = $(this).val();
+        //    $('#itemqna_cnt').html("<em class='c_primary'>"+content.length+"</em>/500자");//글자수 실시간 카운팅
         
-            if (content.length > 200){
-                mcxDialog.alert("최대 500자까지 입력 가능합니다."); //210420_수정 : 시스템 alert -> dialog 변경.
-                $(this).val(content.substring(0, 500));
-                $('#itemqna_cnt').html("<em class='c_primary'>500</em>/500자");
-            }
-        });
+        //    if (content.length > 200){
+        //        mcxDialog.alert("최대 500자까지 입력 가능합니다."); //210420_수정 : 시스템 alert -> dialog 변경.
+        //        $(this).val(content.substring(0, 500));
+        //        $('#itemqna_cnt').html("<em class='c_primary'>500</em>/500자");
+        //    }
+        //});
 
         // 210407_스크롤감지 헤더 그림자
         $('.pd_delivery_pop').scroll(function(){
@@ -963,7 +975,19 @@ $( document ).ready( function() {
         //     $("body").css({"overflow":"visible"});
         // })
 
-        
+        $(window).on('mousewheel',function(e){
+            var wheel = e.originalEvent.wheelDelta;
+            //스크롤값을 가져온다.
+            if(wheel>0){
+            //스크롤 올릴때
+            $("header").css('display', 'block');
+            $("header").css('position', 'fixed');
+            } else {
+            //스크롤 내릴때
+            $("header").css('display', 'none');
+            $("header").css('position', 'fixed');
+            }
+        });
 
 });
 // $(window).load(function() {

+ 6 - 3
src/main/webapp/ux/pc/css/common.css

@@ -459,10 +459,9 @@ background-color: #fe970a;border-color: #fe970a;color:#ffffff;
 /* btn linktext */
 a[class*="link"]::after, .btn_link span::after {
 content: "〉";font-size: 12px;padding-left: 8px;
-/* 아이콘 이미지 넣을것 , content 제거 */
   /* background:url(/images/pc/icon/ico_arrow.gif) no-repeat right 3px; */
 }
-.pd a[class*="link"]::after, .pd .btn_link span::after {content: "";}
+.npay_button a[class*="link"]::after, .npay_button .btn_link span::after {content: "";}
 .btn_link, .btn_link:hover, .btn_link:focus, .btn_link:active {border-color: transparent;}
 .btn_link:hover, .btn_link:focus {color: #2a6496;text-decoration:none;background-color: transparent;}
 .btn_link:hover, .btn_link:focus, .btn_link:active, .btn_link.active {color: #222222;background-color: transparent;border-color: transparent;}
@@ -1045,6 +1044,10 @@ input[type="file"] {
   display: inline !important;float: left;margin: 0 10px 0 0;width: 150px;height:150px;
   border: 1px solid #dddddd;box-sizing: border-box;position: relative;
 }
+
+.pics.mov {position: relative;}
+.pics.mov::after {content:''; position:absolute; left:0; top:0; width:100%; height:100%; background:rgba(0,0,0,0.3) url('/images/pc/ico_play.png') no-repeat 50% 50%; z-index:1;}
+
 .picsThumbs {
   width: auto;height: auto;max-height: 148px;max-width: 148px;margin: auto 0;
   position: absolute;top: 50%;bottom: auto;left: 50%;right: 0;
@@ -1052,7 +1055,7 @@ input[type="file"] {
 }
 .removes {
   display: block;width: 21px;height: 21px;font-size: 0;text-align: center;cursor: pointer;background-color: #666666;
-  position: absolute;top: 0;bottom: auto;left: auto;right: 0;
+  position: absolute;top: 0;bottom: auto;left: auto;right: 0; z-index: 2;
 }
 .removes::after {
   content: '';display: inline-block;width: 21px;height: 21px;

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

@@ -2342,11 +2342,12 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.odPayment .fold_cont .area_receiveinfo.none {padding:0 0 30px;}
 	.odPayment .fold_cont .area_receiveinfo > dl > div {margin-top:15px; min-height:16px}
 	.odPayment .fold_cont .area_receiveinfo > dl > div:first-child {margin-top:0}
-	.odPayment .fold_cont .area_receiveinfo > dl > div:last-child {margin-top: 5px;}
+	.odPayment .fold_cont .area_receiveinfo > dl > div:last-child {margin-top: 10px;}
+	.odPayment .fold_cont .area_receiveinfo > dl > div:nth-child(3) {line-height: 1.4;}
 	.odPayment .fold_cont .area_receiveinfo > dl > div dt {position:relative; padding-right:10px; margin-right:10px; font-weight:200;}
 	.odPayment .fold_cont .area_receiveinfo > dl > div:last-child dt::after {content:':'; position:absolute; right:-2px; top:-1px;}
 	.odPayment .fold_cont .area_receiveinfo > dl > div dd {min-height:16px}
-	.odPayment .fold_cont .area_receiveinfo > dl > div dd .btn {vertical-align:top; margin-top:-9px; margin-left:15px}
+	.odPayment .fold_cont .area_receiveinfo > dl > div dd .btn {margin-left:15px}
 	.odPayment .fold_cont .area_receiveinfo > dl > div dd .btn_underline {margin-left:12px}
 	.odPayment .fold_cont .area_receiveinfo .icon_tag {margin-top:-3px; margin-left:4px}
 
@@ -4402,7 +4403,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 
 
-	/* 이용약관,개인정보취급방침 */
+	/* 이용약관,개인정보취급방침,업체리스트 */
 	.ps .cont_head > div h3{text-align: center;margin-bottom: 0;padding-bottom: 60px;font-size: 40px;line-height: 1;}
 	.ps .cont_body {width: 1200px;margin: 0 auto;}
 	.ps p {font-size:16px;color:#666666;line-height:26px;letter-spacing:-0.025em;}
@@ -4413,6 +4414,13 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.ps table td {border-bottom:1px solid #ddd;border-right: 1px solid #ddd;font-weight:200;}
 	.ps table td:last-child {border-right: 1px solid transparent;}
 	.ps table th {border-top: 1px solid #000;border-bottom:1px solid #000;border-right: 1px solid transparent;font-weight:500;text-align:center;}
+	.modal.psptn_pop {max-width: none;width: 620px;padding: 60px 60px;}
+	.ps.ptn {border: 0;}
+	.ps.ptn table {margin-top:0;}
+	.ps.ptn table th, .ps.ptn table td {text-align: center;padding: 16px 0;}
+	.ps.ptn table th {font-size: 14px; font-weight: 500; line-height:14px;border-bottom: 1px solid #ddd;}
+	.ps.ptn table td {font-size: 14px; font-weight: 200; line-height: 14px;border-right: 0px solid #ddd;}
+	.ps.ptn .pager {padding-top: 20px;}
 	.hookGrp{margin-top: 40px;}
 	.hookGrp .hook_list{border: 1px solid #f5f5f5;padding: 40px;}
 	.hookGrp .hook_list ul{}

+ 11 - 3
src/main/webapp/ux/pc/js/common-ui.js

@@ -91,7 +91,7 @@ $(document).ready(function() {
 					var file = e.target;
 					console.log(file);
 					$("<span class=\"pics\">" +
-						"<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
+						"<img class=\"picsThumbs\" src=\"" + e.target.result + "\"/>" +
 						"<br/><span class=\"removes\">Removes image</span>" +
 						"</span>").insertAfter("#fileAdd");
 					$(".removes").click(function(){
@@ -688,8 +688,16 @@ $(document).ready( function() {
 				sureBtnText: "확인",
 			});
 		}else {
-			$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
-			$(this).toggleClass('on');
+			$('.fold_head').removeClass('on');
+            $('.fold_cont').slideUp(100);
+            //$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
+            //$(this).parents('.fold_head').toggleClass('on');
+            if(!$(this).parents('.foldGroup li').find('.fold_cont').is(":visible")){
+                $(this).parents('.foldGroup li').find('.fold_cont').slideDown(100);
+                $(this).toggleClass('on');
+            }
+			//$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
+			//$(this).toggleClass('on');
 		}
 	});
 	

+ 182 - 0
src/main/webapp/ux/plugins/approval_key.js

@@ -0,0 +1,182 @@
+    var ajax_flag = true;
+    var req01_AJAX;
+    var PayUrl="";
+
+    function initRequest()
+    {
+        if ( window.XMLHttpRequest )
+        {
+            return new XMLHttpRequest();
+        } else if ( window.ActiveXObject )
+        {
+            return new ActiveXObject( "Microsoft.XMLHTTP" );
+        }
+    }
+
+    function sendRequest( url )
+    {
+        req01_AJAX = null;
+        req01_AJAX = initRequest();
+
+        if ( req01_AJAX )
+        {
+            req01_AJAX.onreadystatechange = process_AJAX;
+            req01_AJAX.open( "POST", url, true );
+            req01_AJAX.send( null );
+        }
+    }
+
+    function kcp_AJAX()
+    {
+        // 해당 소스는 jQuery를 사용 하지 않는 업체에서도 작동 할수 있도록 구현되었습니다.
+        // 이 부분은 javascript로 구현시 jQuery를 이용하면 더욱 쉽게 구현 할수 있습니다. 
+        // 또는
+        // javascript를 통한 ajax 통신을 할 필요 없이 소스내에 order_approval.jsp를 연동해서 사용 하셔도 관계 없으며
+        // 제공되는 jar 파일에 직접 전달된 데이터를 사용할수 있도록 method가 구현 되어 있습니다.
+        if(ajax_flag)
+        {
+            var url    = "order_approval.jsp";
+            var form = document.order_info;
+            var params = "?site_cd=" + form.site_cd.value
+                       + "&ordr_idxx=" + form.ordr_idxx.value
+                       + "&good_mny=" + form.good_mny.value
+                       + "&pay_method=" + form.pay_method.value
+                       + "&escw_used=" + form.escw_used.value
+                       + "&good_name=" + form.good_name.value
+                       + "&response_type=" + form.response_type.value
+                       + "&Ret_URL=" + form.Ret_URL.value;
+            sendRequest( url + params );
+            
+            ajax_flag = false;
+        }
+        else
+        {
+            alert("통신 중입니다. 잠시만 기다려 주세요.");
+        }
+            
+    }
+
+    function process_AJAX()
+    {
+        if ( req01_AJAX.readyState == 4 ) //READY_STATE_COMPLETE = 4
+        {
+            if ( req01_AJAX.status == 200 )
+            {
+                if ( req01_AJAX.responseText != null )
+                {
+                    // 해당 소스는 jQuery를 사용 하지 않는 업체에서도 작동 할수 있도록 구현되었습니다.
+                    // 이 부분은 javascript로 구현시 jQuery를 이용하면 더욱 쉽게 구현 할수 있습니다. 
+                    // 또는
+                    // javascript를 통한 ajax 통신을 할 필요 없이 소스내에 order_approval.jsp를 연동해서 사용 하셔도 관계 없으며
+                    // 제공되는 jar 파일에 직접 전달된 데이터를 사용할수 있도록 method가 구현 되어 있습니다.
+                    try
+                    {
+                        var form = document.order_info;
+                        
+                        if( form.response_type.value == "JSON" )
+                        {
+                            StateChangeForJSON( req01_AJAX ); // JSON 방식일 경우
+                        }
+                        else if( form.response_type.value == "XML" )
+                        {
+                            StateChangeForXML( req01_AJAX ); // XML 방식일 경우
+                        }
+                        else if( form.response_type.value == "TEXT" || form.response_type.value == "" )
+                        {
+                            StateChangeForText( req01_AJAX ); // TEXT 방식일 경우
+                        }
+                    }
+                    catch( e )
+                    {
+                        StateChangeForText( req01_AJAX ); // TEXT 방식일 경우
+                    }
+                }
+            }
+            else
+            {
+                ajax_flag=true;
+                alert( req01_AJAX.responseJSON );
+            }
+        }
+    }
+    
+    function StateChangeForText( req )
+    {
+        var txt = req01_AJAX.responseText.split( ":" );
+
+        if( txt[0].replace(/^\s*/,'').replace(/\s*$/,'') == '0000' )
+        {
+            document.getElementById( "approval" ).value = txt[1].replace(/^\s*/,'').replace(/\s*$/,'');
+            // 아래 alert는 삭제 해도됨
+            alert("성공적으로 거래가 등록 되었습니다.");
+            PayUrl = decodeURIComponent( txt[2].replace(/^\s*/,'').replace(/\s*$/,'') );
+            
+            document.getElementById( "traceNo" ).value = txt[3].replace(/^\s*/,'').replace(/\s*$/,'');
+            
+            if( txt.length == 6 )
+            document.getElementById( "PayUrl"  ).value = txt[5].replace(/^\s*/,'').replace(/\s*$/,'');
+            
+            call_pay_form();
+        }
+        else
+        {
+            var res_msg = txt[2].replace(/^\s*/,'').replace(/\s*$/,'');
+            
+            ajax_flag=true;
+            alert("실패 되었습니다.[" + res_msg + "]");
+        }
+    }
+    
+    function StateChangeForXML( req )
+    {
+        var xmlDoc = ( new DOMParser() ).parseFromString( req.responseText.replace(/^\s*/,'').replace(/\s*$/,''), "text/xml" ).documentElement;
+        
+        var x = xmlDoc.getElementsByTagName( "data" );
+        
+        if( x[0].getElementsByTagName( "Code" )[0].childNodes[0].nodeValue == '0000' )
+        {
+            document.getElementById( "approval" ).value = x[0].getElementsByTagName( "approvalKey" )[0].childNodes[0].nodeValue;
+            // 아래 alert는 삭제 해도됨
+            alert("성공적으로 거래가 등록 되었습니다.");
+            PayUrl = x[0].getElementsByTagName( "PayUrl" )[0].childNodes[0].nodeValue;
+            
+            document.getElementById( "traceNo" ).value = x[0].getElementsByTagName( "traceNo"     )[0].childNodes[0].nodeValue;
+            
+            try{
+                document.getElementById( "PayUrl"  ).value = x[0].getElementsByTagName( "request_URI" )[0].childNodes[0].nodeValue;
+            }catch(e){}
+            
+            call_pay_form();
+        }
+        else
+        {
+            ajax_flag=true;
+            
+            alert("실패 되었습니다.[" + x[0].getElementsByTagName( "Message" )[0].childNodes[0].nodeValue + "]");
+        }
+    }
+    
+    
+    function StateChangeForJSON( xmlHttpRequest )
+    {
+        var json = eval('('+ xmlHttpRequest.responseText +')');
+        
+        if( json.Code == '0000' )
+        {
+            document.getElementById( "approval" ).value = json.approvalKey;
+            // 아래 alert는 삭제 해도됨
+            alert("성공적으로 거래가 등록 되었습니다.");
+            PayUrl = json.PayUrl;
+            
+            document.getElementById( "PayUrl"  ).value = json.request_URI;
+            document.getElementById( "traceNo" ).value = json.traceNo;
+            
+            call_pay_form();
+        }
+        else
+        {
+            ajax_flag=true;
+            
+            alert("실패 되었습니다.[" + json.Message + "]");
+        }
+    }

+ 8 - 8
src/main/webapp/ux/style24_link.js

@@ -81,6 +81,7 @@ const _PAGE_WISHLIST_PUT = _frontUrl + "/mypage/wish/list/put";						// 위시
 const _PAGE_WISHLIST_DEL = _frontUrl + "/mypage/wish/list/delete";					// 위시리스트 삭제
 
 //== 마이페이지 ==/
+const _PAGE_NOMEMBER_MAIN = _frontUrl + "/noMember/main/form";						// 비회원 > 메인
 const _PAGE_NOMEMBER_ORDER_LIST = _frontUrl + "/noMember/order/list/form";			// 비회원 > 주문확인/배송조회
 const _PAGE_NOMEMBER_ORDER_DETAIL = _frontUrl + "/noMember/order/detail/form/";		// 비회원 > 주문/배송 상세
 const _PAGE_NOMEMBER_CRE_LIST = _frontUrl + "/noMember/cre/list/form";				// 비회원 > 취소/교환/반품 목록
@@ -290,12 +291,12 @@ function cfnAddCart(cartList) {
 								// 장바구니 수량 조회
 								$.getJSON('/cart/goods/not/soldout/cnt', function (order, status) {
 									let cartCnt;
-									if (order.totCartCnt > 99) {
+									if (order.cartGoodsList.length > 99) {
 										cartCnt = "99+";
 									} else {
-										cartCnt = order.totCartCnt;
+										cartCnt = order.cartGoodsList.length;
 									}
-									
+
 									$("header #htopSub .button_wrap .store>span").text(cartCnt);
 								});
 							}
@@ -1135,13 +1136,12 @@ var cfnGoToCategoryMain = function(cateGb, cate1No, brandGroupNo) {
  *		cfnGoToOutletMain('G032_103', 1713);
  * </pre>
  * @param  : cateGb - 카테고리구분. 필수
- * @param  : cate1No - 카테고리1번호. 필수
+ * @param  : cate1No - 카테고리1번호. 옵션
  * @since  : 2021/04/20
  * @author : bin2107
  */
-var cfnGoToOutletMain = function(cateGb, cate1No) {
-	var params = '?cateGb=' + cateGb + '&cate1No=' + cate1No;
-	// if (typeof (brandGroupNo) != 'undefined') params += '&brandGroupNo=' + brandGroupNo;
+var cfnGoToOutletMain = function(cateGb) {
+	var params = '?cateGb=' + cateGb;
 	cfnGoToPage(_PAGE_OUTLET_MAIN + params);
 }
 
@@ -1238,7 +1238,7 @@ var cfnGoToPollDetail = function (planSq) {
  */
 var cfnGoToLookbookList = function (lookbookGb, brandGroupNo) {
 	var params = '?lookbookGb='+lookbookGb;
-	if (typeof (brandGroupNo) != 'undefined') params += '&brandCd=' + brandGroupNo;
+	if (typeof (brandGroupNo) != 'undefined') params += '&brandGroupNo=' + brandGroupNo;
 
 	cfnGoToPage(_PAGE_LOOKBOOK_MAIN + params);
 }