Browse Source

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

gagamel 5 năm trước cách đây
mục cha
commit
dc7219438e
46 tập tin đã thay đổi với 635 bổ sung293 xóa
  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. 3 1
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  4. 0 3
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  5. 1 0
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  6. 0 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  7. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  8. 3 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  9. 7 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  10. 4 2
      src/main/resources/config/application-locd.yml
  11. 10 5
      src/main/resources/config/application-tsit.yml
  12. 2 2
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  13. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html
  14. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  15. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html
  16. 19 16
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  17. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  18. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  19. 16 13
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html
  20. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html
  21. 1 0
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  22. 1 3
      src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html
  23. 9 7
      src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html
  24. 4 4
      src/main/webapp/WEB-INF/views/web/cart/CartDelvFeeSaveGoodsPopupWeb.html
  25. 6 6
      src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html
  26. 2 0
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  27. 12 8
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  28. 1 1
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  29. 55 32
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  30. 17 13
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  31. 8 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  32. 4 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  33. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  34. 16 13
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html
  35. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html
  36. 4 4
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html
  37. 8 7
      src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html
  38. 1 1
      src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html
  39. 16 4
      src/main/webapp/biz/mypage.js
  40. 4 4
      src/main/webapp/ux/mo/css/common_m.css
  41. 2 2
      src/main/webapp/ux/mo/js/common_m.js
  42. 6 3
      src/main/webapp/ux/pc/css/common.css
  43. 11 3
      src/main/webapp/ux/pc/css/layout.css
  44. 11 3
      src/main/webapp/ux/pc/js/common-ui.js
  45. 182 0
      src/main/webapp/ux/plugins/approval_key.js
  46. 4 3
      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. 배송정보조회

+ 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;
 	}
 }

+ 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;

+ 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">

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

@@ -2246,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

+ 3 - 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 /*현재 전시되는 코너*/

+ 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);

+ 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>

+ 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>';
 								}

+ 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>

+ 55 - 32
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -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;
 										}
 

+ 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>

+ 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);
+				}
 			});
 		}
 	});

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

@@ -313,7 +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:2;}
+.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;
@@ -321,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; z-index: 3;
+  position: absolute;top: 0;bottom: auto;left: auto;right: 0; z-index: 1;
 }
 .removes::after {
   content: '';display: inline-block;width: 2rem;height: 2rem;
@@ -657,8 +657,8 @@ body.gnb_on {height: 100vh;overflow: hidden;}
 .app {height: 100vh;font-size: 1.4rem;}
 .skipNav {overflow: hidden;position: absolute;left: -9999px;width: 0;height: 1px;margin: 0;padding: 0;}
 
-.inner {padding: 0 2.0rem 1.3rem 2.0rem;position: relative;overflow: hidden;}
-.inner.wide {padding: 0 0rem 1.3rem 0rem;position: relative;overflow: hidden;}
+.inner {padding: 0 2.0rem 1.3rem 2.0rem;position: relative;}
+.inner.wide {padding: 0 0rem 1.3rem 0rem;position: relative;}
 .inner::after {content: '';display: block;clear: both;}
 .inner.bg_gray {background-color: #f5f5f5;}
 .inner.bg_beige {background-color: #ffeee7;}

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

@@ -161,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(){
@@ -209,7 +209,7 @@ $(document).ready(function() {
                     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>").insertBefore(".fileAdd");
                         $(".removes").click(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 + "]");
+        }
+    }

+ 4 - 3
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);
 								});
 							}