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

모바일 일반 상품상세 수정중

eskim 5 лет назад
Родитель
Сommit
7999bbab4e

+ 46 - 0
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubGoodsMob.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GnbSubMob.html
+ * @desc    : GNB Sub (모바일용)
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.08   gagamel     최초 작성
+ *******************************************************************************
+ -->
+<th:block th:fragment="gnb">
+	<header class=" "> <!-- 서브페이지에서는 <header>의 클래스.main 제거 -->
+			<section class="htop" id="htopSub">
+				<button class="btn_back" title="이전페이지로">
+					<span><i class="gl1"></i><i class="gl2"></i><i class="gl3"></i></span>
+				</button>
+				<h1 id="htopTitle"></h1>
+				<div class="button_wrap">
+					<button type="button" class="home" style="display: inline-block;" onclick="cfnGoToPage(_PAGE_MAIN);">
+						<img src="/images/mo/ico_btn_home.png" alt="홈">
+					</button>
+					<button type="button" class="search">
+						<img src="/images/mo/ico_btn_search.png" alt="검색">
+					</button>
+					<button type="button" class="store">
+						<img src="/images/mo/ico_btn_store.png" alt="쇼핑백">
+						<span>99+</span> 
+					</button>
+				</div>
+			</section>
+		</header>	
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+/*]]>*/
+</script>
+
+</th:block>
+
+</html>

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

@@ -61,6 +61,7 @@
 	<script src="/ux/plugins/jquery.serializeObject.min.js"></script>
 	<script src="/ux/plugins/mcxdialog/mcxdialog_ui.js"></script>
 	<script type="text/javascript" src="https://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js"></script>
+	<script type="text/javascript" src="https://file.kollus.com/vgcontroller/vg-controller-client.latest.min.js"></script>
 	<script src="/ux/plugins/lazyload.min.js"></script>
 
 	<script src="https://www.google.com/recaptcha/api.js" async defer></script>

+ 1 - 22
src/main/webapp/WEB-INF/views/mob/common/layout/GoodsLayoutMob.html

@@ -11,28 +11,7 @@
 	
 	<div class="app">
 		<!-- GNB -->
-			
-		<header class=" "> <!-- 서브페이지에서는 <header>의 클래스.main 제거 -->
-			<section class="htop" id="htopSub">
-				<button class="btn_back" title="이전페이지로">
-					<span><i class="gl1"></i><i class="gl2"></i><i class="gl3"></i></span>
-				</button>
-				<h1 id="htopTitle"></h1>
-				<div class="button_wrap">
-					<button class="home">
-						<img src="/images/mo/ico_btn_home.png" alt="홈">
-					</button>
-					<button class="search">
-						<img src="/images/mo/ico_btn_search.png" alt="검색">
-					</button>
-					<button class="store">
-						<img src="/images/mo/ico_btn_store.png" alt="쇼핑백">
-						<span>99+</span>
-					</button>
-				</div>
-			</section>
-		</header>
-
+		<th:block th:replace="~{mob/common/fragments/GnbSubGoodsMob :: gnb}"></th:block>
 		<!--// GNB -->
 		
 		<!-- CONTENT AREA -->

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

@@ -780,7 +780,14 @@
 			return false;
 		});
 			
-			
+
+	      //관심상품 등록
+        $(document).on('click','.pd .itemLike',function(e){
+            $(this).toggleClass('active');
+            return false;
+        });   
+      
+	      
 			// 광고 스크립트용
 			var goodsNavigation = [[${goodsNavigation}]];
 			var cate1Nm = "";

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

@@ -67,7 +67,7 @@
 					</tr>
 					<tr>
 						<th>반품/교환 주소</th>
-						<td><th:block th:if="${deliveryInfo != null and deliveryInfo.delvFeeCd != null}" th:text="${deliveryInfo.rtnLocZipcode +' '+ deliveryInfo.rtnLocBaseAddr +'<br/>'+ deliveryInfo.rtnLocDtlAddr }"></th:block></td>
+						<td><th:block th:if="${deliveryInfo != null and deliveryInfo.delvFeeCd != null}" th:utext="${deliveryInfo.rtnLocZipcode +' '+ deliveryInfo.rtnLocBaseAddr +' '+ deliveryInfo.rtnLocDtlAddr }"></th:block></td>
 					</tr>
 				</tbody></table>
 			</div>

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

@@ -42,11 +42,23 @@
 		<!-- 210409_ 구조변경 : .pd_info, .pd_info1 추가  -->
 		<div class="pd_info">
 			<div class="pd_info1" data-speed="10">
-				<div class="inner wide" th:if="${goodsImgList != null and !goodsImgList.empty}">
+				<div class="inner wide" th:if="${(goodsImgList != null and !goodsImgList.empty) or (goodsVideoList != null and !goodsVideoList.empty)}">
 					<div class="thumb_box">
 						<div class="area_slider">
 							<div class="swiper-container thumb_list">
 								<div class="swiper-wrapper">
+									<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+										<div class="swiper-slide">
+											<div class="movbox">
+												<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+												<iframe id="prodctThumbVideo" class="pd_mov" width="100%" height="100%" th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&autoplay=1&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+												</th:block>
+												<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+												<iframe id="child" class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+												</th:block>
+											</div>
+										</div>
+									</th:block>
 									<th:block th:each="goodsImg, status : ${goodsImgList}">
 									<div class="swiper-slide" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1') 
 																or #strings.contains(goodsImg.sysImgNm,'_L1')
@@ -69,7 +81,6 @@
 						<p>
 							<span class="tt">남은시간</span>
 							<span class="timer">
-								<em id="d-days">0</em>
 								<em id="d-hours">0</em>
 								<em id="d-minutes">0</em>
 								<em id="d-seconds">0</em>
@@ -106,7 +117,7 @@
 						<ul>
 							<li th:each="goodsOption1, status : ${goodsOption1List}">
 								<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
-									<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm+'?RS=50'}" alt="">
+									<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm+'?RS=50'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 								</a>
 							</li>
 						</ul>
@@ -137,7 +148,9 @@
 									(tmtbList != null and !tmtbList.empty) or
 									(freeGoodsList != null and !freeGoodsList.empty)}" >
 				<div class="benefit_box">
-					<dl class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or (tmtbList != null and !tmtbList.empty)}">
+					<dl class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or
+													(tmtbList != null and !tmtbList.empty) or
+													(freeGoodsList != null and !freeGoodsList.empty)}" >
 						<dt>쇼핑혜택</dt>
 						<dd>
 							<th:block th:if="${goodsCouponList != null and !goodsCouponList.empty}">
@@ -154,11 +167,11 @@
 							</th:block>
 							<span th:if="${freeGoodsList != null and !freeGoodsList.empty}">
 							<th:block th:each="freeGoods, status : ${freeGoodsList}" th:if="${status.first}">
-							<th:block th:text="${freeGoods.goodsNm}"></th:block> 증정 <th:block th:if="${freeGoods.allYn == 'Y'}" th:text="${'외 택1'}"></th:block></span>
+							<th:block th:text="${freeGoods.goodsNm}"></th:block> 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="${'외 택1'}"></th:block></span>
 							<button type="button" id="btn_bnfShopping_pop" class="btn_popup" th:onclick="cfGoodsShopBenefitInfo([[${goodsInfo.goodsCd}]])"><span>자세히</span></button>
 						</dd>
 					</dl>
-					<dl class="bnf_card">
+					<dl class="bnf_card"  th:if="${cardInfoList != null and !cardInfoList.empty}">
 						<dt>카드혜택</dt>
 						<dd>
 							<th:block th:each="cardInfo, status : ${cardInfoList}">
@@ -502,7 +515,7 @@
 		<div class="inner">
 			
 			<!-- 리뷰영역 -->
-			<div class="riview_box">
+			<div class="riview_box" th:if="${reviewDisplayYn == 'Y'}">
 				<div class="ex_review">
 					<a href="javascript:void(0);" id="btn_pdReview_pop" th:onclick="cfGoodsReview([[${goodsInfo.goodsCd}]])">	
 						<span class="tit">리뷰 <em class="number">(<th:block  th:text="${(goodsInfo.reviewRegCnt <= 9999) ? #numbers.formatInteger(goodsInfo.reviewRegCnt, 0,'COMMA')  : '9,999+'}"></th:block>)</em></span>
@@ -635,13 +648,23 @@
 							<div class="swiper-container"  th:if="${lookbook.lookbookGoodsList != null and !lookbook.lookbookGoodsList.empty}">
 								<div class="swiper-wrapper">
 									<div class="swiper-slide" th:each="lookbookGoods, goodsStatus : ${lookbook.lookbookGoodsList}" >
-										<div class="item_prod" th:classappend="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}? 'unable' : ''" 
-																th:attr="goodsCd=${lookbookGoods.goodsCd}, optCd=${lookbookGoods.optCd}, minOrdQty=${lookbookGoods.minOrdQty},  goodsType=${lookbookGoods.goodsType}, ithrCd=${ithrCd}, contentsLoc=${contentsLoc}">
+										<div class="item_prod" th:classappend="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}? 'unable' : ''"
+																					th:attr="goodsCd=${lookbookGoods.goodsCd}, optCdInfo=${lookbookGoods.optCdInfo},
+																							minOrdQty=${lookbookGoods.minOrdQty},  goodsType=${lookbookGoods.goodsType}, 
+																							ithrCd=${ithrCd}, contentsLoc=${contentsLoc}"> <!-- 판매불가 상품에 unable 추가 -->
 											<div class="item_state">
+												<th:block th:each="optCd : ${#strings.arraySplit(lookbookGoods.optCdInfo,',')}">
+												<input type="hidden" name="lookbookGoodsOptCd" th:value="${optCd}"/>  
+												</th:block>
 												<button type="button" class="itemLike" th:classappend="${lookbookGoods.wishYn == 'Y'}? 'likeit active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${lookbookGoods.goodsCd}, ithrCd=${ithrCd}, contentsLoc=${contentsLoc}, planDtlSq=''">관심상품 추가</button>
-												<a href="javascript:void(0)" class="itemLink">
+												<th:block th:if="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}">
+												<a href="javascript:void(0);" class="itemLink" >
+												</th:block>
+												<th:block th:unless="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}">
+												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${lookbookGoods.goodsCd}]], '',[[${ithrCd}]],[[${contentsLoc}]] )">
+												</th:block>
 													<div class="itemPic">
-														<img class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+lookbookGoods.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+														<img class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+lookbookGoods.sysImgNm+'?RS=96'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 													</div>
 													<p class="itemBrand" th:text="${lookbookGoods.brandGroupNm}">BRAND NAME</p>
 													<div class="itemName" th:text="${lookbookGoods.goodsFullNm}">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
@@ -1677,34 +1700,91 @@
 		
 		let $obj = $(obj);
 		let $target = $obj.parent().parent().parent().find('.swiper-container').find('.item_prod');
+		let goodsSize = $target.length;
 		let btnType = "C";
 		let params = [];
+		let goodsIdx = 0;
 		
 		$target.each(function(){
+			goodsIdx ++; 
 			if ($(this).hasClass('unable')) {
 				
 			}else{
 				
-				let obj = new Object();
-				obj.goodsCd = $(this).attr("goodsCd");
-				obj.optCd = $(this).attr("optCd");
-				obj.goodsQty = $(this).attr("minOrdQty");
-				obj.goodsType = $(this).attr("goodsType");
-				obj.cartGb = btnType;
-				obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
-				obj.ithrCd = $(this).attr("ithrCd");
-				obj.contentsLoc = $(this).attr("contentsLoc");
-				obj.planDtlSq = '';
-				params.push(obj);
+				// 옵션확인
+				let goodsCnt = $(this).find('input[name=lookbookGoodsOptCd]').length;
+				if (goodsCnt == 1){
+					let arrOpt = $(this).find('input[name=lookbookGoodsOptCd]').val();
+					let arrOptInfo = arrOpt.split(':');
+					
+					let obj = new Object();
+					obj.goodsCd = $(this).attr("goodsCd");
+					//obj.optCd = $(this).attr("optCd");
+					obj.optCd = arrOptInfo[1];
+					obj.goodsQty = $(this).attr("minOrdQty");
+					obj.goodsType = $(this).attr("goodsType");
+					obj.cartGb = btnType;
+					obj.afLinkCd = '';
+					obj.ithrCd = $(this).attr("ithrCd");
+					obj.contentsLoc = $(this).attr("contentsLoc");
+					obj.planDtlSq = '';
+					obj.multiGoodsGb = 'O'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+					if (goodsIdx == goodsSize){
+						obj.multiGoodsGb = 'E'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+					}
+					params.push(obj);
+					
+					// 장바구니담기
+					cfnAddCart(params);	
+				}else{
+					let $goods = $(this);
+					let cartGoodsList = [];
+					let compsList = [];
+					let goodsList = {
+						cartCompsList : new Array()
+					}
+					
+					let arrInfo = $(this).find('input[name=lookbookGoodsOptCd]').val().split(',');	// 상품코드단위
+					
+					
+					$.each(arrInfo, function(idx, item) {
+						let arrOptInfo = item.split(':');
+						
+						let obj = new Object();
+						obj.cartGb = btnType;
+						obj.goodsType = $goods.attr("goodsType");
+						obj.goodsCd = $goods.attr("goodsCd");
+						obj.itemCd =arrOptInfo[0];
+						obj.optCd = arrOptInfo[1];
+						obj.goodsQty = $goods.attr("minOrdQty");
+						obj.afLinkCd = '';
+						obj.ithrCd =  $goods.attr("ithrCd");
+						obj.contentsLoc = $goods.attr("contentsLoc");
+						obj.planDtlSq = ''
+						obj.multiGoodsGb = 'O'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+						if (goodsIdx == goodsSize){
+							obj.multiGoodsGb = 'E'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+						}
+						compsList.push(obj);
+						
+					});
+
+					goodsList.cartCompsList = compsList;
+					cartGoodsList.push(goodsList);
+					
+					// 장바구니담기
+					cfnAddCart(cartGoodsList);
+				}
+			
 			}
 		});
 		
 		// 장바구니담기
-		if (params.length > 0){
+		/* if (params.length > 0){
 			cfnAddCart(params);	
-		}
+		} */
 	}
-	
+	 
 	$(document).ready( function() {
 		
 		$('.timer_box').css('display', 'none');
@@ -1764,10 +1844,9 @@
 					if (seconds < '10') { seconds = '0' + seconds; }
 	
 					if (Number(days) > 0 ){
-						$('#d-days').html(days);	
-					}else{
-						$('#d-days').css('display','none');
+						hours = Number(hours) + (Number(days) * 24);
 					}
+					
 					$('#d-hours').html(hours);
 					$('#d-minutes').html(minutes);
 					$('#d-seconds').html(seconds);		
@@ -1902,6 +1981,12 @@
 			return false;
 		});
 
+		 //관심상품 등록
+        $(document).on('click','.pd .itemLike',function(e){
+            $(this).toggleClass('active');
+            return false;
+        });   
+
 		fnOptionSoldout();
 		
 		// 광고 스크립트용
@@ -1982,6 +2067,47 @@
 		fnEpCouponDown([[${afLinkCd}]], [[${params.goodsCd}]], 1);
 	});
 	
+	/* window.onload = function() {
+		try {
+			var controller = new VgControllerClient({
+				target_window: document.getElementById('child').contentWindow
+			});
+			//console.log(controller.get_screen());
+			//controller.enable_fullscreen_button(true);
+			// 여기서부터 이벤트 리스너를 등록하거나, 웹페이지 Element에 메소드를 bind하면 됩니다.
+		} catch(e) {
+			// Videogateweay Controller Library는 window.postMessage API를 이용하기 때문에
+			// 해당 기능을 지원하지 않는 웹브라우져에서는 동작하지 않습니다.
+			// 이 부분에 적절한 fail-over 코드를 추가하여 주십시요.
+		}
+		controller.mute();
+		controller.play();
+		controller.set_control_visibility(false);
+		
+		$(window).scroll(function(){
+			var scrollTop= $(window).scrollTop();
+			var itemTop=$('.descript_box').offset().top;
+			var winHeight = $(window).height();
+			console.log(winHeight-scrollTop);
+			console.log(winHeight/1.5);
+			if (winHeight-scrollTop <= winHeight/1.5){
+				controller.pause();
+			} else {
+				controller.play();
+				controller.set_control_visibility(false);
+			}
+
+			controller.on('done', function() {
+				controller.play();
+				controller.set_control_visibility(false);
+			});
+		});
+
+		$(document).on('click','.pop_open_btn',function(){
+				$('.modal.photo_comment_popup .pop_detail').toggleClass('active');
+		});
+		
+		}; */
 /*]]>*/
 </script>
 

+ 28 - 22
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html

@@ -17,7 +17,7 @@
 <!-- 상품문의 리스트 내용 -->
 <form id="goodsQnaForm" name="goodsQnaForm" action="#" th:action="@{'/goods/qna/list'}">
 <input type="hidden" name="pageNo"  value ="1"/>
-<input type="hidden" name="pageSize" value ="3"/>
+<input type="hidden" name="pageSize" value ="20"/>
 <input type="hidden" name="relGoodsCd" th:value ="${goodsInfo.goodsCd}"/>
 <div class="pd_qnalist">
 	<div class="info_txt">
@@ -33,7 +33,7 @@
 		<!-- 나열조건결과 있을 때 노출 내용 -->
 		<div class="yesdata">
 			<div class="form_field check_secret">
-				<input id="except_secret" type="checkbox"><label for="except_secret" onclick="fnGetList();"><span>비밀글제외</span></label>
+				<input id="except_secret" name="except_secret" type="checkbox"  onclick="fnSecretGoodsQnaList();"><label for="except_secret"><span>비밀글제외</span></label>
 				<input  type="hidden" name="secretYn" >
 			</div>
 			<div class="ui_row">
@@ -55,12 +55,8 @@
 			</div>
 		</div>
 		<!-- //나열조건결과 없을 때 노출 내용 -->
-		<div class="btn_group_flex"  style="display:none;">
-			<div>
-				<button type="button" class="btn btn_default" id="btnMore">
-					<span>더보기</span>
-				</button>
-			</div>
+		<div class="ui_foot"  style="display:none;">
+			<button class="btn btnIcon_more"  id="btnMore">더보기</button>
 		</div>
 	</div>
 	<div class="btn_group_flex">
@@ -71,18 +67,16 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
-	var fnGoodsQnaListSearch = function() {
-
-		$('#goodsQnaForm  input[name="secretYn"]').val('');
-		if ($("#goodsQnaForm input:checkbox[name=except_secret]").is(':checked')){
-			$('#goodsQnaForm  input[name="secretYn"]').val('N');
-		}
-		
+	var fnGoodsQnaList = function() {
 		gagajf.ajaxFormSubmit($('#goodsQnaForm').prop('action'), '#goodsQnaForm', fnGetListCallback);
 	}
 
 	var fnGetListCallback = function(result) {
 
+		if (result.dataList != null && result.dataList.length > 0) {
+		if (result.paging.pageable.pageNo == 1){
+			$('#ulGoodsQna').html('');
+		}	
 		$.each(result.dataList, function(idx, item) {
 			$('#goodsQnaForm').find('.nodata').hide();
 			let tag = '';
@@ -135,24 +129,36 @@
 			
 			$('#ulGoodsQna').append(tag);
 		});
+			if (result.paging.pageable.totalPage > result.paging.pageable.pageNo) {
+				$('#btnMore').parent().show();
+				$('#goodsQnaForm input[name=pageNo]').val(result.paging.pageable.pageNo + 1);
+			}
 		
-		if (result.paging.pageable.totalPage > result.paging.pageable.pageNo) {
-			$('#btnMore').parent().parent().show();
-			$('#goodsQnaForm input[name=pageNo]').val(result.paging.pageable.pageNo + 1);
-		} else {
+		}else{
 			$('.nodata').show();
-			$('#btnMore').parent().parent().hide();
+			$('#btnMore').parent().hide();
 		}
 	}
 	
+	//
+	var fnSecretGoodsQnaList = function(){
+		$('#goodsQnaForm  input[name="secretYn"]').val('');
+		if ($("#goodsQnaForm input:checkbox[name=except_secret]").is(':checked')){
+			$('#goodsQnaForm  input[name="secretYn"]').val('N');
+		}
+		
+		$('#goodsQnaForm input[name=pageNo]').val(1);
+		fnGoodsQnaList();
+	}
+	
 	// 더보기
 	$('#btnMore').on('click', function() {
-		fnGoodsQnaListSearch();
+		fnGoodsQnaList();
 	});
 	
 	
 	$(document).ready( function() {
-		fnGoodsQnaListSearch();
+		fnGoodsQnaList();
 	});
 	
 	

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

@@ -21,7 +21,7 @@
 	<th:block th:if="${params.goodsOtherGb =='like'}" th:text="${'이 상품과 비슷한 상품'}"></th:block>
 	</h3>
 	<div class="area_slider">
-		<div class="swiper-container swiper-container-initialized swiper-container-horizontal">
+		<div class="swiper-container">
 			<div class="swiper-wrapper">
 				<div class="swiper-slide" th:each="goodsInfo, status : ${goodsList}">
 					<div class="item_prod">
@@ -77,6 +77,7 @@
 			slidesPerView: 3,
 			spaceBetween: 8,
 		});	 
+		
 	});
 	
 /*]]>*/

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

@@ -33,7 +33,7 @@
 				<div class="form_field">
 					<div class="input_box">
 						<div class="lap">
-							<textarea class="doc_itemqna"  name="questContent" cols="30" rows="10" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
+							<textarea class="doc_itemqna"  name="questContent" cols="30" rows="10"  maxlength="500" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
 							<p class="txt_cnt">
 								<span id="itemqna_cnt" class="itemqna_cnt" ><em class="c_primary">0</em>/500자</span>
 							</p>   
@@ -78,7 +78,7 @@
 	$('.pd_qnawrite_pop .doc_itemqna').keyup(function (e){
 		let contentQna = $(this).val();
 		$('.itemqna_cnt').html("(<em class='c_primary'>"+contentQna.length+"</em>/500자)");
-		
+		debugger;
 		if (contentQna.length > 500){
 			alert("최대 500자까지 입력 가능합니다.");
 			$(this).val(contentQna.substring(0, 500));
@@ -88,14 +88,6 @@
 	
 	// 저장
 	var fnGoodsQnaSave = function() {
-		/*// 테스트용
-		 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action')
-				, $('#goodsQnaDetailForm')
-				, function() {
-					mcxDialog.alert("상품 문의가 등록되었습니다. 빠른 시일 내에 답변드리겠습니다.");
-				}
-		);*/ 
-		
 		// 입력 값 체크
 		if (gagajf.isNull($("#goodsQnaDetailForm  textarea[name=questContent]").val())){
 			mcxDialog.alert("문의내용을 입력해주세요.");

+ 13 - 8
src/main/webapp/WEB-INF/views/mob/goods/GoodsShopBenefitFormMob.html

@@ -21,7 +21,7 @@
 		</div>
 		<div class="modal-body">
 			<div class="pop_cont">
-				<div class="benefit_blk" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or (goodsInfo.prePntUsableYn == 'Y')}">
+				<div class="benefit_blk" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or (goodsCoupon1List != null and !goodsCoupon1List.empty)}">
 					<h6>할인혜택</h6>
 					<div class="tbl type1">
 						<table>
@@ -30,9 +30,12 @@
 								<col width="*">
 							</colgroup>
 							<tbody>
-								<tr th:if="${(goodsInfo.prePntUsableYn == 'Y')}">
-									<th>즉시 할인</th>
-									<td th:text="|${#numbers.formatInteger(goodsInfo.pntAmt, 0,'COMMA')}원 할인|">50% 할인</td>
+								<tr th:if="${(goodsCoupon1List != null and !goodsCoupon1List.empty)}">
+									<th>즉시할인</th>
+									<td th:each="goodsCoupon, status : ${goodsCoupon1List}" th:if="${status.first}">최대
+									<th:block th:if="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${#numbers.formatInteger(goodsCoupon.dcVal, 0,'COMMA')}원|"></th:block>
+									<th:block th:unless="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${goodsCoupon.dcVal}%|"></th:block>
+									 할인</td>
 								</tr>
 								<tr th:if="${(goodsCouponList != null and !goodsCouponList.empty)}">
 									<th>쿠폰할인</th>
@@ -71,14 +74,16 @@
 								<col width="*">
 							</colgroup>
 							<tbody>
-								<tr  th:each="freeGoods, status : ${freeGoodsList}">
-									<th><th:block th:text="${#numbers.formatInteger(freeGoods.sectionVal, 0,'COMMA')}"></th:block></th:block><th:block th:text="${(freeGoods.sectionGb == 'G810_10')? '개':'원'}"></th:block> 이상 구매 시</th>
-									<td><p><th:block th:text="${freeGoods.goodsNm}"></th:block> <th:block th:text="${#numbers.formatInteger(freeGoods.itemQty, 0,'COMMA')}"></th:block>개 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="외 택1"></th:block></p></td>
+								<tr th:each="freeGoods, status : ${freeGoodsList}">
+									<th>
+										<th:block th:text="${#numbers.formatInteger(freeGoods.sectionVal, 0,'COMMA')}"></th:block></th:block><th:block th:text="${(freeGoods.sectionGb == 'G810_10')? '개':'원'}"></th:block> 이상 구매 시
+										<p><th:block th:text="${freeGoods.goodsNm}"></th:block> <th:block th:text="${#numbers.formatInteger(freeGoods.itemQty, 0,'COMMA')}"></th:block>개 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="${'외 택1'}"></th:block></p>
+									</th>
 								</tr>
 							</tbody>
 						</table>
 					</div>
-				</div>					 
+				</div>
 			</div>
 		</div>
 	</div>

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

@@ -196,7 +196,7 @@
 												</span>
 												<span th:if="${freeGoodsList != null and !freeGoodsList.empty}">
 												<th:block th:each="freeGoods, status : ${freeGoodsList}" th:if="${status.first}">
-												<th:block th:text="${freeGoods.goodsNm}"></th:block> 증정 <th:block th:if="${freeGoods.allYn == 'Y'}" th:text="${'외 택1'}"></th:block></span>
+												<th:block th:text="${freeGoods.goodsNm}"></th:block> 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="${'외 택1'}"></th:block></span>
 												<button type="button" id="btn_bnfShopping_pop" class="btn_popup" th:onclick="cfGoodsShopBenefitInfo([[${goodsInfo.goodsCd}]])"><span>자세히</span></button>
 											</dd>
 									</div>

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

@@ -84,7 +84,7 @@
 	}
 	
 	var fnGoodsQnaListCallback = function(result) {
-		$('#ulGoodsQna').html('');
+		$('#ulGoodsQna').html('');   
 		$('#goodsQnaForm').find('.nodata').hide();
 		// 목록
 		if (result.dataList != null && result.dataList.length > 0) {

+ 7 - 6
src/main/webapp/ux/mo/css/layout_m.css

@@ -717,6 +717,7 @@
 .pd_detail .pd_samebrand{}
 .pd_detail .pd_relate{}
 .pd_detail .pd_relate .area_slider .itemName {height:3.2rem}
+
 /* 210405 */
 header .htop.trans{position:absolute; background:transparent !important;}
 .pd_qnalist_pop .btn_group_flex > div > .btn{height:5.3rem;}
@@ -725,7 +726,6 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_review_pop .btn_group_flex > div > .btn{height:5.3rem;}
 .modal.pd_pop.pd_qnawrite_pop .modal-footer button{height:5.3rem;}
 .modal.pd_pop.pd_qnawrite_pop .modal-header{border-bottom:0px none;}
-/*.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; font-size:1rem; color:#888888; font-weight:300; margin-left:0; margin-right:0; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width : calc(100% - 30%);overflow:hidden;}*/
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width : calc(100% - 5%)}
 .select_custom .combo .list>li[aria-disabled="true"]{background:#fff;}
 .Purchase_pop .select_custom.on .combo .select{border-bottom:1px solid #dcdcdc}
@@ -741,12 +741,9 @@ header .htop.trans{position:absolute; background:transparent !important;}
 /* 210407 */
 .pd.deal .pd_detail .foldGroup > ul > li{border-bottom:0px none;}
 .pd_listDescrp_pop .deal_list_select .list li{border-bottom:0px none;}
-/*.pd_descrp_pop .item_blk .item_prod .item_state .itemLink .itemBrand{text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:20rem;overflow:hidden; background:red;}
-.pd_descrp_pop .item_blk .item_prod .item_state .itemLink .itemName{overflow: hidden;text-overflow: ellipsis;display: -webkit-box; -webkit-box-orient: vertical; line-height: 1.2em; -webkit-line-clamp: 3; height: 3.6em}*/
 .pd_descrp_pop .item_prod .itemPrice_original{margin-left:0.6rem; margin-right:-0.6rem;}
 .Purchase_pop .item_prod .itemPrice_original{margin-left:0.5rem;}
 .Purchase_pop .item_prod .itemPercent{left:10.2rem}
-/*.Purchase_pop .option_box .opt_size .form_field input[type="radio"]:checked + label{border:1px solid #fd4802;}*/
 /* 210408 */
 .btPopAuto_body .opt_count .number_count span.min_val,
 .btPopAuto_body .opt_count .number_count span.max_val {opacity:0.2;}
@@ -819,7 +816,6 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .dp .popup_box .button_list.clear button{width:100% !important;}
 .dp .open_categori a{display: inline-block;font-size: 1.2rem;font-weight: 300;padding-right: 1.4rem;background: url(/images/mo/ico_sort_arrow.png) no-repeat right center;background-size: 0.7rem 0.43rem;}
 .dp .Bulletship_foot .clear{background:#f5f5f5; margin:4rem -2rem; padding:4rem 0 0rem 2rem;}
-/*.dp .dp_Bulletship .inner:first-child{margin-bottom:0; padding-bottom:0;}*/
 .dp .items_option{padding-top:0; margin:0 2rem;}
 .dp .items_option #filter{height:4.5rem; border:0.1rem solid #dddddd; font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
 .dp .items_option.fix{position:fixed; top:0; z-index:999; width:100%; left:0; margin:0; box-shadow:rgb(0 0 0 / 30%) 0px 3px 15px 0px;}
@@ -855,7 +851,6 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .brand_floormenu .share_like{overflow:hidden;}
 .brand_floormenu .share_like > button{float:left; width:100%; font-size:0; text-indent:-999999px;}
 .brand_floormenu .share_like > button.refresh{background:#000 url(/images/mo/dp_refresh.png) center center no-repeat; background-color:#222222;}
-/*.brand_floormenu .share_like > button.like{background:#000 url(/images/mo/ico_floorbtn_like.png) center center no-repeat; background-size:2rem;}*/
 .brand_floormenu .prd_buy > .buying{display:block; background-color:#fd4802;}
 .brand_floormenu .prd_buy > .cantbuying{display:none;}
 .brand_floormenu.soldout .prd_buy > .buying{display:none;}
@@ -915,6 +910,12 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .modal.photo_comment_popup.pd_bestreviewdetail_pop .modal-body .pop_cont{padding-top:0 !important;}
 .modal.photo_comment_popup.pd_bestreviewdetail_pop .pop_detail .review_list{border:0px none;}
 .modal.photo_comment_popup.pd_bestreviewdetail_pop .pop_detail .review_list ul li{padding:0;}
+/* 210503 */
+.br .br_lookbook .inner .lb_text .text_cont{display:none; height: 3.4rem; overflow: hidden; margin: 0 0 2.4rem; font-size: 1.2rem; font-weight: 300; line-height: 1.8rem;}
+.br .br_lookbook .inner .lb_text .text_cont.active{display:block;}
+.br .br_inlookbook .itemsOut{display:none}
+.br .br_inlookbook .itemsOut.active{display:block}
+
 
 
 

+ 6 - 2
src/main/webapp/ux/style24_link.js

@@ -1031,7 +1031,9 @@ function cfnPutWishList(a) {
 				//		}
 				//	});
 				}
-				fnGetWishList();
+				if ("P" == _frontGb){
+					fnGetWishList();	
+				}
 			} else if (result.status == "중복") {
 				Msg = '이미 등록 되어있습니다.';
 			} else {
@@ -1053,7 +1055,9 @@ function cfnPutWishList(a) {
 			if (result.status == "200") {
 				Msg = '삭제 되었습니다.';
 				$(a).removeClass('active');
-				fnGetWishList();
+				if ("P" == _frontGb){
+					fnGetWishList();	
+				}
 			} else {
 				Msg = '오류로 인해 처리되지 않았습니다.';
 			}