bin2107 5 лет назад
Родитель
Сommit
9b873c4c8b

+ 2 - 1
src/main/java/com/style24/admin/biz/service/TsaDisplayService.java

@@ -533,7 +533,7 @@ public class TsaDisplayService {
 			log.info("getGoodsCdArr contents:::::{}",contents);
 			//log.info("getGoodsCdArr length:::::{}",contents.getGoodsCdArr().length);
 			if(contents != null && contents.getGoodsCdArr() != null){
-				contents.setPreContentsSq(contents.getDispOrd());
+				contents.setContentsSq(contents.getDispOrd());
 				contents.setRegNo(TsaSession.getInfo().getUserNo());
 				displayDao.deleteContentsGoodsTemp(contents);
 
@@ -550,6 +550,7 @@ public class TsaDisplayService {
 
 		int ind = 1;
 		for (Contents contents : contentsList) {
+			contents.setContentsSq(null);
 			log.info("1==========={}");
 			if (contents != null && contents.getDispStdt() != null && !contents.getDispStdt().equals("")) {
 				// 브랜드 이미지 변경이 일어났을 경우

+ 5 - 5
src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml

@@ -1304,21 +1304,21 @@
 			    FROM	TMP_CONTENTS_GOODS B
 			   WHERE	B.CATE_NO = A.CATE_NO
 				 AND	B.CONTENTS_LOC = A.CONTENTS_LOC
-				 AND	B.PRE_CONTENTS_SQ = A.DISP_ORD
+				 AND	B.CONTENTS_SQ = A.DISP_ORD
 				 AND	B.CATE_NO = #{cateNo}
 				 AND	B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_CD_LIST
 			 ,(SELECT 	GROUP_CONCAT(B.GOODS_NM ORDER BY B.DISP_ORD SEPARATOR ',')
 			   FROM	TMP_CONTENTS_GOODS B
 			   WHERE	B.CATE_NO = A.CATE_NO
 				 AND	B.CONTENTS_LOC = A.CONTENTS_LOC
-				 AND	B.PRE_CONTENTS_SQ = A.DISP_ORD
+				 AND	B.CONTENTS_SQ = A.DISP_ORD
 				 AND	B.CATE_NO = #{cateNo}
 				 AND	B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_NM_LIST
 			 ,(SELECT 	GROUP_CONCAT(B.IMG_PATH1 ORDER BY B.DISP_ORD SEPARATOR ',')
 			   FROM	TMP_CONTENTS_GOODS B
 			   WHERE	B.CATE_NO = A.CATE_NO
 				 AND	B.CONTENTS_LOC = A.CONTENTS_LOC
-				 AND	B.PRE_CONTENTS_SQ = A.DISP_ORD
+				 AND	B.CONTENTS_SQ = A.DISP_ORD
 				 AND	B.CATE_NO = #{cateNo}
 				 AND	B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_IMG_LIST
 			 , A.USE_YN
@@ -1615,7 +1615,7 @@
 		DELETE	FROM TMP_CONTENTS_GOODS
 		WHERE	CATE_NO = #{cateNo}
 		AND 	CONTENTS_LOC = #{contentsLoc}
-		AND 	PRE_CONTENTS_SQ = #{preContentsSq}
+		AND 	CONTENTS_SQ = #{contentsSq}
 	</delete>
 
 	<insert id="saveContentsGoodsTemp" parameterType="Contents">
@@ -1643,7 +1643,7 @@
 						 				AND		CONTENTS_LOC = #{contentsLoc}) TMP)
 			,#{contentsLoc}
 		 	,#{preContentsSq}
-		 	,NULL
+		 	,#{contentsSq}
 		 	,#{goodsCd}
 		 	,#{goodsNm}
 		 	,#{imgPath1}

+ 151 - 41
src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html

@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
+	  xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
  * @source  : MainContentsPopupForm.html
@@ -14,43 +14,43 @@
  * 1.0  2021.2.23    bin2107     최초 작성
  *******************************************************************************
  -->
-	<div class="modalPopup" data-width="1400" >
-		<div class="panelStyle">
-			<div class="panelTitle">
-				<h2 id="popTitle" th:text="${contentsLoc}"></h2>
-				<button type="button" class="close" onclick="fnMainContentsPopupFormClose()"><i class="fa fa-times"></i></button>
-			</div>
-			<div class="panelContent">
-				<ul class="panelBar">
-					<li class="aL">
-						<span class="cBlue">* 상단으로 드래그&amp;드랍하여 순서 변경 가능합니다.</span>
-					</li>
-					<li class="aR">
-						<button type="button" class="btn btn btn-base btn-sm" id="btnPopAddRow">컨텐츠 추가</button>
-						<button type="button" class="btn btn btn-dark btn-sm" id="btnPopSave">임시저장</button>
-						<input type="hidden" name="uploadDefaultUrlPop" id="uploadDefaultUrlPop" th:value="${@environment.getProperty('upload.image.view') + '/display/contents/'}"/>
-					</li>
-				</ul>
-			</div>
-			<form name="contentsTitleForm" id="contentsTitleForm" style="width:1170px; overflow:auto; display: none;">
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:90%;"/>
-					</colgroup>
-					<tr>
-						<th>컨텐츠 타이틀</th>
-						<td><input type="text" name="contentsTitle" style="width:50%;" maxlength="40" required="required" data-valid-name="컨텐츠타이틀" th:value="${contentsTitle}"></td>
-					</tr>
-				</table>
-			</form>
-			<form style="height:600px; width:1370px; overflow:auto;" id="popSortable">
-			</form>
+<div class="modalPopup" data-width="1500" >
+	<div class="panelStyle">
+		<div class="panelTitle">
+			<h2 id="popTitle" th:text="${contentsLoc}"></h2>
+			<button type="button" class="close" onclick="fnMainContentsPopupFormClose()"><i class="fa fa-times"></i></button>
 		</div>
+		<div class="panelContent">
+			<ul class="panelBar">
+				<li class="aL">
+					<span class="cBlue">* 상단으로 드래그&amp;드랍하여 순서 변경 가능합니다.</span>
+				</li>
+				<li class="aR">
+					<button type="button" class="btn btn btn-base btn-sm" id="btnPopAddRow">컨텐츠 추가</button>
+					<button type="button" class="btn btn btn-dark btn-sm" id="btnPopSave">임시저장</button>
+					<input type="hidden" name="uploadDefaultUrlPop" id="uploadDefaultUrlPop" th:value="${@environment.getProperty('upload.image.view') + '/display/contents/'}"/>
+				</li>
+			</ul>
+		</div>
+		<form name="contentsTitleForm" id="contentsTitleForm" style="width:1170px; overflow:auto; display: none;">
+			<table class="frmStyle">
+				<colgroup>
+					<col style="width:10%;"/>
+					<col style="width:90%;"/>
+				</colgroup>
+				<tr>
+					<th>컨텐츠 타이틀</th>
+					<td><input type="text" name="contentsTitle" style="width:50%;" maxlength="40" required="required" data-valid-name="컨텐츠타이틀" th:value="${contentsTitle}"></td>
+				</tr>
+			</table>
+		</form>
+		<form style="height:600px; width:1470px; overflow:auto;" id="popSortable">
+		</form>
 	</div>
+</div>
 
 <script th:inline="javascript">
-/*<![CDATA[*/
+	/*<![CDATA[*/
 	var cateNo = [[${cateNo}]];
 	var contentsLoc = [[${contentsLoc}]];
 	var contentsTitle = [[${contentsTitle}]];
@@ -74,7 +74,8 @@
 		for(var i=0; i<result.length; i++){
 			var dispStdt = result[i].dispStdt.split(" ");
 			var dispEddt = result[i].dispEddt.split(" ");
-			html += '<table class="frmStyle" style="margin-bottom:30px">';
+			html += '<table class="frmStyle mcTable" style="margin-bottom:30px" id="mcTable'+i+'">';
+			html += '<input type="hidden" name="tableIdx" value="'+i+'" >';
 			html += '<colgroup>';
 			html += '<col style="width:10%;"/>';
 			html += '<col style="width:55%;"/>';
@@ -98,7 +99,7 @@
 			html += '<input name="dispOrd" type="text" class="w80"placeholder="전시순서" style="margin-left:5px; text-align:center"/>';
 			html += '</td>';
 			html += '<td class="aL"><button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
-			if(contentsLoc=='SMM001' || contentsLoc=='SBM004' || contentsLoc=='SBMM004'){
+			if(contentsLoc=='SMM001' || contentsLoc=='SMM002' || contentsLoc=='SBM004' || contentsLoc=='SBMM004'){
 				html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
 			}
 			if(contentsLoc=='SBM005' || contentsLoc=='SBMM005'){
@@ -109,7 +110,27 @@
 			}
 			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddLinkPopRow(this);">링크추가</button>';
 			html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
-			html += '</tr></thead><tbody>';
+			html += '</tr>';
+			if(contentsLoc=='SMM001'){
+				//html += fnMainBannerArea(i);
+				html += '<tr>';
+				html += '	<th>컨텐츠유형</th>';
+				html += '	<td class="planArea" name="planArea" colspan="3">';
+				html += '		<label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="P" onclick="fnChangeContentsType(this,'+i+');" checked="checked"/>기획전</label>';
+				html += '		<label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="E" onclick="fnChangeContentsType(this,'+i+');"/>이벤트</label>';
+				html += '		<input type="text" class="w100 inputPlan" name="planSq'+i+'" value=""/>';
+				html += '		<button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan('+i+');">기획전검색</button>';
+				html += '	</td>';
+				html += '</tr>';
+				html += '<tr>';
+				html += '	<th>썸네일 <br>글자 색상</th>';
+				html += '	<td colspan="3">';
+				html += '		<label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="BLACK" checked="checked"/>BLACK</label>';
+				html += '		<label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="WHITE" />WHITE</label>';
+				html += '	</td>';
+				html += '</tr>';
+			}
+			html += '</thead><tbody>';
 			for(var j=1; j<5; j++){
 				var strTitle = eval("result["+i+"].strTitle" + j);
 				var imgPath = eval("result["+i+"].imgPath" + j);
@@ -138,12 +159,33 @@
 			changeYear: true,
 			defaultDate: $('.schDate').val()
 		});
+		fnResetIdx();
+	}
+
+	var fnResetIdx = function (){
+		$(".mcTable").each(function(i){
+			var thisIdx = $(this).find("input[name=tableIdx]").val();
+
+			$(this).find("input:radio[name=contentsType"+thisIdx+"]").removeAttr("onclick");
+			$(this).find("input:radio[name=contentsType"+thisIdx+"]").attr("onclick", "fnChangeContentsType(this,"+i+");");
+			$(this).find("input[name=planSq"+thisIdx+"]").removeAttr("onclick");
+			$(this).find("input[name=planSq"+thisIdx+"]").attr("onclick", "fnSearchPlan("+i+");");
+			$(this).find("input[name=contentsType"+thisIdx+"]").attr('name','contentsType'+i);
+			$(this).find("input[name=planSq"+thisIdx+"]").attr('name','planSq'+i);
+			$(this).find("input[name=thumTextColor"+thisIdx+"]").attr('name','thumTextColor'+i);
+			$(this).attr('id','mcTable'+i);
+			$(this).find("input[name=tableIdx]").val(i);
+		});
+
 	}
+
 	/**
 	 * 컨텐츠 추가 버튼
 	 */
+	var dataIdx=0;
 	$("#btnPopAddRow").on("click", function (){
-		var html = '<table class="frmStyle" style="margin-bottom:30px">';
+		var html = '<table class="frmStyle mcTable" style="margin-bottom:30px" id="mcTable'+dataIdx+'">';
+		html += '<input type="hidden" name="tableIdx" value="'+dataIdx+'">';
 		html += '<colgroup>';
 		html += '<col style="width:10%;"/>';
 		html += '<col style="width:55%;"/>';
@@ -167,7 +209,7 @@
 		html += '<input name="dispOrd" type="text" class="w80"placeholder="전시순서" style="margin-left:5px; text-align:center"/>';
 		html += '</td>';
 		html += '<td class="aL"><button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
-		if(contentsLoc=='SMM001' || contentsLoc=='SBM004' || contentsLoc=='SBMM004'){
+		if(contentsLoc=='SMM001' || contentsLoc=='SMM002' || contentsLoc=='SBM004' || contentsLoc=='SBMM004'){
 			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
 		}
 		if(contentsLoc=='SBM005' || contentsLoc=='SBMM005'){
@@ -178,7 +220,27 @@
 		}
 		html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddLinkPopRow(this);">링크추가</button>';
 		html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
-		html += '</tr></thead><tbody></tbody></table>';
+		html += '</tr>';
+		if(contentsLoc=='SMM001'){
+			//html += fnMainBannerArea();
+			html += '<tr>';
+			html += '	<th>컨텐츠유형</th>';
+			html += '	<td class="planArea" name="planArea" colspan="3">';
+			html += '		<label class="rdoBtn"><input type="radio" name="contentsType'+dataIdx+'" value="P" onclick="fnChangeContentsType(this,'+dataIdx+');" checked="checked"/>기획전</label>';
+			html += '		<label class="rdoBtn"><input type="radio" name="contentsType'+dataIdx+'" value="E" onclick="fnChangeContentsType(this,'+dataIdx+');"/>이벤트</label>';
+			html += '		<input type="text" class="w100 inputPlan" name="planSq'+dataIdx+'" value=""/>';
+			html += '		<button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan('+dataIdx+');">기획전검색</button>';
+			html += '	</td>';
+			html += '</tr>';
+			html += '<tr>';
+			html += '	<th>썸네일 <br>글자 색상</th>';
+			html += '	<td colspan="3">';
+			html += '		<label class="rdoBtn"><input type="radio" name="thumTextColor'+dataIdx+'" value="BLACK" checked="checked"/>BLACK</label>';
+			html += '		<label class="rdoBtn"><input type="radio" name="thumTextColor'+dataIdx+'" value="WHITE" />WHITE</label>';
+			html += '	</td>';
+			html += '</tr>';
+		}
+		html += '</thead><tbody></tbody></table>';
 		$("#popSortable").prepend(html);
 		$("#popSortable").sortable();
 		$('.schDate').datepicker("destroy");
@@ -187,8 +249,56 @@
 			changeYear: true,
 			defaultDate: $('.schDate').val()
 		});
+		fnResetIdx();
 	});
 
+	var mbIdx = 0;
+	var fnMainBannerArea = function (param){
+		var html = '';
+		html += '<tr>';
+		html += '	<th>컨텐츠유형</th>';
+		html += '	<td class="planArea" name="planArea" colspan="3">';
+		html += '		<label class="rdoBtn"><input type="radio" name="contentsType'+mbIdx+'" value="P" onclick="fnChangeContentsType(this,'+mbIdx+');" checked="checked"/>기획전</label>';
+		html += '		<label class="rdoBtn"><input type="radio" name="contentsType'+mbIdx+'" value="E" onclick="fnChangeContentsType(this,'+mbIdx+');"/>이벤트</label>';
+		html += '		<input type="text" class="w100 inputPlan" name="planSq'+mbIdx+'" value=""/>';
+		html += '		<button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan('+mbIdx+');">기획전검색</button>';
+		html += '	</td>';
+		html += '</tr>';
+		html += '<tr>';
+		html += '	<th>썸네일 <br>글자 색상</th>';
+		html += '	<td colspan="3">';
+		html += '		<label class="rdoBtn"><input type="radio" name="thumTextColor'+mbIdx+'" value="BLACK" checked="checked"/>BLACK</label>';
+		html += '		<label class="rdoBtn"><input type="radio" name="thumTextColor'+mbIdx+'" value="WHITE" />WHITE</label>';
+		html += '	</td>';
+		html += '</tr>';
+		mbIdx++;
+		return html;
+	}
+
+	// 몰메인>메인롤링배너 컨텐츠유형 선택시
+	var fnChangeContentsType = function (obj, idx){
+		var radioVal = $(obj).closest("td").find("input[name=contentsType"+idx+"]:checked").val();
+		if(radioVal=='P'){
+			$(obj).find(".planArea .inputPlan").show();
+			$(obj).find(".planArea .btnPlan").show();
+		}else{
+			$(obj).find(".planArea").find("input[name=planSq"+idx+"]").val('');
+			$(obj).find(".planArea .inputPlan").hide();
+			$(obj).find(".planArea .btnPlan").hide();
+		}
+	}
+
+	// 몰메인>메인롤링배너 기획전 조회
+	var tableDataId = 0;
+	var fnSearchPlan = function (idx){
+		cfnOpenPlanPopup('callbackPlanPopup');
+		tableDataId = idx;
+	}
+
+	var callbackPlanPopup = function (result){
+		$("#mcTable"+tableDataId+" .planArea").find("input[name=planSq"+tableDataId+"]").val(result[0].planSq);
+	}
+
 	/**
 	 * 임시저장
 	 */
@@ -565,7 +675,7 @@
 		$("#popSortable").disableSelection();
 		fnGetContentsPreviewList();
 	});
-/*]]>*/
+	/*]]>*/
 </script>
 
 </html>

+ 52 - 5
src/main/webapp/WEB-INF/views/display/MainListForm.html

@@ -44,11 +44,15 @@
 							</select>
 						</td>
 						<th>중분류</th>
-						<td>
+						<td name="cate2Select" style="display:block;">
 							<select name="cate2No" id="cate2No" onchange="fnGetMainDisplayList('cate2');">
 								<option value="">[선택]</option>
 							</select>
 						</td>
+						<td name="cate2Search" style="display:none;">
+							<input type="text" class="w200" name="brandGroupNo" value="" />
+							<button type="button" class="btn btnRight btn-success btn-lg" onclick="fnSearchBrandGroup();">브랜드조회</button>
+						</td>
 					</tr>
 				</table>
 			</form>
@@ -145,7 +149,17 @@
 	*/
 	var fnGetMainDisplayList = function (cate){
 		if(cate=='cate1'){
-			$("#searchForm select[name=cate2No]").html('<option value="">[선택]</option>');
+			var cate1Val = $("#searchForm select[name=cate1No] option:selected").val().split(',')[0];		//1700,Y
+
+			if((!gagajf.isNull(cate1Val)&&cate1Val=='1711') || (!gagajf.isNull(cate1Val)&&cate1Val=='1721')){
+				$("#searchForm").find("td[name=cate2Select]").css('display','none');
+				$("#searchForm").find("td[name=cate2Search]").css('display','block');
+			}else{
+				$("#searchForm").find("td[name=cate2Select]").css('display','block');
+				$("#searchForm").find("td[name=cate2Search]").css('display','none');
+				$("#searchForm").find("td[name=cate2Search]").find("input[name=brandGroupNo]").val('');
+				$("#searchForm select[name=cate2No]").html('<option value="">[선택]</option>');
+			}
 		}
 		$("#viewUl").addClass("off");
 		var val = $("#searchForm select[name=cate1No]").val();
@@ -164,10 +178,18 @@
 				gagajf.ajaxJsonSubmit('/display/main/category/list', jsonData, fnCate2NoCallBack);
 			}else{
 				$("#viewUl").removeClass("off");
-				var cateNo = val.split(',')[0];
-				if(!gagajf.isNull($("#searchForm select[name=cate2No]").val())){
-					cateNo = $("#searchForm select[name=cate2No]").val().split(',')[0];
+				var cateNo = "";
+				var cate1Val = $("#searchForm select[name=cate1No] option:selected").val().split(',')[0];		//1700,Y
+				if((!gagajf.isNull(cate1Val)&&cate1Val=='1711') || (!gagajf.isNull(cate1Val)&&cate1Val=='1721')){
+					cateNo = $("#searchForm").find("td[name=cate2Search]").find("input[name=brandGroupNo]").val();
+				}else{
+					cateNo = val.split(',')[0];
+					if(!gagajf.isNull($("#searchForm select[name=cate2No]").val())){
+						cateNo = $("#searchForm select[name=cate2No]").val().split(',')[0];
+					}
 				}
+
+				console.log('cateNo::'+cateNo);
 				var data = {
 					cateNo : cateNo
 				};
@@ -178,6 +200,15 @@
 		}
 	}
 
+	var fnSearchBrandGroup = function (){
+		cfnOpenBrandGroupListPopup("fnCallBackBrandGroup", "S", "S");
+	}
+
+	var fnCallBackBrandGroup = function (result){
+		$("#searchForm").find("td[name=cate2Search]").find("input[name=brandGroupNo]").val(result[0].brandGroupNo);
+		fnGetMainDisplayList('cate2');
+	}
+
 	/**
 	 * 레이아웃 조회
 	 */
@@ -463,6 +494,16 @@
 		$(obj).closest("tbody").remove();
 	}
 
+	function fnCate2BrandCheck(){
+		var cateBrand = $("#searchForm").find("td[name=cate2Search]").find("input[name=brandGroupNo]").val();
+		if(gagajf.isNull(cateBrand)){
+			mcxDialog.alert('브랜드코드를 조회해주세요.');
+			return false;
+		}
+
+		return true;
+	}
+
 	/**
 	 * 레이아웃 저장
 	 */
@@ -479,6 +520,12 @@
 		var cateNm = '';
 		if(val.split(',')[1]=='Y'){
 			cateNo = val.split(',')[0];
+			if(cateNo == '1711' || cateNo == '1711'){
+				if(!fnCate2BrandCheck()){
+					return false;
+				}
+				cateNo = $("#searchForm").find("td[name=cate2Search]").find("input[name=brandGroupNo]").val();
+			}
 		}else{
 			cateNo = $("#searchForm select[name=cate2No]").val().split(',')[0];
 		}

+ 2 - 2
src/main/webapp/WEB-INF/views/display/MainMultiContentsPopupForm.html

@@ -14,7 +14,7 @@
  * 1.0  2021.2.24    bin2107     최초 작성
  *******************************************************************************
  -->
-	<div class="modalPopup" data-width="1400" >
+	<div class="modalPopup" data-width="1500" >
 		<div class="panelStyle">
 			<div class="panelTitle">
 				<h2 id="multiPopTitle" th:text="${contentsLoc}">Multi</h2>
@@ -47,7 +47,7 @@
 					</tr>
 				</table>
 			</form>
-			<form style="height:600px; width:1370px; overflow:auto;" id="multiPopSortable">
+			<form style="height:600px; width:1470px; overflow:auto;" id="multiPopSortable">
 				<input type="hidden" name="mdTitle">
 			</form>
 		</div>