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

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

gagamel 5 лет назад
Родитель
Сommit
0b765f5eb2

+ 26 - 5
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -190,23 +190,29 @@ public class TsfGoodsController extends TsfBaseController {
 			mav.addObject("goodsDealComposeList", goodsDealComposeList);
 
 			Collection<Coupon> goodsCouponList = new ArrayList<Coupon>();
+			ArrayList<String> arrGoodsList = new ArrayList<>();
 			// 상품쿠폰
 			if (goodsDealComposeList != null && !goodsDealComposeList.isEmpty()) {
-
-				ArrayList<String> arrGoodsList = new ArrayList<>();
 				for (Goods goodsCompose : goodsDealComposeList) {
-
 					arrGoodsList.add(goodsCompose.getCompsGoodsCd());
 				}
 
 				String[] arrGoodsCd = arrGoodsList.stream().toArray(String[]::new);
 
 				paramsGoods.setArrGoodsCd(arrGoodsCd);
-				paramsGoods.setMaxRownum(1);
-				goodsCouponList = couponService.getGoodsCouponList(paramsGoods);
 			}
+			paramsGoods.setMaxRownum(1);
+			goodsCouponList = couponService.getGoodsCouponList(paramsGoods);
 			mav.addObject("goodsCouponList", goodsCouponList);
+			
+			// 다다익선
+			paramsGoods.setMaxRownum(1);
+			mav.addObject("tmtbList", goodsService.getTmtbList(paramsGoods));
 
+			// 사은품
+			paramsGoods.setMaxRownum(1);
+			mav.addObject("freeGoodsList", goodsService.getFreeGoodsList(paramsGoods));
+			
 			// 딜용 상품평건수
 			Review review = new Review();
 			review.setGoodsCd(goods.getGoodsCd());
@@ -590,6 +596,21 @@ public class TsfGoodsController extends TsfBaseController {
 		setGoods(paramsGoods);
 		Goods goods = goodsService.getGoodsInfo(paramsGoods);
 
+		if (TscConstants.GoodsType.DEAL.value().equals(goods.getGoodsType())) {	// 딜상품
+			Collection<Goods> goodsDealComposeList = goodsService.getGoodsDealComposeList(paramsGoods);
+			Collection<Coupon> goodsCouponList = new ArrayList<Coupon>();
+			ArrayList<String> arrGoodsList = new ArrayList<>();
+			// 상품쿠폰
+			if (goodsDealComposeList != null && !goodsDealComposeList.isEmpty()) {
+				for (Goods goodsCompose : goodsDealComposeList) {
+					arrGoodsList.add(goodsCompose.getCompsGoodsCd());
+				}
+
+				String[] arrGoodsCd = arrGoodsList.stream().toArray(String[]::new);
+
+				paramsGoods.setArrGoodsCd(arrGoodsCd);
+			}
+			}
 		// 쿠폰정보
 		paramsGoods.setMaxRownum(1);
 		mav.addObject("goodsCouponList", couponService.getGoodsCouponList(paramsGoods));

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

@@ -1031,13 +1031,33 @@
 		                               AND C.TMTB_SECTION_SQ  = D.TMTB_SECTION_SQ  
 		                               AND D.DEL_YN  = 'N'
 		      INNER JOIN TB_TMTB_APPLY_GOODS B ON A.TMTB_SQ = B.TMTB_SQ
+		                                       <choose>
+		                                           <when test="arrGoodsCd != null and arrGoodsCd != ''">
+		                                       AND B.GOODS_CD IN
+		                                           <foreach collection="arrGoodsCd" item="item" index="index"  open="(" close=")" separator=",">
+		                                           UPPER(#{item})
+		                                           </foreach>
+		                                           </when>
+		                                           <otherwise>
 		                                       AND B.GOODS_CD =  #{goodsCd}
+		                                           </otherwise>
+		                                       </choose>
 		                                       AND B.DEL_YN = 'N'
 		                                       AND B.GOODS_GB IN ( 'G800_10', 'G800_20')  -- 기본과 적용상품
 		      LEFT OUTER JOIN TB_TMTB_APPLY_GOODS E ON A.TMTB_SQ = E.TMTB_SQ
-		                                       AND E.GOODS_CD = #{goodsCd}
-		                                       AND E.DEL_YN = 'N'
-		                                       AND E.GOODS_GB = 'G800_30'  -- 제외상품 
+		                                            <choose>
+		                                                <when test="arrGoodsCd != null and arrGoodsCd != ''">
+		                                            AND E.GOODS_CD IN
+		                                                <foreach collection="arrGoodsCd" item="item" index="index"  open="(" close=")" separator=",">
+		                                                UPPER(#{item})
+		                                                </foreach>
+		                                                </when>
+		                                                <otherwise>
+		                                            AND E.GOODS_CD =  #{goodsCd}
+		                                                </otherwise>
+		                                            </choose>
+		                                            AND E.DEL_YN = 'N'
+		                                            AND E.GOODS_GB = 'G800_30'  -- 제외상품 
 		      WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
 		      AND A.TMTB_STAT ='G232_11'  -- 진행중
 		      AND A.DEL_YN = 'N'

+ 0 - 5
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustModifyFormMob.html

@@ -500,11 +500,6 @@
 		cfnOpenCellphoneCertify(_PAGE_MYPAGE_CUSTOMER_MODIFY+'?confirmYn=Y');
 	});
 
-	$(".btn_back").on("click", function () {
-		console.log("here");
-		cfnGoToPage(_PAGE_MYPAGE_CUSTOMER);
-	});
-
 	$(document).ready(function(){
 		if (!gagajf.isNull(sEncData)) {
 			fnNiceCallBack(sEncData, authMethod);

+ 76 - 76
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustPwdModifyFormMob.html

@@ -17,90 +17,90 @@
 <style>
 	.hide{display: none;}
 </style>
-	<div class="modal-dialog" role="document">
-		<div class="modal-content">
-			<div class="modal-header htop">
-				<h5 class="modal-title" id="passwordChangeLabel">비밀번호 변경</h5>
-			</div>
-			<div class="modal-body">
-				<div class="pop_cont">
-					<div class="pass_confirm">
-						<form id="pwdModifyForm" class="form_wrap">
-							<input type="hidden" name="custId" th:value="${custId}"/>
-							<div class="form_field">
-								<label class="input_label sr-only">기존 비밀번호를 입력해주세요.</label>
-								<div class="ui_col_12">
-									<input type="password" id="orgPasswd" name="orgPasswd" placeholder="기존 비밀번호를 입력해주세요." class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="기존 비밀번호"/>
-								</div>
+<div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header htop">
+			<h5 class="modal-title" id="passwordChangeLabel">비밀번호 변경</h5>
+		</div>
+		<div class="modal-body">
+			<div class="pop_cont">
+				<div class="pass_confirm">
+					<form id="pwdModifyForm" class="form_wrap">
+						<input type="hidden" name="custId" th:value="${custId}"/>
+						<div class="form_field">
+							<label class="input_label sr-only">기존 비밀번호를 입력해주세요.</label>
+							<div class="ui_col_12">
+								<input type="password" id="orgPasswd" name="orgPasswd" placeholder="기존 비밀번호를 입력해주세요." class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="기존 비밀번호"/>
 							</div>
-							<div class="form_field">
-								<label class="input_label sr-only">신규 비밀번호를 입력해주세요.</label>
-								<div class="ui_col_12">
-									<input type="password" id="passwd" name="passwd" placeholder="신규 비밀번호를 입력해주세요.(8~20자 영문, 숫자, 특수문자 중 2가지 이상 조합)" class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="신규 비밀번호"/>
-									<!-- case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
-									<div class="help_block">
-										<!-- 사용불가 비밀번호일경우 -->
-										<p class="mt10">
-											<span id="firstFailed" class="c_gray">
-												<i class="ico ico_check gray mr5"></i>영문(대/소문자), 숫자, 특수문자 중 2가지 이상 조합(8~20자)<br>
-											</span>
-											<span id="secondFailed" class="c_gray">
-												<i class="ico ico_check gray mr5"></i>4개이상연속되거나 동일한 문자, 숫자 제외<br>
-											</span>
-											<span id="thirdFailed" class="c_gray">
-												<i class="ico ico_check gray mr5"></i>아이디제외
-											</span>
-										</p>
-										<!-- //사용불가 비밀번호일경우 -->
-										<!-- 사용가능한 비밀번호일경우 -->
-										<p id="avlPwd" class="mt10 hide">
-											<span class="c_black2">
-												<i class="ico ico_check black mr5"></i>사용 가능한 비밀번호입니다.
-											</span>
-										</p>
-										<!-- //사용가능한 비밀번호일경우 -->
-									</div>
-									<!-- //case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
+						</div>
+						<div class="form_field">
+							<label class="input_label sr-only">신규 비밀번호를 입력해주세요.</label>
+							<div class="ui_col_12">
+								<input type="password" id="passwd" name="passwd" placeholder="신규 비밀번호를 입력해주세요.(8~20자 영문, 숫자, 특수문자 중 2가지 이상 조합)" class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="신규 비밀번호"/>
+								<!-- case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
+								<div class="help_block">
+									<!-- 사용불가 비밀번호일경우 -->
+									<p class="mt10">
+										<span id="firstFailed" class="c_gray">
+											<i class="ico ico_check gray mr5"></i>영문(대/소문자), 숫자, 특수문자 중 2가지 이상 조합(8~20자)<br>
+										</span>
+										<span id="secondFailed" class="c_gray">
+											<i class="ico ico_check gray mr5"></i>4개이상연속되거나 동일한 문자, 숫자 제외<br>
+										</span>
+										<span id="thirdFailed" class="c_gray">
+											<i class="ico ico_check gray mr5"></i>아이디제외
+										</span>
+									</p>
+									<!-- //사용불가 비밀번호일경우 -->
+									<!-- 사용가능한 비밀번호일경우 -->
+									<p id="avlPwd" class="mt10 hide">
+										<span class="c_black2">
+											<i class="ico ico_check black mr5"></i>사용 가능한 비밀번호입니다.
+										</span>
+									</p>
+									<!-- //사용가능한 비밀번호일경우 -->
 								</div>
+								<!-- //case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
 							</div>
-							<div class="form_field">
-								<label class="input_label sr-only">신규 비밀번호를 다시 입력해주세요.</label>
-								<div class="ui_col_12">
-									<input type="password" id="confirmPassword" name="confirmPassword" placeholder="신규 비밀번호를 다시 입력해주세요." class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="신규 비밀번호 확인"/>
-									<div class="help_block">
-										<!-- 비밀번호확인 틀렸을경우 -->
-										<p id="misPwd" class="hide">
-											<span class="t_err">
-												새 비밀번호가 일치하지 않습니다.
-											</span>
-										</p>
-										<!-- //비밀번호확인 틀렸을경우 -->
-										<!-- 비밀번호 일치할경우 -->
-										<p id="avlConPwd" class=" hide">
-											<span class="c_black2">
-												<i class="ico ico_check black mr5"></i>새 비밀번호가 일치합니다.
-											</span>
-										</p>
-										<!-- //비밀번호 일치할경우 -->
-									</div>
+						</div>
+						<div class="form_field">
+							<label class="input_label sr-only">신규 비밀번호를 다시 입력해주세요.</label>
+							<div class="ui_col_12">
+								<input type="password" id="confirmPassword" name="confirmPassword" placeholder="신규 비밀번호를 다시 입력해주세요." class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="신규 비밀번호 확인"/>
+								<div class="help_block">
+									<!-- 비밀번호확인 틀렸을경우 -->
+									<p id="misPwd" class="hide">
+										<span class="t_err">
+											새 비밀번호가 일치하지 않습니다.
+										</span>
+									</p>
+									<!-- //비밀번호확인 틀렸을경우 -->
+									<!-- 비밀번호 일치할경우 -->
+									<p id="avlConPwd" class=" hide">
+										<span class="c_black2">
+											<i class="ico ico_check black mr5"></i>새 비밀번호가 일치합니다.
+										</span>
+									</p>
+									<!-- //비밀번호 일치할경우 -->
 								</div>
 							</div>
-							<div class="btn_group_flex">
-								<div>
-									<button type="button" id="btnClose" class="btn btn_default"><span>취소</span></button>
-								</div>
-								<div>
-									<button type="button" id="btnSavePassword" class="btn btn_dark"><span>변경</span></button> <!-- 210409_추가 : btn_password_confirm id 추가 -->
-								</div>
+						</div>
+						<div class="btn_group_flex">
+							<div>
+								<button type="button" id="btnClose" class="btn btn_default"><span>취소</span></button>
+							</div>
+							<div>
+								<button type="button" id="btnSavePassword" class="btn btn_dark"><span>변경</span></button> <!-- 210409_추가 : btn_password_confirm id 추가 -->
 							</div>
-						</form>
-					</div>
+						</div>
+					</form>
 				</div>
 			</div>
-			<div class="modal-footer" style="display:none;"></div>
 		</div>
+		<div class="modal-footer" style="display:none;"></div>
 	</div>
-	<a href="#close-modal" rel="modal:close" id="passwordPop_close" class="close-modal">Close</a>
+</div>
+<a href="#close-modal" rel="modal:close" id="passwordPop_close" class="close-modal">Close</a>
 
 <script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
 <script th:inline="javascript">
@@ -282,7 +282,7 @@
 
 		checkPwd = '';
 		checkConfirmPwd = '';
-		$('.form_control').val('');
+		$('#pwdModifyForm .form_control').val('');
 	}
 
 	$(document).ready(function() {
@@ -292,4 +292,4 @@
 
 	/*]]>*/
 </script>
-</html>
+</html>

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

@@ -856,30 +856,30 @@
 									tag +=' 	<button class="btn_toggle_bnr"><span>열기</span></button>';
 								}
 								tag +='</div>';
-								if(item.strVar8=='Y'){
-									tag+='<div class="close_bnr_area">';
-									tag+=' 	<form class="form_wrap">';
-									tag+=' 		<div class="form_field">';
-									tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
-									tag+=' 		</div>';
-									tag+=' 	</form>';
-									tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
-									tag+='</div>';
-								}
+								//if(item.strVar8=='Y'){
+								//	tag+='<div class="close_bnr_area">';
+								//	tag+=' 	<form class="form_wrap">';
+								//	tag+=' 		<div class="form_field">';
+								//	tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
+								//	tag+=' 		</div>';
+								//	tag+=' 	</form>';
+								//	tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
+								//	tag+='</div>';
+								//}
 							}else if(item.contentsType == 'IMG'){
 								tag+='<div class="bnrtype_img" style="background-color:#'+item.strVar5+';">';
 								tag+=' 	<a href="'+item.strVar1+'" target="">';
 								tag+=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt=""/>';
 								tag+=' 	</a>';
 								tag+='</div>';
-								tag+='<div class="close_bnr_area">';
-								tag+=' 	<form class="form_wrap">';
-								tag+=' 		<div class="form_field">';
-								tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
-								tag+=' 		</div>';
-								tag+=' 	</form>';
-								tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
-								tag+='</div>';
+								//tag+='<div class="close_bnr_area">';
+								//tag+=' 	<form class="form_wrap">';
+								//tag+=' 		<div class="form_field">';
+								//tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
+								//tag+=' 		</div>';
+								//tag+=' 	</form>';
+								//tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
+								//tag+='</div>';
 							}else{
 								tag+='<div class="bnrtype_text" style="background-color:#fd4801;">';
 								tag+=' 	<a href="'+item.strVar1+'" target="">';
@@ -888,15 +888,25 @@
 								tag+=' 		</div>';
 								tag+=' 	</a>';
 								tag+='</div>';
-								tag+='<div class="close_bnr_area">';
-								tag+=' 	<form class="form_wrap">';
-								tag+=' 		<div class="form_field">';
-								tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
-								tag+=' 		</div>';
-								tag+=' 	</form>';
+								//tag+='<div class="close_bnr_area">';
+								//tag+=' 	<form class="form_wrap">';
+								//tag+=' 		<div class="form_field">';
+								//tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
+								//tag+=' 		</div>';
+								//tag+=' 	</form>';
+								//tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
+								//tag+='</div>';
+							}
+							tag+='<div class="close_bnr_area">';
+							tag+=' 	<form class="form_wrap">';
+							tag+=' 		<div class="form_field">';
+							tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
+							tag+=' 		</div>';
+							tag+=' 	</form>';
+							if(item.contentsType != 'OPEN' || (item.contentsType == 'OPEN' && item.strVar8=='Y')){
 								tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
-								tag+='</div>';
 							}
+							tag+='</div>';
 
 							if(bannerYn=="Y"){
 								$('#divTopbanner').html(tag);

+ 63 - 23
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -267,6 +267,13 @@
 								</div>
 
 							</div>
+							<div class="list_content">
+								<div class="list_defult" id="endPage">
+									<div>
+										<p>마지막 페이지 입니다.</p>
+									</div>
+								</div>
+							</div>
 						</div>
 					</form>
 				</div>
@@ -296,7 +303,6 @@
 		var custom_values = [];
 		var custom_values02  = [];
 		var currUrl = document.location.href;
-		console.log('currUrl>>'+currUrl);
 
 		// 컨텐츠 호출
 		$(document).ready( function() {
@@ -413,8 +419,6 @@
 			$("#searchGoodsForm input:hidden[name=dcrateHigh]").remove();
 			let min = data.from;
 			let max = data.to;
-			console.log('DcRate from>>'+custom_values02[min].replace('%',''));
-			console.log('DcRate to>>'+custom_values02[max].replace('%',''));
 			$("#price_input_from").val(0);
 			$("#price_input_to").val(100);
 
@@ -461,11 +465,14 @@
 				gagaInfiniteScroll.draw(htm);
 				fnImgOnoff();
 			}else {
-				if($("#searchForm input[name=pageNo]").val()==1){
-					$('#listBox').html('<li class="none">상품정보가 존재하지 않습니다.</li>');
-				}else{
+				if($("#searchGoodsForm input[name=pageNo]").val()==1){
+					// 필터 값으로 조회 데이터 없을때
 					$('.list_content .list_defult').show();
 					$('.list_content .count_wrap').hide();
+				}else{
+					// 마지막 페이지 일때
+					$('#endPage').show();
+					$('.list_content .count_wrap').hide();
 				}
 				gagaInfiniteScroll.draw('not');
 			}
@@ -474,7 +481,6 @@
 		var fnCreateCategoryList = function (){
 			let actionUrl = '';
 			let brandGroupNo = [[${cateInfo.brandGroupNo}]];
-			console.log('brand::'+[[${cateInfo.brandGroupNo}]]);
 			if(gagajf.isNull(brandGroupNo) || brandGroupNo == 0){
 				actionUrl = '/display/gnb/tab/list';
 			}else{
@@ -483,22 +489,23 @@
 			
 			$.getJSON(actionUrl
 				, function(result, status) {
-					console.log('result.length>>'+result.length);
 					//if (status == 'success') {
 					if (result.length > 0) {
-						console.log('fnGetCategoryList formalGbc:::'+[[${cateInfo.formalGb}]]);
-						console.log('fnGetCategoryList cateGb:::'+[[${cateInfo.cateGb}]]);
 						let formalGb = [[${cateInfo.formalGb}]];
 						let cateGb = 'G032_101';
+						let navNm = '';
 						$('#ulAllCate').html('');
 						if(formalGb=='G009_20'){
+							$("#navNm").hide();
 							$('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\''+cateGb+'\',\'\',\'\',\'\',\'\',\'\',\''+formalGb+'\');">전체</a></li>\n');
+							navNm += '<li class="bread_2depth" id="navNm">아울렛</li><li class="bread_2depth" id="navNm1">전체</li>';
 						}else{
 							$('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\''+cateGb+'\');">전체</a></li>\n');
+							navNm += '<li class="bread_2depth" id="navNm1">전체</li>';
 						}
 						
 						if(gagajf.isNull($("#searchGoodsForm").find("[name=cate1No]").val())){
-							$("#navArea").append('전체');
+							$("#navArea").append(navNm);
 							$("#formTitle").text('전체');
 						}
 
@@ -551,20 +558,26 @@
 					tag += ' class="on"';
 					formTitle = cate1.cate1Nm;
 					$("#formTitle").text(formTitle);
+					$("#navNm").hide();
+					if(formalGb=='G009_20'){
+						navNm += '<li class="bread_2depth" id="navNm1">아울렛</li>';
+					}
+					navNm += '<li class="bread_2depth" id="navNm1">' + cate1.cate1Nm + '</li>';
 					if (brandGroupNo == 0) {
 						$("#navHome").attr('href', '/');
-						$("#navNm").text(cate1.cate1Nm);
+						$("#navArea").append(navNm);
 					} else {
 						$("#navHome").attr('onclick', 'cfnGoToBrandMain(' + brandGroupNo + ');');
-						$("#navNm").text(cate1.cate1Nm);
+						$("#navArea").append(navNm);
 					}
 				}else if(cate1.cate1No == cate1No && cate3No == null){
-					//if(formalGb=='G009_20'){
-					//	$("#navNm").text('아울렛');
-					//}else{
-					//	$("#navNm").text(cate1.cate1Nm);
-					//}
-					$("#navNm").text(cate1.cate1Nm);
+					$("#navNm").hide();
+					if(formalGb=='G009_20'){
+						navNm += '<li class="bread_2depth" id="navNm1">아울렛</li>';
+					}
+					navNm += '<li class="bread_2depth" id="navNm1">' + cate1.cate1Nm + '</li>';
+					$("#navArea").append(navNm);
+					//$("#navNm").text(cate1.cate1Nm);
 				}else if(cate3No != null){
 					$("#navNm").hide();
 				}
@@ -594,8 +607,10 @@
 							$("#navArea").append(navNm);
 							$("#formTitle").text(cate2.cate2Nm);
 						}else if(cate2.cate2No == cate2No){
-							console.log('0111');
-							navNm = '<li class="bread_2depth" id="navNm1">' + cate1.cate1Nm + '</li>';
+							if(formalGb=='G009_20'){
+								navNm += '<li class="bread_2depth" id="navNm1">아울렛</li>';
+							}
+							navNm += '<li class="bread_2depth" id="navNm1">' + cate1.cate1Nm + '</li>';
 							$("#navArea").append(navNm);
 						}
 						if(formalGb=='G009_20'){
@@ -618,13 +633,11 @@
 								tag += '>';
 								tag += '		<a href="javascript:javascript:void(0);" ';
 								if (cate3.cate3No == cate3No && cate4No == null) {
-									console.log('1111');
 									tag += ' class="on"';
 									navNm = '<li class="bread_2depth" id="navNm2">' + cate2.cate2Nm + '</li><li class="bread_2depth" id="navNm3">' + cate3.cate3Nm + '</li>';
 									$("#navArea").append(navNm);
 									$("#formTitle").text(cate3.cate3Nm);
 								}else if(cate3.cate3No == cate3No){
-									console.log('222');
 									navNm = '<li class="bread_2depth" id="navNm2">' + cate2.cate2Nm + '</li><li class="bread_2depth" id="navNm3">' + cate3.cate3Nm + '</li>';
 								}
 								if(formalGb=='G009_20'){
@@ -632,6 +645,33 @@
 								}else{
 									tag += ' onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>';
 								}
+								if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
+									tag += '<div class="sub_cate"';
+									if (cate2.cate2No == cate2No) {
+										tag += ' style="display: block;"';
+									}
+									tag += '>\n';
+									tag += '	<ul>\n';
+									$.each(cate3.cate4List, function (idx4, cate4) {
+										tag += '<li';
+										if (cate4.cate4No == cate4No) {
+											tag += ' class="on"';
+										}
+										tag += '>';
+										tag += '		<a href="javascript:javascript:void(0);" ';
+										if (cate4.cate4No == cate4No) {
+											tag += ' class="on"';
+											navNm = '<li class="bread_2depth" id="navNm3">' + cate2.cate2Nm + '</li><li class="bread_2depth" id="navNm3">' + cate3.cate3Nm + '</li><li class="bread_2depth" id="navNm3">' + cate4.cate4Nm + '</li>';
+											$("#navArea").append(navNm);
+											$("#formTitle").text(cate4.cate4Nm);
+										}
+										if(formalGb=='G009_20'){
+											tag += ' onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ',\'\',\'' + formalGb + '\');">' + cate4.cate4Nm + '</a>';
+										}else{
+											tag += ' onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a>';
+										}
+									});
+								}
 								tag += '</li>\n';
 							});
 							tag += '	</ul>\n';

+ 27 - 15
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -119,22 +119,30 @@
 																(goodsCouponList != null and !goodsCouponList.empty)
 															}" >
 								<dl>
-									<div class="bnf_shopping" th:if="${goodsCouponList != null and !goodsCouponList.empty}">
+									<div class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or
+																		(tmtbList != null and !tmtbList.empty) or
+																		(freeGoodsList != null and !freeGoodsList.empty)}" >
 										<dt>쇼핑혜택</dt>
-										<!------------ 색상 강조 텍스트 영역 <em class="c_primary"></em> 사용요청 ------------>
-										<dd>
-											<span th:if="${goodsCouponList != null and !goodsCouponList.empty}">
-											<th:block th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">
-											최대 <em class="c_primary" >
-												<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>
-											</em> 쿠폰 할인
-											</th:block>
-											</span> 
-											<span><em class="c_primary">99개</em> 이상 구매 시 <em class="c_primary">9,999,999원</em> 할인</span>
-											<span>미니언즈 우산 증정</span>
-											<button type="button" id="btn_bnfShopping_pop" class="btn_popup" th:onclick="cfGoodsShopBenefitInfo([[${goodsInfo.goodsCd}]])"><span>자세히</span></button>
-										</dd>
+											<dd>
+												<span th:if="${goodsCouponList != null and !goodsCouponList.empty}">
+												<th:block th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">
+												최대 <em class="c_primary" >
+													<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>
+												</em> 쿠폰 할인
+												</th:block>
+												</span> 
+												<span th:if="${tmtbList != null and !tmtbList.empty}">
+												<th:block th:each="tmtb, status : ${tmtbList}" th:if="${status.first}">
+												<em class="c_primary"><th:block th:text="${#numbers.formatInteger(tmtb.sectionVal, 0,'COMMA')}"></th:block><th:block th:text="${(tmtb.sectionGb == 'G810_10')? '개':'금액'}"></th:block></em> 이상 구매 시 
+												<em class="c_primary"><th:block th:text="${#numbers.formatInteger(tmtb.dcVal, 0,'COMMA')}"></th:block><th:block th:text="${(tmtb.dcWay == 'G240_10')? '원':'%'}"></th:block></em></em> 할인
+												</th:block>
+												</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 == '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>
 									<div class="bnf_card" th:if="${cardInfoList != null and !cardInfoList.empty}">
 										<dt>카드혜택</dt>
@@ -748,6 +756,10 @@
 		$('.price_box .number  span').html(totalEa.addComma());
 		$('.price_box .price > span').html(totalPrice.addComma());
 		
+		if ($('input[name="cea"]', document.cartForm).length <= 0 ) {
+			$('.price_box').hide();
+		}
+		
 	}
 	
 	//장바구니담기

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

@@ -46,6 +46,7 @@
 												</th:block>
 												<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
 												<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
+												
 												</th:block>
 												</span>
 											</a>
@@ -75,10 +76,10 @@
 								<li th:id="${'navLocate'+ status.count}"  th:classappend="${status.first}? 'on' : ''">
 									<div class="movbox">
 										<th:block th:if="${goodsVideo.videoGb == 'Y'}">
-										<iframe 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>
+										<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 width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
+										<iframe id="prodctThumbVideo" class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" frameborder="0" allowfullscreen></iframe>
 										</th:block>
 									</div>
 								</li>

+ 0 - 4
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html

@@ -303,10 +303,6 @@
 								<span class="thumb" th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
 								</th:block>
 							</div>
-							<div class="pic" th:unless="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
-								<span class="thumb" th:style="${'background-image:url('+imgGoodsUrl+ '/'+goodsInfo.sysImgNm+'?RS=162);'}">
-								</span>
-							</div>
 							<div class="star_score" th:with="starScore=${#numbers.formatDecimal((bestReview.iscore*100/5), 0,0)}">
 								<span class="star">
 									<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->

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

@@ -401,7 +401,7 @@
 													<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 												</div>
 												<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
-												<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+												<div class="itemName" ><span class="tit_option" th:text="${'[상품'+status.count+']'}">[상품1]</span><th:block th:text="${goodsInfo.goodsFullNm}"></th:block></div>
 												<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
 													<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
 													<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>

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

@@ -66,7 +66,7 @@
 				if (review.reviewAttachList != null && review.reviewAttachList.length > 0){
 					reviewClass = '';
 				}
-				tag +='<div class="review" class="'+reviewClass+'" >\n';  <!-- 첨부이미지 없을 시 empty_photo 클래스 추가 --> 
+				tag +='<div class="review '+reviewClass+'" >\n';  <!-- 첨부이미지 없을 시 empty_photo 클래스 추가 --> 
 				tag +='	<div class="pic">\n';
 				if (review.reviewAttachList != null && review.reviewAttachList.length > 0){
 					$.each(review.reviewAttachList, function(aIdx, reviewAttach){

+ 1 - 1
src/main/webapp/ux/pc/css/layout.css

@@ -2789,7 +2789,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.option_box [class^="opt_"] .select_custom .select:after {right:20px;}
 	.option_box [class^="opt_"] div[class*="item_set_"] .select .opt_price {display:none;}
 	.option_box .opt_select div[class*="item_set_"] .select .opt_price {display:none;}
-	.option_box [class^="opt_"] .select_custom .select .opt_price {padding-top: 10px;}
+	.option_box [class^="opt_"] .select_custom .select .opt_price {padding-top: 10px;display: none;}
 	.option_box [class^="opt_"] .select_custom[aria-disabled="true"] .select {color:#bbb; background:#f5f5f5;}
 	.option_box [class^="opt_"] .select_custom .combo .list {top:52px; padding:0}
 	.option_box [class^="opt_"] .select_custom .combo .list > li {padding:18px 18px; line-height:1; color:#666; font-size:16px; font-weight:200;}

+ 31 - 6
src/main/webapp/ux/pc/js/common-ui.js

@@ -79,6 +79,9 @@ $(document).ready(function() {
 		$("#fileAdd").on("change", function(e) {
 			var files = e.target.files,
 				filesLength = files.length;
+				console.log(filesLength);
+			var cmtLa = $('.cmt .cmt_thumb .form_field .imgUpload label');
+			var cmtIn = $('.cmt .cmt_thumb .form_field .imgUpload input');
 			for (var i = 0; i < filesLength; i++) {
 				var f = files[i]
 				var fileReader = new FileReader();
@@ -90,9 +93,24 @@ $(document).ready(function() {
 						"</span>").insertAfter("#fileAdd");
 					$(".removes").click(function(){
 						$(this).parent(".pics").remove();
+						cmtLa.css('display', 'block');
+						cmtIn.css('display', 'block');
+						$('#fileAdd').removeAttr("disabled");
 					});
 				});
 			fileReader.readAsDataURL(f);
+				var maxFileLength = 10; /* 최대 파일 갯수를 입력해 주세요 */
+				var imgFiles=$('.imgUpload .pics');
+				var cmtLa = $('.cmt .cmt_thumb .form_field .imgUpload label');
+				var cmtIn = $('.cmt .cmt_thumb .form_field .imgUpload input');
+				if (imgFiles.length >= maxFileLength-1) {
+					mcxDialog.alert('이미지는 최대' + maxFileLength +'장 까지 첨부 가능합니다.'); //210420_수정 : 시스템 alert -> dialog 변경.
+					$('#fileAdd').attr("disabled",true);
+					cmtLa.css('display', 'none');
+					cmtIn.css('display', 'none');
+				} else if(imgFiles.length < maxFileLength){
+					$('#fileAdd').removeAttr("disabled");
+				}
 			}
 		});
 	} else {
@@ -323,23 +341,30 @@ $(document).ready( function() {
 	});
 
 	/* 고객센터_accordion */
-	$(document).off('click').on('click','.cs .foldGroup .fold_head',function(e){
-		$('.cs .foldGroup .fold_head').removeClass('on');
-        $('.cs .foldGroup .fold_cont').slideUp(100);
-		$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
+	/* 210428_수정 : 아코디언 */
+	$(document).on('click','.cs .foldGroup .fold_head',function(){
 		$(this).toggleClass('on');
-		return false;
+		$(this).siblings('.fold_cont').slideToggle(100);
+		$(this).parents('li').siblings('li').find('.fold_head').removeClass('on');
+		$(this).parents('li').siblings('li').find('.fold_cont').slideUp(100);
 	});
+	/* //210428_수정 : 아코디언 */
 
 	/* 주문결제_accordion */
+	/* 210428_수정 : 아코디언 */
 	$(document).on('click','.od .foldGroup .fold_head .fold_tit',function(e){	
-		$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
+		//$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
+		//$(this).parents('.fold_head').toggleClass('on');
 		$(this).parents('.fold_head').toggleClass('on');
+		$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
+		$(this).parents('li').siblings('li').find('.fold_head').removeClass('on');
+		$(this).parents('li').siblings('li').find('.fold_cont').slideUp(100);
 		return false;
 	}).on('click','.od .foldGroup .fold_paymethod .fold_head .fold_tit',function(e){
 		$("#rdi-paymethod-quick").trigger("click");
 		return false;
 	});
+	/* //210428_수정 : 아코디언 */
 	
 	/* 아이디/비밀번호 찾기_accordion:open */
 	$(document).on('click','.mb .foldGroup.checkcase .fold_head',function(e){	

+ 1 - 4
src/main/webapp/ux/style24_link.js

@@ -848,12 +848,9 @@ function cfnPasswordModify() {
 
 	if ($('#pswordModifyPop').length == 0) {
 		$('body').append(str);
-		cfOpenLayer(_PAGE_PASSWORD_MODIFY, 'pswordModifyPop');
-	} else {
-		$('#pswordModifyPop').modal("show");
 	}
 
-
+	cfOpenLayer(_PAGE_PASSWORD_MODIFY, 'pswordModifyPop');
 }
 
 /**