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

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

jsshin 5 лет назад
Родитель
Сommit
6dfff400ac

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

@@ -1117,7 +1117,7 @@
 	<!-- 브랜드 전체 조회 -->
 	<select id="getAllBrandList" parameterType="BrandGroup" resultType="BrandGroup">
 		/* TsfDisplay.getAllBrandList */
-		SELECT	Z.BRAND_GROUP_NO
+		SELECT	DISTINCT Z.BRAND_GROUP_NO
 		      , FN_GET_BRAND_INITIAL(Z.BRAND_GROUP_NM) AS BRAND_INITIAL
 		      , Z.BRAND_GROUP_NM
 		      , Z.DISP_NM_LANG

+ 22 - 5
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -20,6 +20,9 @@
 
 	<!-- 장바구니 화면 -->
 	<form id="cartListForm" method="post" action="/order/noMember" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+		<input type="hidden" id="checkAbleCpnNm" value="N" />
+		<input type="hidden" id="ableCpnNm" value="" />
+
 		<div class="inner shotDelvSelect">
 			<div class="od_method">
 				<div class="tbl_tit">
@@ -178,7 +181,7 @@
 						</div>
 
 						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
-							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span>
 						</div>
 
 						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
@@ -281,7 +284,7 @@
 						</div>
 
 						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
-							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span>
 						</div>
 
 						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
@@ -340,7 +343,7 @@
 						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
 						<input type="hidden" name="orgSavePntAmt" th:value="${cart.orgSavePntAmt}" />
 
-						<button type="button" class="btn_delete"><span><em class="sr-only">상품삭제</em></span></button>
+						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
 							<div class="form_field">
 								<input th:id="|od_item_${cart.cartSq}|" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}"
@@ -404,7 +407,7 @@
 						</div>
 
 						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
-							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span>
 						</div>
 
 						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
@@ -739,6 +742,7 @@
 			function serialCpnApply() {
 				let cartArr = [];
 				let currPrices = [];
+				let rdCpnNm = $("#cartListForm #serialCpnNm").val();
 
 				if(!$("#serialCpnNm").val()) {
 					mcxDialog.alert("할인코드를 입력해주세요.");
@@ -833,7 +837,12 @@
 							if(cpnInfo.downloadCnt > 0) {
 								mcxDialog.alert("성공적으로 등록되었습니다.");
 							}
+
+							$("#cartListForm #checkAbleCpnNm").val("Y");
+							$("#cartListForm #ableCpnNm").val(rdCpnNm);
 						} else {
+							$("#cartListForm #checkAbleCpnNm").val("N");
+							$("#cartListForm #ableCpnNm").val("");
 							mcxDialog.alert(result.serialCpnInfo.result);
 						}
 					}
@@ -961,6 +970,7 @@
 						$(".selfGoodsDelv").html("<span class='dlvr_fee delvFeeArea'>배송비 무료</span>");
 					} else {
 						let html = "<span class='dlvr_fee delvFeeArea'>배송비 <em>" + Number(order.wmsDelvFee).toLocaleString() + "</em> 원</span><span>STYLE24  배송</span>";
+						$(".selfGoodsDelv").parent().find(".goods_dlvr_save a").attr("href", "javascript:fnGetDelvFeeSaveGoods('WMS', '" + (order.minOrdAmt - order.compSumPrice) + "');")
 						$(".selfGoodsDelv").parent().find(".goods_dlvr_save").show();
 						$(".selfGoodsDelv").html(html);
 					}
@@ -994,6 +1004,7 @@
 								$(".delvList").find(".delv_" + delv.delvFeeCd).html("<span class='dlvr_fee delvFeeArea'>배송비 무료</span><span class='dlvr_fee'><em>" + delv.supplyCompNm + "</em> 업체직배송</span>");
 							} else {
 								let html = "<span class='dlvr_fee delvFeeArea'>배송비 <em>" + Number(delv.delvFee).toLocaleString() + "</em>원</span><span class='dlvr_shop'><em>" + delv.supplyCompNm + "</em> 업체직배송</span>";
+								$(".delvList").find(".delv_" + delv.delvFeeCd).parent().find(".goods_dlvr_save a").attr("href", "javascript:fnGetDelvFeeSaveGoods('" + delv.delvFeeCd + "','" + (delv.minOrdAmt - delv.compSumPrice) +  "');")
 								$(".delvList").find(".delv_" + delv.delvFeeCd).parent().find(".goods_dlvr_save").show();
 								$(".delvList").find(".delv_" + delv.delvFeeCd).html(html);
 							}
@@ -1014,7 +1025,13 @@
 
 				// 할인코드 쿠폰 금액 재확인
 				if($("#cartListForm #serialCpnNm").val()) {
-					serialCpnApply();
+					if($("#cartListForm #checkAbleCpnNm").val() == "Y" && $("#cartListForm #ableCpnNm").val() == $("#cartListForm #serialCpnNm").val()) {
+						serialCpnApply();
+					} else {
+						$("#cartListForm .totDcAmt").text(Number(totDcAmt).toLocaleString());
+						$("#cartListForm .sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
+						cancelCartCpn();
+					}
 				} else {
 					$("#cartListForm .totDcAmt").text(Number(totDcAmt).toLocaleString());
 					$("#cartListForm .sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());

+ 13 - 2
src/main/webapp/WEB-INF/views/mob/display/CategoryMainFormMob.html

@@ -61,7 +61,7 @@
 				</th:block>
 
 				<th:block th:if="${contentsLoc=='002'}">
-					<div class="inner wide" th:if="${newGoodsList != null}">
+					<div class="inner wide" th:if="${newGoodsList != null and !newGoodsList.empty}">
 						<div class="new_item">
 							<h2 class="dp_subtitle" th:text="${contentsTitle}">신상품</h2>
 							<div class="swiper-container item_list">
@@ -93,7 +93,7 @@
 				</th:block>
 
 				<th:block th:if="${contentsLoc=='003'}">
-					<div class="inner" th:if="${bestGoodsList != null}">
+					<div class="inner" th:if="${bestGoodsList != null and !bestGoodsList.empty}">
 						<div class="best_item">
 							<h2 class="dp_subtitle" th:text="${contentsTitle}">베스트 상품</h2>
 							<div class="item_list">
@@ -115,6 +115,17 @@
 												<p class="itemPrice"><span class="itemPrice_original" th:if="${item.currPrice != item.listPrice}" th:text="${#numbers.formatInteger(item.listPrice,3,'COMMA')}">89,000</span>[[${#numbers.formatInteger(item.currPrice,1,'COMMA')}]]
 													<span class=" itemPercent" th:if="${item.currPrice != item.listPrice}" th:text="${(item.listPrice == 0 ? 0 : #numbers.formatDecimal((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
 												</p>
+												<div class="itemcolorchip">
+													<th:block th:each="option, idx : ${item.colorArr}" th:with="colorArray=${#strings.arraySplit(idx.current,':')}">
+														<span th:if="${colorArray[1]=='#FFFFFF'}" th:style="${'background-color:'+colorArray[1]+';border:1px solid #aaa;'}" class="chip_color" th:value="${colorArray[0]}"></span>
+														<span th:if="${colorArray[1]!='#FFFFFF'}" th:style="${'background-color:'+colorArray[1]+';'}" class="chip_color" th:value="${colorArray[0]}"></span>
+													</th:block>
+												</div>
+												<p class="itemBadge">
+													<th:block th:each="option, idx : ${item.benefitArr}" th:with="iconArray=${#strings.arraySplit(idx.current,':')}" >
+														<span class="badge13" th:if="${idx.index<3}" th:value="${iconArray[0]}" th:text="${iconArray[1]}"></span>
+													</th:block>
+												</p>
 												<div class="itemComment" th:if="${not #strings.isEmpty(item.goodsTnm)}" th:text="${item.goodsTnm}">#주문 폭주 상품</div>
 											</a>
 										</div>

+ 44 - 22
src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html

@@ -315,8 +315,8 @@
 	}
 
 	$(document).ready(function(){
-		//setHtop();
-
+		setHtop();
+		more_br();
 		var spc = $('.swiper-pagination-current');
 		var spt = $('.swiper-pagination-total');
 		setInterval(function(){
@@ -356,6 +356,38 @@
 		}
 	}
 
+	// 210609_ 추가 : '더보기' 노출관련 (show/hide, 토글)
+	// 더보기 show/hide
+	function more_br(){
+		var desc_br = $('.lb_text .active').height();
+		if (desc_br < 50) {
+			$('.lb_text .active').css({"height": "auto"});
+			$('.lb_text .btn').css({"display": "none"});
+			return 0;
+		}else{
+			$('.lb_text .active').css({"height": "3.4rem"});
+			$('.lb_text .btn').css({"display": "inline-block"});
+		};
+	};
+	// 더보기 토글
+	var count = 0;
+	function view_fold(){
+		document.querySelector(".lb_text button").onclick = function () {
+			if(count === 0) {
+				$('.lb_text .active').css('height', 'auto');
+				document.querySelector(".lb_text .btn p").innerText="접기";
+				document.querySelector(".lb_text .btn span").style.background="url(/images/mo/br_arrow_up.png)";
+				count = 1;
+			} else {
+				$('.lb_text .active').css('height', '3.4rem');
+				document.querySelector(".lb_text .btn p").innerText="더보기";
+				document.querySelector(".lb_text .btn span").style.background="url(/images/mo/br_arrow_down.png)";
+				count = 0;
+			}
+		}
+	};
+	view_fold();
+
 	// 룩북 슬라이드
 	var rcmdPicimgSwiper = new Swiper('.recommendedArea .area_slider .swiper-container', {
 		loop: true,
@@ -371,7 +403,7 @@
 		//},
 		on: {
 			slideChange:function(){
-				// 05.06_ 추가 : .ioTit , .ioBtn
+				// 210506_ 추가 : .ioTit , .ioBtn
 				$('.text_cont').removeClass('active');
 				$('.ioTit').removeClass('active');
 				$('.itemsOut').removeClass('active');
@@ -380,6 +412,9 @@
 				$('.ioTit').eq(this.realIndex).addClass('active');
 				$('.itemsOut').eq(this.realIndex).addClass('active');
 				$('.ioBtn').eq(this.realIndex).addClass('active');
+				// 210609_ 추가 : '더보기' 노출관련
+				$('.text_cont').removeAttr("style");
+				more_br();
 			}
 		},
 	});
@@ -406,26 +441,13 @@
 		//},
 	});
 
-	// 더보기
-	var count = 0;
-	function view_fold(){
-		document.querySelector(".lb_text button").onclick = function () {
-			if(count === 0) {
-				//document.querySelector(".lb_text .text_cont").style.height = "auto";
-				$('.lb_text .text_cont').css('height', 'auto');
-				document.querySelector(".lb_text .btnText p").innerText="접기";
-				document.querySelector(".lb_text .btnText span").style.background="url(/images/mo/br_arrow_up.png)";
-				count = 1;
-			} else {
-				//document.querySelector(".lb_text .text_cont").style.height = "3.4rem";
-				$('.lb_text .text_cont').css('height', '3.4rem');
-				document.querySelector(".lb_text .btnText p").innerText="더보기";
-				document.querySelector(".lb_text .btnText span").style.background="url(/images/mo/br_arrow_down.png)";
-				count = 0;
-			}
-		}
+	//210527_ 추가 : #htopSub 서브헤더와 페이지 키클래스 .br을 가지고 있을 시 여백 조정.
+	if($('#htopSub').length && $('main').hasClass('br')){
+		$('section.br_lookbook').css('marginTop','5.5rem');
+	}else{
+		$('section.br_lookbook').css('marginTop','11rem');
 	}
-	view_fold();
+
 	/*]]>*/
 </script>
 

+ 37 - 36
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -93,7 +93,7 @@
 
 					<th:block th:if="${contentsLoc=='003'}">
 						<!-- 3. 트렌디한 신상아이템 -->
-						<div class="inner" th:if="${mainData.goodsList != null}">
+						<div class="inner" th:if="${mainData.goodsList != null and !mainData.goodsList.empty}">
 							<div class="main_trendy">
 								<th:block th:if="${mainData.contentsTitle != null and !mainData.contentsTitle.empty}">
 									<div class="titWrap">
@@ -143,11 +143,9 @@
 						<div class="inner">
 							<div class="main_it">
 								<div class="titWrap">
-									<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
-										<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
-											<h2 th:text="${contentsTitle}"></h2>
-										</a>
-									</th:block>
+									<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_BEST_MAIN);">
+										<h2 th:text="${contentsTitle}"></h2>
+									</a>
 								</div>
 								<div class="inner_head">
 									<ul class="it_nav">
@@ -240,7 +238,7 @@
 					<th:block th:if="${contentsLoc=='006'}">
 						<!-- 6. 타임딜 : 슬라이드 -->
 						<th:block th:each="socialData, socialStat : ${mainData.socialInfo}">
-						<div class="inner bg_dark" th:if="${socialData.socialGoodsList != null}">
+						<div class="inner bg_dark" th:if="${socialData.socialGoodsList != null and !socialData.socialGoodsList.empty}">
 							<div class="main_deal">
 								<div class="titWrap">
 									<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_SOCIAL_MAIN);">
@@ -293,7 +291,7 @@
 
 					<th:block th:if="${contentsLoc=='007'}">
 						<!-- 7. 브랜드픽 -->
-						<div class="inner" th:if="${mainData.ContentsList != null}">
+						<div class="inner" th:if="${mainData.ContentsList != null and !mainData.ContentsList.empty}">
 							<div class="main_pick" >
 								<div class="titWrap">
 									<h2 th:text="${contentsTitle}"></h2>
@@ -368,7 +366,7 @@
 
 					<th:block th:if="${contentsLoc=='008'}">
 						<!-- 8. 가로 긴 배너 슬라이드 -->
-						<div class="inner wide">
+						<div class="inner wide" th:if="${mainData.ContentsList != null and !mainData.ContentsList.empty}">
 							<div class="main_1stage">
 								<div class="swiper-container post-bnnWide">
 									<div class="swiper-wrapper">
@@ -399,7 +397,7 @@
 
 					<th:block th:if="${contentsLoc=='009'}">
 						<!-- 9. MD추천 스타일 -->
-						<div class="inner">
+						<div class="inner" th:if="${mainData.mdPickList != null and !mainData.mdPickList.empty}">
 							<div class="main_recomm">
 								<div class="titWrap">
 									<h2 th:text="${contentsTitle}">MD가 추천하는 스타일</h2>
@@ -723,7 +721,7 @@
 
 					<th:block th:if="${contentsLoc=='011'}">
 						<!-- 11. TV 슬라이드 -->
-						<div class="inner wide bg_dark" th:if="${mainData.ContentsList != null}">
+						<div class="inner wide bg_dark" th:if="${mainData.ContentsList != null and !mainData.ContentsList.empty}">
 							<div class="titWrap">
 								<h2 data-style="unusual" th:text="${mainData.contentsTitle}">STYLE24 TV</h2>
 							</div>
@@ -755,42 +753,45 @@
 		var mainLayoutList = [[${mainLayoutList}]];
 		// console.log(mainLayoutList);
 
-		var targetTime = $("#socailForm").find("input[name=targetTime]").val().toDate("YYYYMMDD");
-		if(targetTime != null && targetTime != ''){
-			/* 핫딜 countDown */
-			var endTime = new Date(targetTime); // 남은시간 지정
-			endTime = (Date.parse(endTime) / 1000);
+		if(!gagajf.isNull($("#socailForm").find("input[name=targetTime]").val())){
+			var targetTime = $("#socailForm").find("input[name=targetTime]").val().toDate("YYYYMMDD");
+			if(targetTime != null && targetTime != ''){
+				/* 핫딜 countDown */
+				var endTime = new Date(targetTime); // 남은시간 지정
+				endTime = (Date.parse(endTime) / 1000);
 
-			var countdown = document.getElementById("tiles"); // get tag element
+				var countdown = document.getElementById("tiles"); // get tag element
 
-			getCountdown();
+				getCountdown();
 
-			setInterval(function () { getCountdown(); }, 1000);
+				setInterval(function () { getCountdown(); }, 1000);
 
-			function getCountdown(){
-				// find the amount of "seconds" between now and target
-				var now = new Date();
-				now = (Date.parse(now) / 1000);
+				function getCountdown(){
+					// find the amount of "seconds" between now and target
+					var now = new Date();
+					now = (Date.parse(now) / 1000);
 
-				var timeLeft = endTime - now;
+					var timeLeft = endTime - now;
 
-				var days = Math.floor(timeLeft / 86400);
-				var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
-				var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
-				var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
+					var days = Math.floor(timeLeft / 86400);
+					var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
+					var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
+					var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
 
-				if (hours < '10') { hours = '0' + hours; }
-				if (minutes < '10') { minutes = '0' + minutes; }
-				if (seconds < '10') { seconds = '0' + seconds; }
+					if (hours < '10') { hours = '0' + hours; }
+					if (minutes < '10') { minutes = '0' + minutes; }
+					if (seconds < '10') { seconds = '0' + seconds; }
 
-				// format countdown string + set tag value
-				countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
-			}
+					// format countdown string + set tag value
+					countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
+				}
 
-			function pad(n) {
-				return (n < 10 ? '0' : '') + n;
+				function pad(n) {
+					return (n < 10 ? '0' : '') + n;
+				}
 			}
 		}
+
 		// 컨텐츠 호출
 		$(document).ready(function() {
 			// 몰메인 띠배너 표출

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

@@ -32,7 +32,7 @@
 											<div class="img">
 												<img th:src="${@environment.getProperty('domain.image') + item.imgPath2}" alt="">
 											</div>
-											<div class="txtWrap">
+											<div class="txtWrap" th:classAppend="${(item.strVar7 == 'BLACK') ? '' :'w'}">
 												<p class="subject">
 													<input type="hidden" name="mainTitle" th:value="${item.strTitle1}"/>
 												</p>
@@ -55,7 +55,7 @@
 				</th:block>
 
 				<th:block th:if="${contentsLoc=='002'}">
-					<div class="inner wide" th:if="${mdPickGoodsList != null}">
+					<div class="inner wide" th:if="${mdPickGoodsList != null and !mdPickGoodsList.empty}">
 						<div class="md_item">
 							<h2 class="dp_subtitle" th:text="${contentsTitle}">MD가 추천하는 아울렛 아이템</h2>
 							<div class="swiper-container item_list">
@@ -91,7 +91,7 @@
 				</th:block>
 
 				<th:block th:if="${contentsLoc=='003'}">
-					<div class="inner" th:if="${bestGoodsList != null}">
+					<div class="inner" th:if="${bestGoodsList != null and !bestGoodsList.empty}">
 						<div class="best_item">
 							<h2 class="dp_subtitle" th:text="${contentsTitle}">베스트 상품</h2>
 							<div class="item_list">

+ 15 - 1
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -16,6 +16,8 @@
 <div id="cartAjaxArea">
 	<form id="cartListForm" method="post" action="/order/noMember" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 		<!--<input type="hidden" name="cartCpnDcAmt" id="cartCpnDcAmt" th:value="${param.cartCpnDcAmt}" />-->
+		<input type="hidden" id="checkAbleCpnNm" value="N" />
+		<input type="hidden" id="ableCpnNm" value="" />
 
 		<!-- CONT-BODY -->
 		<div class="od_cont">
@@ -707,6 +709,7 @@
 		function serialCpnApply() {
 			let cartArr = [];
 			let currPrices = [];
+			let rdCpnNm = $("#cartListForm #serialCpnNm").val();
 
 			if(!$("#serialCpnNm").val()) {
 				mcxDialog.alert("할인코드를 입력해주세요.");
@@ -805,7 +808,12 @@
 						if(cpnInfo.downloadCnt > 0) {
 							mcxDialog.alert("성공적으로 등록되었습니다.");
 						}
+
+						$("#cartListForm #checkAbleCpnNm").val("Y");
+						$("#cartListForm #ableCpnNm").val(rdCpnNm);
 					} else {
+						$("#cartListForm #checkAbleCpnNm").val("N");
+						$("#cartListForm #ableCpnNm").val("");
 						mcxDialog.alert(result.serialCpnInfo.result);
 					}
 				}
@@ -987,7 +995,13 @@
 
 			// 할인코드 쿠폰 금액 재확인
 			if($("#cartListForm #serialCpnNm").val()) {
-				serialCpnApply();
+				if($("#cartListForm #checkAbleCpnNm").val() == "Y" && $("#cartListForm #ableCpnNm").val() == $("#cartListForm #serialCpnNm").val()) {
+					serialCpnApply();
+				} else {
+					$("#cartListForm .totDcAmt").text(Number(order.totDcAmt).toLocaleString());
+					$("#cartListForm .sumRealPayAmt").text(Number(order.sumRealPayAmt + order.totDelvFee).toLocaleString());
+					cancelCartCpn();
+				}
 			} else {
 				$("#cartListForm .totDcAmt").text(Number(order.totDcAmt).toLocaleString());
 				$("#cartListForm .sumRealPayAmt").text(Number(order.sumRealPayAmt + order.totDelvFee).toLocaleString());

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

@@ -25,7 +25,7 @@
 <!--			<th:block th:if="${brandMainLayoutData.ContentsList != null and !brandMainLayoutData.ContentsList.empty}">-->
 				<th:block th:if="${contentsLoc=='004'}">
 					<!-- 1. 비주얼 슬라이드 -->
-					<div class="content wide main_visual brand_visual" th:if="${brandMainLayoutData.ContentsList != null}">
+					<div class="content wide main_visual brand_visual" th:if="${brandMainLayoutData.ContentsList != null and !brandMainLayoutData.ContentsList.empty}">
 						<div class="cont_head dpnone">
 							<p class="t_c">비주얼 슬라이드</p>
 						</div>

+ 6 - 4
src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html

@@ -70,7 +70,7 @@
 			<th:block th:if="${contentsLoc=='004'}">
 				<div class="content wide dp_category">
 					<div class="cont_head">
-						<h4>카테고리 바로가기</h4>
+						<h4 th:text="${contentsTitle!=null and contentsTitle!=''}?${contentsTitle}:'카테고리 바로가기'"></h4>
 					</div>
 					<div class="cont_body">
 						<div class="dp_cate_list">
@@ -81,7 +81,7 @@
 
 			<th:block th:if="${contentsLoc=='002'}">
 				<!-- 신상품 -->
-				<div class="content new_item" th:if="${newGoodsList != null}">
+				<div class="content new_item" th:if="${newGoodsList != null and !newGoodsList.empty}">
 					<div class="cont_head">
 						<h4 th:text="${contentsTitle}">신상품</h4>
 					</div>
@@ -118,9 +118,11 @@
 				<!-- //신상품 -->
 			</th:block>
 			<th:block th:if="${contentsLoc=='003'}">
-				<div class="content dp_best_list" th:if="${bestGoodsList != null}">
+				<div class="content dp_best_list" th:if="${bestGoodsList != null and !bestGoodsList.empty}">
 					<div class="cont_head">
-						<h3 class="displayH" th:text="${contentsTitle}">베스트</h3>
+						<div>
+						<h4 th:text="${contentsTitle}">베스트</h4>
+						</div>
 					</div>
 					<div class="cont_body">
 						<div class="list_content">

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

@@ -56,10 +56,11 @@
 				</div>
 			</div>
 
-			<div class="content br_lookbook_view cont_txts" th:if="${lookbookDetailList != null}">
+			<div class="content br_lookbook_view cont_txts" id="lbImgDesc" th:if="${lookbookDetailList != null}">
 				<div class="cont_body">
 					<th:block th:each="item, stat : ${lookbookDetailList}">
-						<div class="text_cont" th:text="${item.imgDesc}">
+						<div class="text_cont">
+							<input type="hidden" name="title" th:value="${item.imgDesc}">
 						</div>
 					</th:block>
 				</div>
@@ -395,6 +396,12 @@
 		}
 	});
 
+	$('#lbImgDesc .text_cont').each(function (){
+		var brText = $(this).find("input[name=title]").val();
+		let tag = brText.replace(/(?:\r\n|\r|\n)/g, '<br>');
+		$(this).append(tag);
+	});
+
 /*]]>*/
 </script>
 

+ 44 - 44
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html

@@ -107,7 +107,7 @@
 
 				<!-- 3. 트렌디한 신상아이템 -->
 				<th:block th:if="${contentsLoc=='003'}">
-					<div class="content main_trendy" th:if="${mainLayoutData.goodsList != null}">
+					<div class="content main_trendy" th:if="${mainLayoutData.goodsList != null and !mainLayoutData.goodsList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${mainLayoutData.contentsTitle}"></p>
 						</div>
@@ -147,14 +147,12 @@
 
 				<!-- 4. 잇 아이템 -->
 				<th:block th:if="${contentsLoc=='004'}">
-					<div class="content main_it" th:if="${mainLayoutData.BestItemList != null}">
+					<div class="content main_it" th:if="${mainLayoutData.BestItemList != null and !mainLayoutData.BestItemList.empty}">
 						<div class="cont_head">
 							<p class="displayH" id="id004">
 								<input type="hidden" name="title" th:value="${mainLayoutData.contentsTitle}">
 							</p>
-							<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
-								<a href="javascript:void(0);" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);"><span>전체보기</span></a>
-							</th:block>
+							<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_BEST_MAIN);"><span>전체보기</span></a>
 						</div>
 						<div class="cont_body">
 							<div class="it_nav">
@@ -205,7 +203,7 @@
 
 				<!-- 5. 프로모션배너 -->
 				<th:block th:if="${contentsLoc=='005'}">
-					<div class="content main_2stage" th:if="${mainLayoutData.ContentsList != null}">
+					<div class="content main_2stage" th:if="${mainLayoutData.ContentsList != null and !mainLayoutData.ContentsList.empty}">
 						<div class="cont_head dpnone">
 							<p class="t_c">프로모션배너</p>
 						</div>
@@ -240,7 +238,7 @@
 				<!-- 6. 타임딜 : 슬라이드 -->
 				<th:block th:if="${contentsLoc=='006'}">
 					<th:block th:each="socialData, socialStat : ${mainLayoutData.socialInfo}">
-					<div class="content wide main_deal" th:if="${socialData.socialGoodsList != null}">
+					<div class="content wide main_deal" th:if="${socialData.socialGoodsList != null and !socialData.socialGoodsList.empty}">
 						<div class="cont_head">
 							<p class="displayH" id="id006">
 								<input type="hidden" name="title" th:value="${mainLayoutData.contentsTitle}">
@@ -271,54 +269,56 @@
 							<script>
 								/* 핫딜 countDown */
 								// var target_date = new Date().getTime() + (1000*3600*8); // set the countdown date
-								var target_date = $("#socailForm").find("input[name=targetTime]").val().toDate("YYYYMMDD");
-								var days, hours, minutes, seconds; // variables for time units
+								if(!gagajf.isNull($("#socailForm").find("input[name=targetTime]").val())){
+									var target_date = $("#socailForm").find("input[name=targetTime]").val().toDate("YYYYMMDD");
+									var days, hours, minutes, seconds; // variables for time units
 
-								var countdown = document.getElementById("tiles"); // get tag element
+									var countdown = document.getElementById("tiles"); // get tag element
 
-								getCountdown();
+									getCountdown();
 
-								var timerStop = setInterval(function () { getCountdown(); }, 1000);
+									var timerStop = setInterval(function () { getCountdown(); }, 1000);
 
-								var fixDate = new Date().getTime();
-								var fixTarget = (target_date - fixDate) / 1000;
-								var width = (86400-fixTarget)*100/86400;
+									var fixDate = new Date().getTime();
+									var fixTarget = (target_date - fixDate) / 1000;
+									var width = (86400-fixTarget)*100/86400;
 
-								function getCountdown(){
+									function getCountdown(){
 
-									// find the amount of "seconds" between now and target
-									var current_date = new Date().getTime();
-									var seconds_left = (target_date - current_date) / 1000;
+										// find the amount of "seconds" between now and target
+										var current_date = new Date().getTime();
+										var seconds_left = (target_date - current_date) / 1000;
 
-									seconds_left = seconds_left % 86400;
+										seconds_left = seconds_left % 86400;
 
-									hours = pad( parseInt(seconds_left / 3600) );
-									seconds_left = seconds_left % 3600;
+										hours = pad( parseInt(seconds_left / 3600) );
+										seconds_left = seconds_left % 3600;
 
-									minutes = pad( parseInt(seconds_left / 60) );
-									seconds = pad( parseInt( seconds_left % 60 ) );
+										minutes = pad( parseInt(seconds_left / 60) );
+										seconds = pad( parseInt( seconds_left % 60 ) );
 
-									// format countdown string + set tag value
-									countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
+										// format countdown string + set tag value
+										countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
 
-									var elem = document.getElementById("barCurrent");
-									function progressMove(){
-										width += (100-width)/fixTarget;
-										elem.style.width = width + "%";
-									}
-									progressMove();
+										var elem = document.getElementById("barCurrent");
+										function progressMove(){
+											width += (100-width)/fixTarget;
+											elem.style.width = width + "%";
+										}
+										progressMove();
 
-									if(seconds_left < 1){
-										clearInterval(timerStop);
-										elem.style.width = "100%";
-									}
+										if(seconds_left < 1){
+											clearInterval(timerStop);
+											elem.style.width = "100%";
+										}
 
-								}
+									}
 
-								function pad(n) {
-									return (n < 10 ? '0' : '') + n;
+									function pad(n) {
+										return (n < 10 ? '0' : '') + n;
+									}
+									/* countDown */
 								}
-								/* countDown */
 
 							</script>
 						</div>
@@ -362,7 +362,7 @@
 
 				<!-- 7. 브랜드픽 -->
 				<th:block th:if="${contentsLoc=='007'}">
-					<div class="content main_pick">
+					<div class="content main_pick" th:if="${mainLayoutData.ContentsList != null and !mainLayoutData.ContentsList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${mainLayoutData.contentsTitle}">브랜드 PICK1</p>
 						</div>
@@ -441,7 +441,7 @@
 				<!-- 8. 가로 긴 배너 슬라이드 -->
 				<!-- bnn_1stage -->
 				<th:block th:if="${contentsLoc=='008'}">
-					<div class="content wide main_1stage">
+					<div class="content wide main_1stage" th:if="${mainLayoutData.ContentsList != null and !mainLayoutData.ContentsList.empty}">
 						<div class="cont_head dpnone">
 							<p class="t_c">배너 슬라이드</p>
 						</div>
@@ -479,7 +479,7 @@
 
 				<!-- 9. MD추천 스타일 -->
 				<th:block th:if="${contentsLoc=='009'}">
-					<div class="content main_recomm" >
+					<div class="content main_recomm" th:if="${mainLayoutData.mdPickList != null and !mainLayoutData.mdPickList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${mainLayoutData.contentsTitle}"></p>
 						</div>
@@ -541,7 +541,7 @@
 
 				<!-- 11. TV 슬라이드 -->
 				<th:block th:if="${contentsLoc=='011'}">
-					<div class="content wide main_tv" th:if="${mainLayoutData.ContentsList != null}">
+					<div class="content wide main_tv" th:if="${mainLayoutData.ContentsList != null and !mainLayoutData.ContentsList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${mainLayoutData.contentsTitle}"></p>
 						</div>

+ 36 - 33
src/main/webapp/WEB-INF/views/web/display/OutletMainFormWeb.html

@@ -85,7 +85,7 @@
 
 			<!-- MD 추천 아이템 -->
 			<th:block th:if="${contentsLoc=='002'}">
-			<div class="content md_item" th:if="${mdPickGoodsList != null}">
+			<div class="content md_item" th:if="${mdPickGoodsList != null and !mdPickGoodsList.empty}">
 				<div class="cont_head">
 					<h4 th:text="${contentsTitle}">MD가 추천하는 아울렛 아이템</h4>
 				</div>
@@ -126,7 +126,7 @@
 			<!-- //MD 추천 아이템 -->
 			<!-- 베스트 상품 리스트 -->
 			<th:block th:if="${contentsLoc=='003'}">
-			<div class="content dp_best_list" th:if="${bestGoodsList != null}">
+			<div class="content dp_best_list" th:if="${bestGoodsList != null and !bestGoodsList.empty}">
 				<div class="cont_head">
 					<div>
 						<h4 th:text="${contentsTitle}">베스트</h4>
@@ -182,40 +182,43 @@
 /*<![CDATA[*/
 	$(document).ready(function() {
 		fnSetCategory1Depts();
-	});
 
-	/* SLIDE - 상단 스크롤 슬라이드 배너 */
-	var submain_slide = new Swiper('.dp_submain .swiper-container', {
-		slidesPerView: 4,
-		spaceBetween: 20,
-		freeMode:true,
-		scrollbar: {
-			el: '.dp_submain .swiper-scrollbar',
-			hide: false,
-		},
-	});
+		/* SLIDE - 상단 스크롤 슬라이드 배너 */
+		var submain_slide = new Swiper('.dp_submain .swiper-container', {
+			slidesPerView: 4,
+			spaceBetween: 20,
+			freeMode:true,
+			scrollbar: {
+				el: '.dp_submain .swiper-scrollbar',
+				hide: false,
+			},
+		});
 
-	/* SLIDE - MD ITEMS */
-	var dp_submain_mditem = new Swiper('.dp .md_item .swiper-container', {
-		slidesPerView: 5,
-		spaceBetween: 20,
-		watchSlidesProgress: true,
-		watchSlidesVisibility: true,
-		allowTouchMove: false,
-		speed : 1000,
-		autoplay: {
-			delay: 3000,
-			disableOnInteraction:false,
-		},
-		navigation: {
-			nextEl: '.dp .md_item .swiper-button-next',
-			prevEl: '.dp .md_item .swiper-button-prev',
-		},
-		pagination: {
-			el: '.dp .md_item .swiper-pagination',
-			clickable: true,
-		},
+		/* SLIDE - MD ITEMS */
+		var dp_submain_mditem = new Swiper('.dp .md_item .swiper-container', {
+			slidesPerView: 5,
+			slidesPerGroup: 5,
+			spaceBetween: 20,
+			loop: true,
+			watchSlidesProgress: true,
+			watchSlidesVisibility: true,
+			allowTouchMove: false,
+			speed : 1000,
+			// autoplay: {
+			//     delay: 3000,
+			//     disableOnInteraction:false,
+			// },
+			navigation: {
+				nextEl: '.dp .md_item .swiper-button-next',
+				prevEl: '.dp .md_item .swiper-button-prev',
+			},
+			pagination: {
+				el: '.dp .md_item .swiper-pagination',
+				clickable: true,
+			},
+		});
 	});
+
 // 카테고리1Depts 설정
 	var fnSetCategory1Depts = function() {
 		let allCate = [[${allCateList}]];

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

@@ -1717,8 +1717,9 @@
 .dp .dp_outlets .outlets_visual img {width: 100%;}
 .dp .dp_outlets .outlets_visual .swiper-pagination-fraction {bottom: 4rem ; width:auto; left: 2rem; background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.7rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
 .dp .dp_outlets .outlets_visual .swiper-pagination-current {font-weight: 600;}
-.dp .dp_outlets .outlets_visual .txtWrap {position: absolute; left: 2rem; bottom: 9rem; color: fff;}
-.dp .dp_outlets .outlets_visual .txtWrap p {color: #fff; font-size: 3rem; font-weight: 500; line-height: 1.2;}
+.dp .dp_outlets .outlets_visual .txtWrap {position: absolute; left: 2rem; bottom: 9rem; color: #222;}
+.dp .dp_outlets .outlets_visual .txtWrap.w {color: #fff;}
+.dp .dp_outlets .outlets_visual .txtWrap p {font-size: 3rem; font-weight: 500; line-height: 1.2;}
 .dp .dp_outlets .outlets_visual .txtWrap p.txt_xs {font-size: 1.4rem; margin-top: 1.6rem; font-weight: 300;}
 .dp .dp_outlets .dp_cate_list {margin:-1.2rem 0;}
 .dp .dp_outlets .dp_cate_list:after {content:''; display: block; clear: both;}
@@ -2311,8 +2312,9 @@
 .br .br_main .submain_visual img {width: 100%;}
 .br .br_main .submain_visual .swiper-pagination-fraction {position:absolute; bottom: 4rem ; width:auto; left: 2rem; background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.7rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
 .br .br_main .submain_visual .swiper-pagination-current {font-weight: 600;}
-.br .br_main .submain_visual .txtWrap {position: absolute; left: 2rem; bottom: 9rem; color: fff;}
-.br .br_main .submain_visual .txtWrap p {color: #fff; font-size: 3rem; font-weight: 500; line-height: 1.2;}
+.br .br_main .submain_visual .txtWrap {position: absolute; left: 2rem; bottom: 9rem; color: #222;}
+.br .br_main .submain_visual .txtWrap.w {color: #fff;}
+.br .br_main .submain_visual .txtWrap p {font-size: 3rem; font-weight: 500; line-height: 1.2;}
 .br .br_main .submain_visual .txtWrap p.txt_xs {font-size: 1.4rem; margin-top: 1.6rem; font-weight: 300;}
 .br .br_main .br_top_info{position:relative; margin-top:-1rem;}
 .br .br_main .br_top_info .br_subtitle{text-align:left;}