Просмотр исходного кода

Merge remote-tracking branch 'origin/develop' into jsh77b

jsh77b 4 лет назад
Родитель
Сommit
793c19edda
28 измененных файлов с 496 добавлено и 119 удалено
  1. 7 0
      src/main/java/com/style24/front/biz/dao/TsfRendererDao.java
  2. 2 1
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  3. 11 0
      src/main/java/com/style24/front/biz/service/TsfRendererService.java
  4. 7 1
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  5. 28 21
      src/main/java/com/style24/front/biz/web/TsfNoMemberController.java
  6. 10 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfRenderer.xml
  7. 1 0
      src/main/resources/config/application-locd.yml
  8. 3 2
      src/main/resources/config/application-style.yml
  9. 4 1
      src/main/webapp/WEB-INF/views/mob/display/BrandSearchLayerMob.html
  10. 3 0
      src/main/webapp/WEB-INF/views/mob/display/SearchLayerMob.html
  11. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  12. 13 6
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  13. 48 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  14. 46 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html
  15. 48 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html
  16. 48 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberReturnFormMob.html
  17. 2 0
      src/main/webapp/WEB-INF/views/web/display/BrandSearchLayerWeb.html
  18. 1 1
      src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html
  19. 3 0
      src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html
  20. 56 27
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  21. 53 25
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  22. 29 0
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html
  23. 53 24
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html
  24. 9 1
      src/main/webapp/ux/mo/css/common_m.css
  25. 4 2
      src/main/webapp/ux/mo/css/layout_m.css
  26. 1 1
      src/main/webapp/ux/mo/css/style24_m.css
  27. 1 0
      src/main/webapp/ux/pc/css/common.css
  28. 4 2
      src/main/webapp/ux/pc/css/layout.css

+ 7 - 0
src/main/java/com/style24/front/biz/dao/TsfRendererDao.java

@@ -23,4 +23,11 @@ public interface TsfRendererDao {
 	 */
 	Collection<CommonCode> getCommonCodeList(CommonCode commoncode);
 
+	/**
+	 * 택배사명 목록 조회
+	 * @return CommonCode
+	 * @author moon
+	 * @since 2020. 11. 05
+	 */
+	Collection<CommonCode> getShipCompanyList(CommonCode data);
 }

+ 2 - 1
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -2306,9 +2306,10 @@ public class TsfOrderService {
 
 		if (StringUtils.isNotBlank(itemId)) {
 			String popupUrl = env.getProperty("naverPay.zzim.popup.url");
-			log.info("popupUrl >>> {}", popupUrl);
+			String mobileUrl = env.getProperty("naverPay.zzim.mobile.url");
 			result.put("state", "success");
 			result.put("action", popupUrl);
+			result.put("actionMobile", mobileUrl);
 			result.put("shopId", shopId);
 			result.put("itemId", itemId);
 		} else {

+ 11 - 0
src/main/java/com/style24/front/biz/service/TsfRendererService.java

@@ -108,4 +108,15 @@ public class TsfRendererService {
 		return this.getCommonCodeList(commoncode);
 	}
 
+	/**
+	 * 택배사명 목록 조회
+	 * @return CommonCode
+	 * @author moon
+	 * @since 2020. 11. 05
+	 */
+	public Collection<CommonCode> getShipCompanyList() {
+		CommonCode data = new CommonCode();
+		data.setUseYn("Y");
+		return rendererDao.getShipCompanyList(data);
+	}
 }

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

@@ -7,7 +7,6 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.gagaframework.web.parameter.GagaParameterUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -23,6 +22,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.parameter.GagaParameterUtil;
 import com.gagaframework.web.rest.server.GagaResponse;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.gagaframework.web.util.GagaCookieUtil;
@@ -458,6 +458,9 @@ public class TsfMypageController extends TsfBaseController {
 		// 교환 사유 목록 조회
 		mav.addObject("exchangeReason", rendererService.getCommonCodeList("G689", "Y"));
 
+		// 2021.08.26 card007 택배사목록 추가
+		mav.addObject("shipCompanyList", rendererService.getShipCompanyList());
+
 		mav.setViewName(super.getDeviceViewName("/mypage/MypageExchangeForm"));
 
 		return mav;
@@ -736,6 +739,9 @@ public class TsfMypageController extends TsfBaseController {
 		// 2021.05.03 은행목록추가
 		mav.addObject("bankList", rendererService.getCommonCodeList("G942", "Y"));
 
+		// 2021.08.26 card007 택배사목록 추가
+		mav.addObject("shipCompanyList", rendererService.getShipCompanyList());
+
 		mav.setViewName(super.getDeviceViewName("/mypage/MypageReturnForm"));
 
 		return mav;

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

@@ -690,6 +690,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		// 2021.05.03 은행목록추가
 		mav.addObject("bankList", rendererService.getCommonCodeList("G942", "Y"));
 
+		// 2021.08.26 card007 택배사목록 추가
+		mav.addObject("shipCompanyList", rendererService.getShipCompanyList());
+
 		mav.setViewName(super.getDeviceViewName("/mypage/NoMemberReturnForm"));
 
 		return mav;
@@ -721,35 +724,36 @@ public class TsfNoMemberController extends TsfBaseController {
 		}
 
 		// 2. 환불 사전 정보 조회
-		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo(orderChange);
-		List<Order> returnReqList = (List<Order>)refundPreInfo.get("cnclReqList");
+		GagaMap refundPreInfo 		= coreOrderChangeService.getRefundPreInfo(orderChange);
+		List<Order> returnReqList 	= (List<Order>)refundPreInfo.get("cnclReqList");
 
 		// 3. 환불금액계산
-		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(returnReqList);
+		GagaMap result 				= coreOrderRefundService.cnclRtnRefundAmt(returnReqList);
 
 		// 4. 주문변경 기본정보 설정
-		result.set("ordNo", orderChange.getOrdNo());					// 주문번호
-		result.setInt("custNo", 0);										// 고객번호
-		result.set("chgReason", orderChange.getChgReason());			// 변경사유
-		result.set("chgMemo", orderChange.getChgMemo());				// 변경메모
+		result.set("ordNo"			, orderChange.getOrdNo());				// 주문번호
+		result.set("custNo"			, 0);									// 고객번호
+		result.set("chgReason"		, orderChange.getChgReason());			// 변경사유
+		result.set("chgMemo"		, orderChange.getChgMemo());			// 변경메모
 
-		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
-		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
-		result.set("bankCd", orderChange.getBankCd());					// 환불계좌은행코드
+		result.set("accountNo"		, orderChange.getAccountNo());			// 환불계좌번호
+		result.set("accountNm"		, orderChange.getAccountNm());			// 환불계좌예금주명
+		result.set("bankCd"			, orderChange.getBankCd());				// 환불계좌은행코드
 
-		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
-		result.set("wdGb", orderChange.getWdGb());						// 회수방법
-		result.set("wdInvoiceNo", orderChange.getWdInvoiceNo());		// 회수송장번호
+		result.set("isCustomer"		, orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
+		result.set("wdGb"			, orderChange.getWdGb());				// 회수방법
+		result.set("wdInvoiceNo"	, orderChange.getWdInvoiceNo());		// 회수송장번호
+		result.set("shipCompCd"		, orderChange.getShipCompCd());			// 회수택배사코드
 
 		// 5. 주문변경 회수지정보 추가
-		result.set("chgerNm", orderChange.getChgerNm());				// 변경자명
-		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
-		result.set("chgerZipcode", orderChange.getChgerZipcode());		// 회수지우편번호
-		result.set("chgerBaseAddr", orderChange.getChgerBaseAddr());	// 회수지기본주소
-		result.set("chgerDtlAddr", orderChange.getChgerDtlAddr());		// 회수지상세주소
-		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
-		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
-		result.set("chgerRtnMemo", orderChange.getChgerRtnMemo());		// 반품메모
+		result.set("chgerNm"		, orderChange.getChgerNm());			// 변경자명
+		result.set("chgerEmail"		, orderChange.getChgerEmail());			// 변경자이메일주소
+		result.set("chgerZipcode"	, orderChange.getChgerZipcode());		// 회수지우편번호
+		result.set("chgerBaseAddr"	, orderChange.getChgerBaseAddr());		// 회수지기본주소
+		result.set("chgerDtlAddr"	, orderChange.getChgerDtlAddr());		// 회수지상세주소
+		result.set("chgerPhnno"		, orderChange.getChgerPhnno());			// 변경자핸드폰번호
+		result.set("chgerTelno"		, orderChange.getChgerTelno());			// 변경자전화번호
+		result.set("chgerRtnMemo"	, orderChange.getChgerRtnMemo());		// 반품메모
 
 		// 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
 		GagaMap map = coreOrderChangeService.returnRequest(result);
@@ -909,6 +913,9 @@ public class TsfNoMemberController extends TsfBaseController {
 		// 교환 사유 목록 조회
 		mav.addObject("exchangeReason", rendererService.getCommonCodeList("G689", "Y"));
 
+		// 2021.08.26 card007 택배사목록 추가
+		mav.addObject("shipCompanyList", rendererService.getShipCompanyList());
+
 		mav.setViewName(super.getDeviceViewName("/mypage/NoMemberExchangeForm"));
 
 		return mav;

+ 10 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfRenderer.xml

@@ -31,4 +31,14 @@
 		ORDER  BY CD_GB, DISP_ORD
 	</select>
 
+	<!-- 택배사명 목록 조회 -->
+	<select id="getShipCompanyList" resultType="CommonCode">
+		/* TsaDelivery.getShipCompanyList */
+		SELECT SHIP_COMP_CD  AS CD
+		     , SHIP_COMP_NM  AS CD_NM
+		FROM   TB_SHIP_COMPANY
+		WHERE  1 = 1
+		AND    USE_YN = 'Y'
+		AND    SWT_SHIP_COMP_CD IS NOT NULL
+	</select>
 </mapper>

+ 1 - 0
src/main/resources/config/application-locd.yml

@@ -96,6 +96,7 @@ naverPay:
     order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
     zzim.api.url: https://test-pay.naver.com/customer/api/wishlist.nhn
     zzim.popup.url: https://test-pay.naver.com/customer/wishlistPopup.nhn
+    zzim.mobile.url: https://test-m.pay.naver.com/mobile/customer/wishList.nhn
     access.license: 01000100005b15bb8faab722d100d589f34bd64843659e37a168b3617443c4f52a3fda45b8
     secret.key: AQABAADtZ/jOC1Y3LNsyI0TWwCMvPfrg0sqM9pnxliSegbjSqQ==
     port.address: http://sandbox.api.naver.com/Checkout/MallService5

+ 3 - 2
src/main/resources/config/application-style.yml

@@ -106,8 +106,9 @@ naverPay:
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://test-order.pay.naver.com/customer/buy/
     order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
-    zzim.api.url: https://test-pay.naver.com/customer/api/wishlist.nhn
-    zzim.popup.url: https://test-pay.naver.com/customer/wishlistPopup.nhn
+    zzim.api.url: https://pay.naver.com/customer/api/wishlist.nhn
+    zzim.popup.url: https://pay.naver.com/customer/wishlistPopup.nhn
+    zzim.mobile.url: https://m.pay.naver.com/mobile/customer/wishList.nhn
     access.license: 01000100005b15bb8faab722d100d589f34bd64843659e37a168b3617443c4f52a3fda45b8
     secret.key: AQABAADtZ/jOC1Y3LNsyI0TWwCMvPfrg0sqM9pnxliSegbjSqQ==
     port.address: http://sandbox.api.naver.com/Checkout/MallService5

+ 4 - 1
src/main/webapp/WEB-INF/views/mob/display/BrandSearchLayerMob.html

@@ -224,9 +224,12 @@
 		if(result.autoKeywords.length==0 && gagajf.isNull(result.goodsList)){
 			$('.sch_result .default_box').hide();
 			$('.sch_result .searching_box').hide();
-			$('.sch_result .empty_box').show();
 			$('.sch_result .empty_box2').hide();
+			
+			/* 210830 임시주석
+			$('.sch_result .empty_box').show();
 			$("#noDataArea").find('#noDataKeyword').text($("#searchMainForm").find('input[name=keyword]').val());
+			*/
 			// 검색어 연관 상품 추천
 			fnRecommendItemList($("#searchMainForm").find('input[name=keyword]').val());
 			// 인기검색어

+ 3 - 0
src/main/webapp/WEB-INF/views/mob/display/SearchLayerMob.html

@@ -229,8 +229,11 @@
 		if(result.autoKeywords.length==0 && gagajf.isNull(result.brand.brandGroupNo) && result.cateList.length == 0 && gagajf.isNull(result.goodsList)){
 			$('.sch_result .default_box').hide();
 			$('.sch_result .searching_box').hide();
+			
+			/* 210830 임시주석
 			$('.sch_result .empty_box').show();
 			$("#noDataArea").find('#noDataKeyword').text($("#searchMainForm").find('input[name=keyword]').val());
+			*/
 			// 검색어 연관 상품 추천
 			fnRecommendItemList($("#searchMainForm").find('input[name=keyword]').val());
 			// 인기검색어

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

@@ -344,7 +344,7 @@
 														
 														window.open('about:blank', 'popupView');
 														document.nPayWishForm.target = 'popupView';
-														document.nPayWishForm.action = result.action;
+														document.nPayWishForm.action = result.actionMobile;
 														document.nPayWishForm.submit();
 													} else {
 														mcxDialog.alert(result.message);

+ 13 - 6
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -1293,7 +1293,7 @@
 													
 													window.open('about:blank', 'popupView');
 													document.nPayWishForm.target = 'popupView';
-													document.nPayWishForm.action = result.action;
+													document.nPayWishForm.action = result.actionMobile;
 													document.nPayWishForm.submit();
 												} else {
 													mcxDialog.alert(result.message);
@@ -2517,6 +2517,8 @@
 	
 	
 	$(document).ready( function() {
+		// 상품상세 홈버튼 위치 변경 
+		$("#htopSub .button_wrap").addClass("pd");
 		
 		$('.timer_box').css('display', 'none');
 
@@ -2827,15 +2829,20 @@
            });
 		
 		//--상품리뷰 창 순서 -
-		
 		$(document).on('click','.pd_detail .thumb_box .thumb',function(e){
-            $("#pdItemThumbPop").show();
-            $('#pdItemThumbPop').scrollTop(0);
-            var thumbIndex = $(this).parent().attr('id').replace("navLocate", "");
+			$('html, body').addClass('lock'); // 210827_ lock 추가 
+			$('#pdItemThumbPop').css("display", "block");
+			$("#pdItemThumbPop").scrollTop(0);
+			var thumbIndex = $(this).parent().attr('id').replace("navLocate", "");
     		var scrollThumbPop = $('#popThumb'+thumbIndex).height() * (thumbIndex-1);
     		$('#pdItemThumbPop').animate({scrollTop : scrollThumbPop}, 1000);
 			return false;
-        })
+		}).on('click','.full_popup_wrap .btn_close, #btn_close_itemThumbPop',function(e){ // 210827_ lock 해제 
+			$("#pdItemThumbPop").scrollTop(0);
+			$("#pdItemThumbPop").hide(); 
+			$('html, body').removeClass('lock');
+			return false;
+		});
 
 		
 			

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

@@ -21,6 +21,7 @@
 	<section class="content my_exchange my_return">
 		<form id="exchangeForm" class="form_wrap">
 			<input type="hidden" name="chgReason"/>
+			<input type="hidden" name="shipCompCd"/>
 			
 			<div class="inner wide bg_beige">
 				<div class="order_number">
@@ -255,9 +256,20 @@
 										<dt><span>반송 주소</span></dt>
 										<dd th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></dd>
 									</div>
+									<div class="">
+										<dt><span>택배사 선택</span></dt> <!-- 210409_수정 : class sr-only 삭제 -->
+										<dd>
+											<div class="select_custom select_courier">
+												<div class="combo">
+													<div class="select">택배사를 선택하세요.</div>
+												</div>
+											</div>
+										</dd>
+									</div>
 									<div class="phone">
 										<dt><span>반송 송장번호</span></dt>
-										<dd><input type="number" pattern="\d*" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
+										<dd><input type="tel" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
+<!--										<dd><input type="number" pattern="\d*" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>-->
 									</div>
 								</dl>
 							</div>
@@ -357,6 +369,24 @@
 </div>
 <!-- //210408_ 추가 : 사유 선택 팝업 -->
 
+<!-- 210819_ 추가 : 택배사 선택 팝업 -->
+<div id="exchangeCourierPop" class="popup_box exchangeCourierPop" style="display: none;">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">택배사 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list">
+				<th:block th:if="${shipCompanyList}" th:each="oneData, status : ${shipCompanyList}">
+					<button type="button" th:attr="shipCompCd=${oneData.cd}" onclick="fnSelectShipComp(this);"><span th:text="${oneData.cdNm}"></span></button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210819_ 추가 : 택배사 선택 팝업 -->
+
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 var isLogin 		= [[${isLogin}]];
@@ -493,6 +523,7 @@ var fnExchange = function() {
 	data.addPayCost 	= addPayCost;
 	data.addPayAmt 		= 0;
 	data.cancelReqList 	= cancelReqList;
+	data.shipCompCd		= $('#exchangeForm input[name=shipCompCd]').val();
 
 	let jsonData = JSON.stringify(data);
 
@@ -730,6 +761,16 @@ var fnChangeAddr = function(param) {
 	addrGb = param;
 	fnChangeDeliveryAddr();
 }
+
+// 택배사 버튼 클릭 이벤트
+var fnSelectShipComp = function(param) {
+	let shipCompCd = $(param).attr('shipCompCd');
+	$('#exchangeForm input[name=shipCompCd]').val(shipCompCd);
+	$("#exchangeForm .select_custom.select_courier .select").text($(param).find("span").text());
+	
+	// 팝업 닫기
+	$("#exchangeCourierPop .popup_close").trigger("click");
+}
 </script>
 
 <script>
@@ -770,6 +811,12 @@ function handleOnInput(el, maxlength) {
 		el.value = el.value.substr(0, maxlength);
 	}
 }
+
+// 210819_ 추가 : 택배사 선택 팝업
+$(document).on("click",".select_custom.select_courier",function(e){
+	$('#exchangeCourierPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
 </script>
 
 

+ 46 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html

@@ -24,6 +24,7 @@
 			<input type="hidden" name="accountNm" 	th:value="${oneData.accountNm}"/>
 			<input type="hidden" name="bankCd" 		th:value="${oneData.bankCd}"/>
 			<input type="hidden" name="chgReason"/>
+			<input type="hidden" name="shipCompCd"/>
 
 			<div class="inner wide bg_beige">
 				<div class="order_number">
@@ -232,6 +233,16 @@
 										<dt><span>반송 주소</span></dt>
 										<dd th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></dd>
 									</div>
+									<div class="">
+										<dt><span>택배사 선택</span></dt> <!-- 210409_수정 : class sr-only 삭제 -->
+										<dd>
+											<div class="select_custom select_courier">
+												<div class="combo">
+													<div class="select">택배사를 선택하세요.</div>
+												</div>
+											</div>
+										</dd>
+									</div>
 									<div class="phone">
 										<dt><span>반송 송장번호</span></dt>
 										<dd><input type="tel" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
@@ -464,6 +475,24 @@
 </div>
 <!-- //210408_ 추가 : 은행 선택 팝업 -->
 
+<!-- 210819_ 추가 : 택배사 선택 팝업 -->
+<div id="returnCourierPop" class="popup_box returnCourierPop" style="display: none;">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">택배사 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list">
+				<th:block th:if="${shipCompanyList}" th:each="oneData, status : ${shipCompanyList}">
+					<button type="button" th:attr="shipCompCd=${oneData.cd}" onclick="fnSelectShipComp(this);"><span th:text="${oneData.cdNm}"></span></button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210819_ 추가 : 택배사 선택 팝업 -->
+
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 var isLogin 		= [[${isLogin}]];
@@ -600,6 +629,7 @@ var fnReturn = function() {
 	data.addPayCost 		= addPayCost;
 	data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
 	data.delvFeeCdGrp 		= oneData.delvFeeCdGrp;
+	data.shipCompCd			= $('#returnForm input[name=shipCompCd]').val();
 
 	let jsonData = JSON.stringify(data);
 
@@ -864,6 +894,16 @@ $('#btn_bank_return').click(function() {
 		mcxDialog.alert('계좌인증이 필요합니다.');
 	}
 });
+
+// 택배사 버튼 클릭 이벤트
+var fnSelectShipComp = function(param) {
+	let shipCompCd = $(param).attr('shipCompCd');
+	$('#returnForm input[name=shipCompCd]').val(shipCompCd);
+	$("#returnForm .select_custom.select_courier .select").text($(param).find("span").text());
+
+	// 팝업 닫기
+	$("#returnCourierPop .popup_close").trigger("click");
+}
 </script>
 
 <script>
@@ -933,6 +973,12 @@ $(document).on('click','.popup_box.refundBankPop .button_list button',function()
 	$(this).parents('.popup_box.refundBankPop').hide().removeClass('active');
 	$("body").css({"overflow":"visible"});
 });
+
+// 210819_ 추가 : 택배사 선택 팝업
+$(document).on("click",".select_custom.select_courier",function(e){
+	$('#returnCourierPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
 </script>
 
 </th:block>

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

@@ -21,6 +21,7 @@
 	<section class="content my_exchange my_return">
 		<form id="exchangeForm" class="form_wrap">
 			<input type="hidden" name="chgReason"/>
+			<input type="hidden" name="shipCompCd"/>
 			
 			<div class="inner wide bg_beige">
 				<div class="order_number">
@@ -254,9 +255,20 @@
 										<dt><span>반송 주소</span></dt>
 										<dd th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></dd>
 									</div>
+									<div class="">
+										<dt><span>택배사 선택</span></dt> <!-- 210409_수정 : class sr-only 삭제 -->
+										<dd>
+											<div class="select_custom select_courier">
+												<div class="combo">
+													<div class="select">택배사를 선택하세요.</div>
+												</div>
+											</div>
+										</dd>
+									</div>
 									<div class="phone">
 										<dt><span>반송 송장번호</span></dt>
-										<dd><input type="number" pattern="\d*" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
+										<dd><input type="tel" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
+<!--										<dd><input type="number" pattern="\d*" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>-->
 									</div>
 								</dl>
 							</div>
@@ -356,6 +368,24 @@
 </div>
 <!-- //210408_ 추가 : 사유 선택 팝업 -->
 
+<!-- 210819_ 추가 : 택배사 선택 팝업 -->
+<div id="exchangeCourierPop" class="popup_box exchangeCourierPop" style="display: none;">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">택배사 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list">
+				<th:block th:if="${shipCompanyList}" th:each="oneData, status : ${shipCompanyList}">
+					<button type="button" th:attr="shipCompCd=${oneData.cd}" onclick="fnSelectShipComp(this);"><span th:text="${oneData.cdNm}"></span></button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210819_ 추가 : 택배사 선택 팝업 -->
+
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 var isLogin 		= [[${isLogin}]];
@@ -495,6 +525,7 @@ var fnExchange = function() {
 	data.addPayCost 	= addPayCost;
 	data.addPayAmt 		= 0;
 	data.cancelReqList 	= cancelReqList;
+	data.shipCompCd		= $('#exchangeForm input[name=shipCompCd]').val();
 
 	let jsonData = JSON.stringify(data);
 
@@ -732,6 +763,16 @@ var fnChangeAddr = function(param) {
 	addrGb = param;
 	fnChangeDeliveryAddr();
 }
+
+// 택배사 버튼 클릭 이벤트
+var fnSelectShipComp = function(param) {
+	let shipCompCd = $(param).attr('shipCompCd');
+	$('#exchangeForm input[name=shipCompCd]').val(shipCompCd);
+	$("#exchangeForm .select_custom.select_courier .select").text($(param).find("span").text());
+	
+	// 팝업 닫기
+	$("#exchangeCourierPop .popup_close").trigger("click");
+}
 </script>
 
 <script>
@@ -772,6 +813,12 @@ function handleOnInput(el, maxlength) {
 		el.value = el.value.substr(0, maxlength);
 	}
 }
+
+// 210819_ 추가 : 택배사 선택 팝업
+$(document).on("click",".select_custom.select_courier",function(e){
+	$('#exchangeCourierPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
 </script>
 
 

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

@@ -24,6 +24,7 @@
 			<input type="hidden" name="accountNm" 	th:value="${oneData.accountNm}"/>
 			<input type="hidden" name="bankCd" 		th:value="${oneData.bankCd}"/>
 			<input type="hidden" name="chgReason"/>
+			<input type="hidden" name="shipCompCd"/>
 
 			<div class="inner wide bg_beige">
 				<div class="order_number">
@@ -231,9 +232,20 @@
 										<dt><span>반송 주소</span></dt>
 										<dd th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></dd>
 									</div>
+									<div class="">
+										<dt><span>택배사 선택</span></dt> <!-- 210409_수정 : class sr-only 삭제 -->
+										<dd>
+											<div class="select_custom select_courier">
+												<div class="combo">
+													<div class="select">택배사를 선택하세요.</div>
+												</div>
+											</div>
+										</dd>
+									</div>
 									<div class="phone">
 										<dt><span>반송 송장번호</span></dt>
-										<dd><input type="number" pattern="\d*" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
+										<dd><input type="tel" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
+<!--										<dd><input type="number" pattern="\d*" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>-->
 									</div>
 								</dl>
 							</div>
@@ -463,6 +475,24 @@
 </div>
 <!-- //210408_ 추가 : 은행 선택 팝업 -->
 
+<!-- 210819_ 추가 : 택배사 선택 팝업 -->
+<div id="returnCourierPop" class="popup_box returnCourierPop" style="display: none;">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">택배사 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list">
+				<th:block th:if="${shipCompanyList}" th:each="oneData, status : ${shipCompanyList}">
+					<button type="button" th:attr="shipCompCd=${oneData.cd}" onclick="fnSelectShipComp(this);"><span th:text="${oneData.cdNm}"></span></button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210819_ 추가 : 택배사 선택 팝업 -->
+
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 var isLogin 		= [[${isLogin}]];
@@ -605,6 +635,7 @@ var fnReturn = function() {
 	data.addPayCost 		= addPayCost;
 	data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
 	data.delvFeeCdGrp 		= oneData.delvFeeCdGrp;
+	data.shipCompCd			= $('#returnForm input[name=shipCompCd]').val();
 
 	let jsonData = JSON.stringify(data);
 
@@ -863,6 +894,16 @@ $('#btn_bank_return').click(function() {
 		mcxDialog.alert('계좌인증이 필요합니다.');
 	}
 });
+
+// 택배사 버튼 클릭 이벤트
+var fnSelectShipComp = function(param) {
+	let shipCompCd = $(param).attr('shipCompCd');
+	$('#returnForm input[name=shipCompCd]').val(shipCompCd);
+	$("#returnForm .select_custom.select_courier .select").text($(param).find("span").text());
+	
+	// 팝업 닫기
+	$("#returnCourierPop .popup_close").trigger("click");
+}
 </script>
 
 <script>
@@ -932,6 +973,12 @@ $(document).on('click','.popup_box.refundBankPop .button_list button',function()
 	$(this).parents('.popup_box.refundBankPop').hide().removeClass('active');
 	$("body").css({"overflow":"visible"});
 });
+
+// 210819_ 추가 : 택배사 선택 팝업
+$(document).on("click",".select_custom.select_courier",function(e){
+	$('#returnCourierPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
 </script>
 
 </th:block>

+ 2 - 0
src/main/webapp/WEB-INF/views/web/display/BrandSearchLayerWeb.html

@@ -207,8 +207,10 @@
 		if(result.autoKeywords.length==0 && gagajf.isNull(result.goodsList)){
 			$('.common_search .area_result .default_box').hide();
 			$('.common_search .area_result .searching_box').hide();
+			/* 210830 임시주석
 			$('.common_search .area_result .empty_box').show();
 			$('.empty_box .nodata').find('#noDataKeyword').text("'"+$("#brandSearchMainForm").find('input[name=keyword]').val()+"'");
+			*/
 			// 검색어 연관 상품 추천
 			fnRecommendItemList($("#brandSearchMainForm").find('input[name=keyword]').val());
 		}else{

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

@@ -36,7 +36,7 @@
 								<input type="hidden" name="brandGroupNo" th:value="${params.brandGroupNo}">
 								<fieldset>
 									<legend>결과 내 재검색</legend>
-									<input type="text" id="keyword" name="keyword" th:value="${params.keyword}" placeholder="" class="search_input" title="검색어 입력" maxlength="100" autocomplete="off">
+									<input type="text" id="keyword" name="keyword" th:value="${params.keyword}" placeholder="" class="form_control search_input" title="검색어 입력" maxlength="100" autocomplete="off">
 									<button type="button" class="sch_btn" onclick="fnSearchData();"><span>검색</span></button>
 								</fieldset>
 							</form>

+ 3 - 0
src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html

@@ -239,8 +239,11 @@
 		if(result.autoKeywords.length==0 && gagajf.isNull(result.brand.brandGroupNo) && result.cateList.length == 0 && gagajf.isNull(result.goodsList)){
 			$('.common_search .area_result .default_box').hide();
 			$('.common_search .area_result .searching_box').hide();
+			
+			/* 210830 임시주석
 			$('.common_search .area_result .empty_box').show();
 			$('.empty_box .nodata').find('#noDataKeyword').text("'"+$("#searchMainForm").find('input[name=keyword]').val()+"'");
+			*/
 			// 검색어 연관 상품 추천
 			fnRecommendItemList($("#searchMainForm").find('input[name=keyword]').val());
 		}else{

+ 56 - 27
src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html

@@ -220,6 +220,26 @@
 										</th>
 										<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
 									</tr>
+									<tr>
+										<th>
+											택배사 선택
+										</th>
+										<td>
+											<div class="form_field">
+												<div class="select_custom select_courier">
+													<div class="combo">
+														<input type="hidden" name="shipCompCd"/>
+														<div class="select">택배사를 선택하세요.</div>
+														<ul class="list">
+															<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+															<!-- <li class="selected">택배사를 선택하세요.</li> -->
+															<li th:if="${shipCompanyList}" th:each="oneData, status : ${shipCompanyList}" th:attr="shipCompCd=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnSelectShipComp(this);"></li>
+														</ul>
+													</div>
+												</div>
+											</div>
+										</td>
+									</tr>
 									<tr>
 										<th>
 											반송 송장번호
@@ -461,33 +481,34 @@
 		}
 
 		// 교환 필요 데이터 설정
-		let wdGb = $('#exchangeForm input[name=wdGb]:radio:checked').val();
-		let data = {};
-		data.ordNo = oneData.ordNo;
-		data.isCustomer = isCustomer;
-		data.wdGb = wdGb;
-		data.wdInvoiceNo = $('#exchangeForm input[name=wdInvoiceNo]').val();
-		data.recipNm = $('#exchangeForm input[name=recipNm]').val();
-		data.recipPhnno = $('#exchangeForm input[name=recipPhnno]').val();
-		data.recipTelno = $('#exchangeForm input[name=recipTelno]').val();
-		data.recipZipcode = $('#exchangeForm input[name=recipZipcode]').val();
-		data.recipBaseAddr = $('#exchangeForm input[name=recipBaseAddr]').val();
-		data.recipDtlAddr = $('#exchangeForm input[name=recipDtlAddr]').val();
-		data.delvMemo = $('#exchangeForm input[name=delvMemo]').val();
-		data.chgReason = $('#exchangeForm input[name=chgReason]').val();
-		data.chgMemo = $('#exchangeForm textarea[name=chgMemo]').val();
-		data.chgerNm = wdGb == 'W' ? $('#exchangeForm input[name=chgerNm]').val() : '';
-		data.chgerPhnno = wdGb == 'W' ? $('#exchangeForm input[name=chgerPhnno]').val() : '';
-		data.chgerTelno = wdGb == 'W' ? $('#exchangeForm input[name=chgerTelno]').val() : '';
-		data.chgerEmail = wdGb == 'W' ? $('#exchangeForm input[name=chgerEmail]').val() : '';
-		data.chgerZipcode = wdGb == 'W' ? $('#exchangeForm input[name=chgerZipcode]').val() : '';
-		data.chgerBaseAddr = wdGb == 'W' ? $('#exchangeForm input[name=chgerBaseAddr]').val() : '';
-		data.chgerDtlAddr = wdGb == 'W' ? $('#exchangeForm input[name=chgerDtlAddr]').val() : '';
-		data.chgerRtnMemo = wdGb == 'W' ? $('#exchangeForm input[name=chgerRtnMemo]').val() : '';
-		data.addPayCost = addPayCost;
-		data.addPayAmt = 0;
-		data.cancelReqList = cancelReqList;
-		data.selfGoodsYn = oneData.selfGoodsYn;
+		let wdGb 			= $('#exchangeForm input[name=wdGb]:radio:checked').val();
+		let data 			= {};
+		data.ordNo 			= oneData.ordNo;
+		data.isCustomer 	= isCustomer;
+		data.wdGb 			= wdGb;
+		data.wdInvoiceNo 	= $('#exchangeForm input[name=wdInvoiceNo]').val();
+		data.recipNm 		= $('#exchangeForm input[name=recipNm]').val();
+		data.recipPhnno 	= $('#exchangeForm input[name=recipPhnno]').val();
+		data.recipTelno 	= $('#exchangeForm input[name=recipTelno]').val();
+		data.recipZipcode 	= $('#exchangeForm input[name=recipZipcode]').val();
+		data.recipBaseAddr 	= $('#exchangeForm input[name=recipBaseAddr]').val();
+		data.recipDtlAddr 	= $('#exchangeForm input[name=recipDtlAddr]').val();
+		data.delvMemo 		= $('#exchangeForm input[name=delvMemo]').val();
+		data.chgReason 		= $('#exchangeForm input[name=chgReason]').val();
+		data.chgMemo 		= $('#exchangeForm textarea[name=chgMemo]').val();
+		data.chgerNm 		= wdGb == 'W' ? $('#exchangeForm input[name=chgerNm]').val() : '';
+		data.chgerPhnno 	= wdGb == 'W' ? $('#exchangeForm input[name=chgerPhnno]').val() : '';
+		data.chgerTelno 	= wdGb == 'W' ? $('#exchangeForm input[name=chgerTelno]').val() : '';
+		data.chgerEmail 	= wdGb == 'W' ? $('#exchangeForm input[name=chgerEmail]').val() : '';
+		data.chgerZipcode 	= wdGb == 'W' ? $('#exchangeForm input[name=chgerZipcode]').val() : '';
+		data.chgerBaseAddr 	= wdGb == 'W' ? $('#exchangeForm input[name=chgerBaseAddr]').val() : '';
+		data.chgerDtlAddr 	= wdGb == 'W' ? $('#exchangeForm input[name=chgerDtlAddr]').val() : '';
+		data.chgerRtnMemo 	= wdGb == 'W' ? $('#exchangeForm input[name=chgerRtnMemo]').val() : '';
+		data.addPayCost 	= addPayCost;
+		data.addPayAmt 		= 0;
+		data.cancelReqList 	= cancelReqList;
+		data.selfGoodsYn 	= oneData.selfGoodsYn;
+		data.shipCompCd 	= $('#exchangeForm input[name=shipCompCd]').val();
 
 		let jsonData = JSON.stringify(data);
 
@@ -647,6 +668,14 @@
 		addrGb = param;
 		fnChangeDeliveryAddr();
 	}
+
+	// 택배사 변경 이벤트
+	var fnSelectShipComp = function(param) {
+		let shipCompCd = $(param).attr('shipCompCd');
+		
+		// 반품 사유 설정
+		$(param).parent().parent().find('input[name=shipCompCd]').val(shipCompCd);
+	}
 </script>
 
 </th:block>

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

@@ -220,6 +220,26 @@
 											</th>
 											<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
 										</tr>
+										<tr>
+											<th>
+												택배사 선택
+											</th>
+											<td>
+												<div class="form_field">
+													<div class="select_custom select_courier">
+														<div class="combo">
+															<input type="hidden" name="shipCompCd"/>
+															<div class="select">택배사를 선택하세요.</div>
+															<ul class="list">
+																<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+																<!-- <li class="selected">택배사를 선택하세요.</li> -->
+																<li th:if="${shipCompanyList}" th:each="oneData, status : ${shipCompanyList}" th:attr="shipCompCd=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnSelectShipComp(this);"></li>
+															</ul>
+														</div>
+													</div>
+												</div>
+											</td>
+										</tr>
 										<tr>
 											<th>
 												반송 송장번호
@@ -431,30 +451,31 @@
 		}
 
 		// 추가배송비 PG 처리
-		let addPayCost = $('#returnForm input[name=addPayCost]').val();
-		let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
-
-		let data = {};
-		data.ordNo = oneData.ordNo;
-		data.ordChgSq = 0;
-		data.chgReason = chgReason;
-		data.chgMemo = $('#returnForm textarea[name=chgMemo]').val();
-		data.accountNo = $('#returnForm input[name=accountNo]').val();
-		data.accountNm = $('#returnForm input[name=accountNm]').val();
-		data.bankCd = $('#returnForm input[name=bankCd]').val();
-		data.isCustomer = isCustomer;
-		data.wdGb = wdGb;
-		data.chgerNm = wdGb == 'W' ? $('#chgerNm').text() : '';
-		data.chgerZipcode = wdGb == 'W' ? $('#returnForm input[name=chgerZipcode]').val() : '';
-		data.chgerBaseAddr = wdGb == 'W' ? $('#returnForm input[name=chgerBaseAddr]').val() : '';
-		data.chgerDtlAddr = wdGb == 'W' ? $('#returnForm input[name=chgerDtlAddr]').val() : '';
-		data.chgerPhnno = wdGb == 'W' ? $('#returnForm input[name=chgerPhnno]').val() : '';
-		data.chgerRtnMemo = wdGb == 'W' ? $('#returnForm input[name=chgerRtnMemo]').val() : '';
-		data.ordDtlNoArr = ordDtlNoArr;
-		data.wdInvoiceNo = $('#returnForm input[name=wdInvoiceNo]').val();
-		data.addPayCost = addPayCost;
-		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
-		data.delvFeeCdGrp = oneData.delvFeeCdGrp;
+		let addPayCost 			= $('#returnForm input[name=addPayCost]').val();
+		let wdGb 				= $('#returnForm input[name=wdGb]:radio:checked').val();
+
+		let data 				= {};
+		data.ordNo 				= oneData.ordNo;
+		data.ordChgSq 			= 0;
+		data.chgReason 			= chgReason;
+		data.chgMemo 			= $('#returnForm textarea[name=chgMemo]').val();
+		data.accountNo 			= $('#returnForm input[name=accountNo]').val();
+		data.accountNm 			= $('#returnForm input[name=accountNm]').val();
+		data.bankCd 			= $('#returnForm input[name=bankCd]').val();
+		data.isCustomer 		= isCustomer;
+		data.wdGb 				= wdGb;
+		data.chgerNm 			= wdGb == 'W' ? $('#chgerNm').text() : '';
+		data.chgerZipcode 		= wdGb == 'W' ? $('#returnForm input[name=chgerZipcode]').val() : '';
+		data.chgerBaseAddr		= wdGb == 'W' ? $('#returnForm input[name=chgerBaseAddr]').val() : '';
+		data.chgerDtlAddr 		= wdGb == 'W' ? $('#returnForm input[name=chgerDtlAddr]').val() : '';
+		data.chgerPhnno 		= wdGb == 'W' ? $('#returnForm input[name=chgerPhnno]').val() : '';
+		data.chgerRtnMemo 		= wdGb == 'W' ? $('#returnForm input[name=chgerRtnMemo]').val() : '';
+		data.ordDtlNoArr 		= ordDtlNoArr;
+		data.wdInvoiceNo 		= $('#returnForm input[name=wdInvoiceNo]').val();
+		data.addPayCost 		= addPayCost;
+		data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
+		data.delvFeeCdGrp 		= oneData.delvFeeCdGrp;
+		data.shipCompCd 		= $('#returnForm input[name=shipCompCd]').val();
 
 		let jsonData = JSON.stringify(data);
 
@@ -601,7 +622,6 @@
 		// 반품 사유 설정
 		$(param).parent().parent().find('input[name=chgReason]').val(chgReason);
 
-		console.log('isCustomer : ' + isCustomer);
 		// 환불금액 계산
 		fnChangeReturnQty();
 	}
@@ -641,6 +661,14 @@
 		// 반품처리
 		fnReturn();
 	}
+	
+	// 택배사 변경 이벤트
+	var fnSelectShipComp = function(param) {
+		let shipCompCd = $(param).attr('shipCompCd');
+
+		// 반품 사유 설정
+		$(param).parent().parent().find('input[name=shipCompCd]').val(shipCompCd);
+	}
 </script>
 
 </th:block>

+ 29 - 0
src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html

@@ -219,6 +219,26 @@
 										</th>
 										<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
 									</tr>
+									<tr>
+										<th>
+											택배사 선택
+										</th>
+										<td>
+											<div class="form_field">
+												<div class="select_custom select_courier">
+													<div class="combo">
+														<input type="hidden" name="shipCompCd"/>
+														<div class="select">택배사를 선택하세요.</div>
+														<ul class="list">
+															<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+															<!-- <li class="selected">택배사를 선택하세요.</li> -->
+															<li th:if="${shipCompanyList}" th:each="oneData, status : ${shipCompanyList}" th:attr="shipCompCd=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnSelectShipComp(this);"></li>
+														</ul>
+													</div>
+												</div>
+											</div>
+										</td>
+									</tr>
 									<tr>
 										<th>
 											반송 송장번호
@@ -487,6 +507,7 @@
 		data.addPayCost = addPayCost;
 		data.addPayAmt = 0;
 		data.cancelReqList = cancelReqList;
+		data.shipCompCd = $('#exchangeForm input[name=shipCompCd]').val();
 
 		let jsonData = JSON.stringify(data);
 
@@ -646,6 +667,14 @@
 		addrGb = param;
 		fnChangeDeliveryAddr();
 	}
+
+	// 택배사 변경 이벤트
+	var fnSelectShipComp = function(param) {
+		let shipCompCd = $(param).attr('shipCompCd');
+		
+		// 반품 사유 설정
+		$(param).parent().parent().find('input[name=shipCompCd]').val(shipCompCd);
+	}
 </script>
 
 </th:block>

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

@@ -218,6 +218,26 @@
 											</th>
 											<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
 										</tr>
+										<tr>
+											<th>
+												택배사 선택
+											</th>
+											<td>
+												<div class="form_field">
+													<div class="select_custom select_courier">
+														<div class="combo">
+															<input type="hidden" name="shipCompCd"/>
+															<div class="select">택배사를 선택하세요.</div>
+															<ul class="list">
+																<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+																<!-- <li class="selected">택배사를 선택하세요.</li> -->
+																<li th:if="${shipCompanyList}" th:each="oneData, status : ${shipCompanyList}" th:attr="shipCompCd=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnSelectShipComp(this);"></li>
+															</ul>
+														</div>
+													</div>
+												</div>
+											</td>
+										</tr>
 										<tr>
 											<th>
 												반송 송장번호
@@ -428,32 +448,33 @@
 		}
 
 		// 추가배송비 PG 처리
-		let addPayCost = $('#returnForm input[name=addPayCost]').val();
-		let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+		let addPayCost 			= $('#returnForm input[name=addPayCost]').val();
+		let wdGb 				= $('#returnForm input[name=wdGb]:radio:checked').val();
 
 		let data = {};
-		data.ordNo = oneData.ordNo;
-		data.ordNm = oneData.ordNm;
-		data.ordPhnno = oneData.ordPhnno;
-		data.ordChgSq = 0;
-		data.chgReason = chgReason;
-		data.chgMemo = $('#returnForm textarea[name=chgMemo]').val();
-		data.accountNo = $('#returnForm input[name=accountNo]').val();
-		data.accountNm = $('#returnForm input[name=accountNm]').val();
-		data.bankCd = $('#returnForm input[name=bankCd]').val();
-		data.isCustomer = isCustomer;
-		data.wdGb = wdGb;
-		data.chgerNm = wdGb == 'W' ? $('#chgerNm').text() : '';
-		data.chgerZipcode = wdGb == 'W' ? $('#returnForm input[name=chgerZipcode]').val() : '';
-		data.chgerBaseAddr = wdGb == 'W' ? $('#returnForm input[name=chgerBaseAddr]').val() : '';
-		data.chgerDtlAddr = wdGb == 'W' ? $('#returnForm input[name=chgerDtlAddr]').val() : '';
-		data.chgerPhnno = wdGb == 'W' ? $('#returnForm input[name=chgerPhnno]').val() : '';
-		data.chgerRtnMemo = wdGb == 'W' ? $('#returnForm input[name=chgerRtnMemo]').val() : '';
-		data.ordDtlNoArr = ordDtlNoArr;
-		data.wdInvoiceNo = $('#returnForm input[name=wdInvoiceNo]').val();
-		data.addPayCost = addPayCost;
-		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
-		data.delvFeeCdGrp = oneData.delvFeeCdGrp;
+		data.ordNo 				= oneData.ordNo;
+		data.ordNm 				= oneData.ordNm;
+		data.ordPhnno 			= oneData.ordPhnno;
+		data.ordChgSq 			= 0;
+		data.chgReason 			= chgReason;
+		data.chgMemo 			= $('#returnForm textarea[name=chgMemo]').val();
+		data.accountNo 			= $('#returnForm input[name=accountNo]').val();
+		data.accountNm 			= $('#returnForm input[name=accountNm]').val();
+		data.bankCd 			= $('#returnForm input[name=bankCd]').val();
+		data.isCustomer 		= isCustomer;
+		data.wdGb 				= wdGb;
+		data.chgerNm 			= wdGb == 'W' ? $('#chgerNm').text() : '';
+		data.chgerZipcode 		= wdGb == 'W' ? $('#returnForm input[name=chgerZipcode]').val() : '';
+		data.chgerBaseAddr 		= wdGb == 'W' ? $('#returnForm input[name=chgerBaseAddr]').val() : '';
+		data.chgerDtlAddr 		= wdGb == 'W' ? $('#returnForm input[name=chgerDtlAddr]').val() : '';
+		data.chgerPhnno 		= wdGb == 'W' ? $('#returnForm input[name=chgerPhnno]').val() : '';
+		data.chgerRtnMemo 		= wdGb == 'W' ? $('#returnForm input[name=chgerRtnMemo]').val() : '';
+		data.ordDtlNoArr 		= ordDtlNoArr;
+		data.wdInvoiceNo 		= $('#returnForm input[name=wdInvoiceNo]').val();
+		data.addPayCost 		= addPayCost;
+		data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
+		data.delvFeeCdGrp 		= oneData.delvFeeCdGrp;
+		data.shipCompCd 		= $('#returnForm input[name=shipCompCd]').val();
 
 		let jsonData = JSON.stringify(data);
 
@@ -638,6 +659,14 @@
 		// 반품처리
 		fnReturn();
 	}
+
+	// 택배사 변경 이벤트
+	var fnSelectShipComp = function(param) {
+		let shipCompCd = $(param).attr('shipCompCd');
+
+		// 반품 사유 설정
+		$(param).parent().parent().find('input[name=shipCompCd]').val(shipCompCd);
+	}
 </script>
 
 </th:block>

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

@@ -655,6 +655,14 @@ header .htop .button_wrap .store{position: relative;margin: 0 0 0 1.1666rem;}
 header .htop .button_wrap .store img{width: 1.8rem;}
 header .htop .button_wrap .store img:nth-child(1) { height: 2.2rem;}
 header .htop .button_wrap .store span { width: 2.1rem; height: 1.4rem; position: absolute; top: -0.5rem; right: -1.0rem; background: #fd4802; border-radius: 0.8rem; font-size: 0.8rem; color: #fff; line-height: 1.6rem;}
+
+/* 210827_ 고객요청 _ 상품상세에서만 헤더 홈버튼 위치 이동 */
+header .htop .button_wrap.pd {position: relative; width: 78%; height: 5.5rem; float: right; padding: 1.6rem 0 0; margin: 0 2.5rem 0 0; box-sizing: border-box;}
+header .htop .button_wrap.pd .home {margin: 0 1.1666rem 0 1.2rem;}
+header .htop .button_wrap.pd .search {margin:0 1.1666rem 0 1.1666rem; position: absolute; top: auto;right: 4rem;}
+header .htop .button_wrap.pd .store{margin: 0 0 0 1.1666rem;position: absolute;top: auto;right: 0.0rem;}
+
+
 header .btn_gnb {position: absolute;top: 0;right: -3.5rem;width: 3.5rem;height: 100%;z-index: 10;}
 header .btn_gnb span {display: block;width: 2.4rem;height: 2.4rem;margin: 0 auto;position: relative;}
 header .btn_gnb span i {display: block;position: absolute;left: 0;width:100%;height: 100%;-webkit-transition: all 0.5s ease-out;transition: all 0.5s ease-out;}
@@ -775,7 +783,7 @@ body.header-show .app .gnb{top: 5.0rem;}
 
 main.container{margin-top: 0; overflow: hidden;}
 main.container.mb {margin-top: -5.5rem;}
-main.container .inner:last-child{padding-bottom: 6.0rem; margin-bottom: 0;}
+main.container .inner:last-child{padding-bottom: 6.0rem; margin-bottom: 0;touch-action: pan-x;}
 
 /* 페이지별 헤더 세팅 */
 main.app-only section.sett, main.app-only section.notice, section.content {margin-top: 5.5rem;}

+ 4 - 2
src/main/webapp/ux/mo/css/layout_m.css

@@ -465,10 +465,11 @@
 .pd.deal .pd_detail > .inner:nth-of-type(3){margin-bottom:0;}
 .pd_detail .pd_info > .inner.wide,
 .pd_detail > .inner.wide{padding-left:0!important; padding-right:0!important; padding-bottom:0;}
-.pd_detail .movbox {position: relative;height: 0;padding-top: 100%;padding-bottom:50.25%;overflow: hidden;transition: all 300ms ease;transform: scale(1);}
+.pd_detail .movbox {position: relative;height: 0;padding-top: 100%;padding-bottom:50.35%;overflow: hidden;transition: all 300ms ease;transform: scale(1);}
 .pd_detail .movbox #prodMovBtn{background: rgb(246 55 55 / 0%);  position: absolute;top: 0;left: 0;width: 100%;height: 100%;border: none;color: transparent;font-size: 0.1rem;z-index: 2;}
 /* .pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 100%;height: 100%;z-index: 1;} */
-.pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 300%;height: 100%;z-index: 1;left:-100%}
+/* .pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 300%;height: 100%;z-index: 1;left:-100%} */
+.pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 100%;height: 100%;z-index: 1;} /* 210827_ 영상비율 Portrait type 대응 */
 .pd_detail .thumb_box{position: relative;}
 .pd_detail .thumb_box .thumb_list{position:relative;}
 .pd_detail .thumb_box .thumb_list .thumb{position:relative; width:100%; padding-bottom: 150%;; background-color:#f5f5f5; overflow: hidden;}
@@ -867,6 +868,7 @@
 #shoppingBagModal .shoppingBag_box .link_shoppingBag{margin-top:1rem; padding:0.9rem 2.5rem; display:inline-block; border:0.1rem solid #656565; font-size:1.1rem; color:#fff;}
 
 /* pd_pop > 상품썸네일 크게보기 */
+.lock {overflow:hidden;}
 .pd_pop.full_pop {display:none; position:fixed; top:0; bottom:0; left:0; right:0; margin-top:16.0rem; width:100%; height:calc(100% - 16.0rem); overflow-y:auto; z-index:110; background:#fff; line-height:1;}
 .pd_pop.full_pop.pd_itemthumb_pop {margin-top:0; height:100%;}
 .pd_pop .full_popup_wrap .btn_close {position:fixed; right:3.0rem; top:3.0rem; display:inline-block; z-index:130; cursor:pointer;}

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

@@ -975,7 +975,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review .note li {position:relative; padding-left: 0.8rem;color: #888888; font-size:1.2rem}
 .my .review .note li::before {content: '';position: absolute;top: 0.7rem;left: 0;background: #858585;width: 0.3rem;height: 0.3rem;}
 /* my_order_1 */
-.my .order_sort {padding-top: 2rem;padding-bottom: 1.2rem;margin-bottom: -2.4rem; text-align: right;}
+.my .order_sort {padding-top: 2rem;padding-bottom: 1.2rem;padding-right: 2rem;padding-left: 2rem;margin-left:-2rem; margin-right: -2rem; margin-bottom: -2.4rem;text-align: right;background: #fff;} /* 210827_ 회원,비회원공통 */
 .my .order_sort a {display: inline-block; font-size: 1.2rem; font-weight: 300; padding-right: 1.4rem; background: url('//image.istyle24.com/Style24/images/mo/ico_sort_arrow.png') no-repeat right center; background-size:0.7rem 0.43rem;}
 .my .order_sort a:first-child {margin-right: 2rem;}
 .my .my_order .inner .part_goods {margin-bottom: 1.2rem; margin-top: -1.2rem;margin-top: 1.2rem;}

+ 1 - 0
src/main/webapp/ux/pc/css/common.css

@@ -767,6 +767,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemPic .pd_img,
 .itemPic .pd_mov {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
 .itemPic .pd_mov {z-index: 2;height: 100%;left: -83.45%;width: 267%;}
+.itemPic .pd_mov {position: absolute;width: 100%;left: 0;top: 0;padding: 0;transform: translate(0);} /* 210827_ 영상비율 Portrait type 대응 */
 .itemPic .pd_img {z-index: 1;transition: 0.5s;}
 .itemPic .pd_img::after {content: '';display: block; height: 100%;width: 100%;background: #333;}
 .itemOpt{z-index:3; pointer-events:none;position: absolute;bottom: -120px; left: 0; right: 0; width: 100%; height:62px;padding: 25px 0; text-align:center; color: #fff; background: #000; opacity: 0.8; transition-duration:0.45s;}

+ 4 - 2
src/main/webapp/ux/pc/css/layout.css

@@ -3154,7 +3154,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.modal[class*="reviewdetail_pop"] .swiper-button-next {right:-70px;}
 	.modal[class*="reviewdetail_pop"] .swiper-button-prev:after {content:''; display:block; position:absolute; top:0px; left:0; width:34px; height:34px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; transform:rotate(-135deg); -webkit-transform:rotate(-135deg);}
 	.modal[class*="reviewdetail_pop"] .swiper-button-next:after {content:''; display:block; position:absolute; top:0px; right:0; width:34px; height:34px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; transform:rotate(45deg); -webkit-transform:rotate(45deg);}
-	.modal[class*="reviewdetail_pop"] .modal-body .pop_cont {max-height:none;}
+	.modal[class*="reviewdetail_pop"] .modal-body .pop_cont {height:auto;max-height:none;}
 	.modal[class*="reviewdetail_pop"] .modal-header h5.modal-title {display:inline-block; margin:0; font-size:24px; font-weight:500;}
 	.modal[class*="reviewdetail_pop"] .modal-header .txt {margin-top:20px; color:#666; font-size:16px; font-weight:300;}
 	.modal[class*="reviewdetail_pop"] .modal-body .pop_cont {line-height:1;}
@@ -3172,6 +3172,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.modal[class*="reviewdetail_pop"] .detail .review .pic .thumb iframe {width: 140%;transform:none;left: -40%;right: 0;top:0;bottom: 0;max-width: 140%;}
 	.modal[class*="reviewdetail_pop"] .detail .review .pic .thumb iframe img {width: 140%;transform:none;left: -40%;right: 0;top:0;bottom: 0;max-width: 140%;}
 	.modal[class*="reviewdetail_pop"] .detail .review .pic .thumb.mov iframe {width: 100%;transform:none;left: 0%;right: 0;top:0;bottom: 0;max-width: 100%;}
+	/* 210827_ 영상비율 Portrait type 대응 */
+	.modal[class*="reviewdetail_pop"] .detail .review .pic .thumb iframe {width: 100%;transform:none;left: 0%;right: 0;top:0;bottom: 0;max-width: 100%;}
 
 	.modal[class*="reviewdetail_pop"] .detail .review .review_cont {display:table-cell; padding-left:50px; vertical-align:top;}
 	.modal[class*="reviewdetail_pop"] .detail .review .review_cont .box_wrap {display:block; height:455px; overflow-y:auto;}
@@ -3554,7 +3556,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .area_info .inner_search input[type='text'] {width:96%; border:none; padding:2px 0px 10px; color:#222; font-size:30px;}
 	.sch_result .area_info .inner_search input[type='text']::placeholder {color:#888;}
 	.sch_result .area_info .inner_search button {display:inline-block; width:24px; height:24px; background:url('//image.istyle24.com/Style24/images/pc/ico_search_faq.png') no-repeat 50% 50%; background-size:100% auto; overflow:hidden; font-size:1px; text-indent:-999px;}
-	.sch_result .area_info .inner_search .autokeyword {display:none; position:absolute; left:0; top:34px; width:100%; padding:0px; background:#fff; border:1px solid #222; z-index:5;}
+	.sch_result .area_info .inner_search .autokeyword {display:none; position:absolute; left:0; top:50px; width:100%; padding:0px; background:#fff; border:1px solid #222; z-index:5;}
 	.sch_result .area_info .inner_search .autokeyword.active {display:block;}
 	.sch_result .area_info .inner_search .autokeyword ul li a {display:block; padding:10px 15px; color:#888;}
 	.sch_result .area_info .inner_search .autokeyword ul li a em {color:#fd4802;}