Kaynağa Gözat

메인전시 수정중

bin2107 5 yıl önce
ebeveyn
işleme
7a0336bf64

+ 8 - 0
src/main/java/com/style24/admin/biz/dao/TsaDisplayDao.java

@@ -266,6 +266,14 @@ public interface TsaDisplayDao {
 	 */
 	Collection<Contents> getContentsPreviewList(Contents contents);
 
+	/**
+	 * 메인전시 컨텐츠 탭영역 미리보기 리스트
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 18
+	 */
+	Collection<Contents> getContentsTabPreviewList(Contents contents);
+
 	/**
 	 * 메인전시 컨텐츠 미리보기 삭제
 	 * @return

+ 14 - 0
src/main/java/com/style24/admin/biz/service/TsaDisplayService.java

@@ -501,6 +501,16 @@ public class TsaDisplayService {
 		return displayDao.getContentsPreviewList(contents);
 	}
 
+	/**
+	 * 메인전시 컨텐츠 탭영역 미리보기 리스트
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 18
+	 */
+	public Collection<Contents> getContentsTabPreviewList(Contents contents) {
+		return displayDao.getContentsTabPreviewList(contents);
+	}
+
 	/**
 	 * 메인전시 컨텐츠 미리보기 저장
 	 * @return
@@ -545,6 +555,7 @@ public class TsaDisplayService {
 					}
 				}
 			}
+
 		}
 
 		int ind = 1;
@@ -571,6 +582,8 @@ public class TsaDisplayService {
 					contents.setBrandGroupImg("/contents/brand/" + yearMonth + "/" + newFilename);
 				}
 
+
+
 				int cnt = 1;
 				for (String newImgFile : contents.getNewImgFileArr()) {
 					//이미지 변경이 일어났을 경우
@@ -630,6 +643,7 @@ public class TsaDisplayService {
 					}
 					cnt++;
 				}
+
 				contents.setRegNo(TsaSession.getInfo().getUserNo());
 				contents.setUpdNo(TsaSession.getInfo().getUserNo());
 				displayDao.saveContentsPreview(contents);

+ 12 - 0
src/main/java/com/style24/admin/biz/web/TsaDisplayController.java

@@ -586,6 +586,18 @@ public class TsaDisplayController extends TsaBaseController {
 		return displayService.getContentsPreviewList(contents);
 	}
 
+	/**
+	 * 메인전시 컨텐츠 탭영역 미리보기 리스트
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 18
+	 */
+	@PostMapping("/contents/tab/preview/list")
+	@ResponseBody
+	public Collection<Contents> getContentsTabPreviewList(@RequestBody Contents contents) {
+		return displayService.getContentsTabPreviewList(contents);
+	}
+
 	/**
 	 * 메인전시 컨텐츠 미리보기 저장
 	 * @return

+ 3 - 0
src/main/java/com/style24/persistence/domain/BrandGroup.java

@@ -34,6 +34,9 @@ public class BrandGroup extends TscBaseDomain {
 	private String searchBrandGroupNm;
 	private String type;			// S:조회용, C:브랜드관리화면에서 호출, 브랜드그룹등록영역 노출
 
+	// 메인전시
+	private String groupNm;
+
 	/* 브랜드검색 Multi CheckBox 항목*/
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] multiBrandGroupNo;

+ 4 - 1
src/main/java/com/style24/persistence/domain/Contents.java

@@ -58,7 +58,7 @@ public class Contents extends TscBaseDomain {
     private String goodsImgList;
 
     List<Contents> dataList;
-    List<BrandGroup> brandGroupdList;
+    //List<BrandGroup> brandGroupList;
 
     @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
     private String[] contentsLocArr;
@@ -77,4 +77,7 @@ public class Contents extends TscBaseDomain {
     private String[] brandGroup2Arr;
     @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
     private String[] brandGroup3Arr;
+
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] brandGroupList;
 }

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

@@ -1702,4 +1702,27 @@
 		WHERE	CATE_NO = #{cateNo}
 		AND 	CONTENTS_LOC = #{contentsLoc}
 	</insert>
+
+	<!-- 메인전시 컨텐츠 탭영역 미리보기 리스트 -->
+	<select id="getContentsTabPreviewList" parameterType="Contents" resultType="Contents">
+		/* TsaDisplay.saveContentsGoods */
+		SELECT	B.STR_TITLE2
+		        , B.STR_TITLE1
+				, A.BRAND_GROUP_NO
+				, CASE WHEN A.DISP_NM_LANG = 'EN' THEN A.BRAND_GROUP_ENM
+				ELSE A.BRAND_GROUP_KNM
+				END              AS BRAND_GROUP_NM
+				, A.LOGO_FILE_NM
+				, B.DISP_ORD
+				, B.DISP_STDT
+				, B.DISP_EDDT
+		FROM   TB_BRAND_GROUP A
+			 , TB_CONTENTS_PREVIEW B
+		WHERE  A.BRAND_GROUP_NO = B.STR_VAR1
+		AND    A.USE_YN = 'Y'
+		AND    B.CONTENTS_LOC = #{contentsLoc}
+		AND    B.DISP_STDT <![CDATA[<=]]> NOW()
+		AND    B.DISP_EDDT <![CDATA[>=]]> NOW()
+		ORDER  BY B.DISP_ORD, B.CONTENTS_SQ
+	</select>
 </mapper>

+ 2 - 1
src/main/webapp/WEB-INF/views/business/BrandGroupPopupForm.html

@@ -144,7 +144,8 @@
 		},
 		{headerName: "브랜드그룹국문명", field: "brandGroupKnm", width: 150, cellClass: 'text-center'},
 		{headerName: "브랜드그룹영문명", field: "brandGroupEnm", width: 150, cellClass: 'text-center'},
-		{headerName: "전시브랜드그룹명", field: "brandGroupNm", width: 150, cellClass: 'text-center'}
+		{headerName: "전시브랜드그룹명", field: "brandGroupNm", width: 150, cellClass: 'text-center'},
+		{headerName: "브랜드로고파일명", field: "logoFileNm", width: 150, cellClass: 'text-center', hide:true}
 	];
 
 	let gridOptionsBrandGroupList = gagaAgGrid.getGridOptions(columnDefsMdList);

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

@@ -109,7 +109,7 @@
 								<!--<input type="hidden" name="sysTnfileNm"/>-->
 								<input type="hidden" name="newSysTnfileNm" value=""/>
 							</div>
-							<input type="hidden" name="uploadDefaultUrl" id="uploadDefaultUrl" th:value="${@environment.getProperty('upload.image.view') + '/display/lookbook/thumbnail/'}"/>
+							<input type="hidden" name="uploadDefaultUrl" id="uploadDefaultUrl" th:value="${@environment.getProperty('upload.image.view') + '/lookbook/thumbnail/'}"/>
 							<div id="imgView" class="off">
 								<img id="bannerPreViewUrl" src="" style="width:100px; height:100px"/>
 							</div>
@@ -119,7 +119,7 @@
 				</table>
 			</div>
 			<div id="bannerDiv">
-				<input type="hidden" name="uploadDefaultBannerUrl" id="uploadDefaultBannerUrl" th:value="${@environment.getProperty('upload.image.view') + '/display/lookbook/banner/'}"/>
+				<input type="hidden" name="uploadDefaultBannerUrl" id="uploadDefaultBannerUrl" th:value="${@environment.getProperty('upload.image.view') + '/lookbook/banner/'}"/>
 				<!-- posistion picker -->
 				<!-- //posistion picker -->
 			</div>

+ 207 - 30
src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html

@@ -125,16 +125,14 @@
 		html += '	<tbody>';
 		if(contentsLoc=='STAB001'){
 			for(var i=0; i<3; i++){
-				html += '	<tr>';
-				html += '		<th rowspan="2"><br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+addIdx+'\',i+1);">브랜드조회</button></th>';
-				html += '		<td id="brandTitle"+i> 그룹타이틀:';
-				html += '			<input type="text" name="brandGroup'+addIdx+'" id="bTitle"+i class="w200" value=""/>';
-				html += '		</td>';
-				html += '	</tr>';
-				html += '	<tr>';
-				html += '		<td name="brandArr'+addIdx+'" id="brandCdArr"+i>';
-				html += '			<ul class="brandGroupUl">dddddd';
-				html += '			</ul>';
+				html += '	<tr class="groupTr">';
+				html += '		<th>GROUP '+(i+1)+'<br><input type="text" name="brandGroup'+addIdx+'" id="bTitle'+(i+1)+'" class="w100" value=""/><br>';
+				html += '			<button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+addIdx+'\',\''+(i+1)+'\');">브랜드조회</button><br></th>';
+				html += '		<td colspan="2" name="brandArr'+addIdx+'" id="tabBrand'+(i+1)+'">';
+				html += '			<div class="sortableWrap" data-unit="7" style="overflow-y:scroll;">';
+				html += '				<div class="itemWrap ui-sortable" id="brandListTd'+(i+1)+'" data-id="'+(i+1)+'">';
+				html += '				</div>';
+				html += '			</div>';
 				html += '		</td>';
 				html += '	</tr>';
 			}
@@ -169,6 +167,13 @@
 			changeYear: true,
 			defaultDate: $('.schDate').val()
 		});
+
+		if(contentsLoc=='STAB001'){
+			$("#brandListTd1").sortable();
+			$("#brandListTd2").sortable();
+			$("#brandListTd3").sortable();
+		}
+
 		tableIdx = tableIdx+1;
 	}
 
@@ -182,24 +187,37 @@
 
 	// 브랜드 코드, 브랜드 명, 브랜드 이미지 3개 불러와야함 -> 로직 수정 필요
 	var brandCdIdx=0;
-	var callBackBrandGroup = function (result){
-		if(gagajf.isNull($("#tabTable"+tabTableRow+" #tabBrand"+callbackBrandTr +" .brandGroupUl").find("input[data-id]:last").val())){
-			brandCdIdx = 0;
-		}else{
-			brandCdIdx = parseInt($("#tabTable"+tabTableRow+" #tabBrand"+callbackBrandTr +" .brandGroupUl").find("input[data-id]:last").val())+1;
-		}
+	var uploadGoodsUrl = [[${@environment.getProperty('domain.image')}]];
+	var callBackBrandGroup = function (result) {
 		var html = '';
 
-		for(let i=0; i<result.length; i++){
-			console.log('brandGroupNo:::'+result[i].brandGroupNo);
-			html += '<span id="brandSpan'+brandCdIdx+'">';
-			html += '<input type="hidden" name="hIdx" value="'+brandCdIdx+'" data-id="'+brandCdIdx+'">';
-			html += '	<input type="text" class="w100" name="brandGroupNo" id="brandGroupNo_'+brandCdIdx+'" value="'+result[i].brandGroupNo+'" disabled="disabled"/>'
-			html += '	<span style="margin-right:10px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,'+brandCdIdx+');">X</a></span>';
-			html += '</span>';
-
+		for (let i = 0; i < result.length; i++) {
+			html += '<ul id="brandUl' + brandCdIdx + '" class="item ui-state-default brandClass" style="min-height:130px;">';
+			html += '	<input type="hidden" name="brandGroupNo" value="' + result[i].brandGroupNo + '">';
+			html += '	<input type="hidden" name="imgPath1" value="' + result[i].logoFileNm + '">';
+			html += '	<li class="img">';
+			html += '		<img src="' + uploadGoodsUrl + "/" + result[i].logoFileNm + '" onerror="this.src=\'/image/no.gif\';"/>';
+			html += '	</li>';
+			html += '	<li class="cont">';
+			html += '		<ul>';
+			html += '			<li class="no" name="brandCdLi"><span>' + result[i].brandGroupNo + '</span>';
+			html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + brandCdIdx + ');">X</a></span>';
+			html += '			</li>';
+			html += '			<li class="title">' + result[i].brandGroupNm + '</li>';
+			html += '		</ul>';
+			html += '	</li>';
+			html += '</ul>';
 		}
-		$("#tabTable"+tabTableRow +" #tabBrand"+callbackBrandTr+" .brandGroupUl").append(html);
+		$("#tabTable" + tabTableRow + " #brandListTd" + callbackBrandTr).append(html);
+		brandCdIdx++;
+	}
+
+	var fnRemoveBrand = function (obj , idx){
+		var divId = $(obj).closest('div').attr('id');
+		console.log('divId>'+divId);
+		console.log('idx>'+idx);
+		$("#"+divId+" #brandUl"+idx).remove();
+		//fnReloadGoodsListIdx(divId);
 	}
 
 	// 카테고리 유형 선택
@@ -228,18 +246,177 @@
 		uifnPopupClose('popupMainGnbContents');
 	}
 
+	// 컨텐츠 행삭제
+	var fnDeleteContentsRow = function (obj){
+		$(obj).closest("table").remove();
+	}
+
+	/**
+	 * 임시저장
+	 */
+	var dataArr = [];
+	$("#btnGnbTabSave").on('click', function(){
+		/*if(!gagajf.checkRequired("#gnbTabList")){
+			return;
+		}*/
+
+		dataArr = [];
+		$("#gnbTabList .tabTable").each(function (){
+			var newImgFileArr = [];
+			var imgPath1 = '';
+			var imgPath2 = '';
+			var imgPath3 = '';
+			var imgPath4 = '';
+			var strVar1 = '';
+			var strVar2 = '';
+			var strVar3 = '';
+			var strVar4 = '';
+			var strVar5 = '';
+			var strVar6 = '';
+			var strVar7 = '';
+			var strVar8 = '';
+			var strTitle1 = '';
+			var strTitle2 = '';
+			var strTitle3 = '';
+			var strTitle4 = '';
+			var subText1 = '';
+			var subText2 = '';
+			var subText3 = '';
+			var subText4 = '';
+			var i=1;
+
+			$(this).find(".brandClass").each(function (){
+				var idx = $(this).closest('div').attr('data-id');
+				strTitle1 = $(".groupTr").find("input[id=bTitle"+idx+"]").val();
+				var dispStdt = $('#gnbTabList input[name=dispStdt]').val().replace(/[^0-9]/g, '')+$('#gnbTabList').find("[name=stTimeHour]").val().replace('시', '')+$('#gnbTabList').find("[name=stTimeMin]").val().replace('분', '')+'00';
+				var dispEddt = $('#gnbTabList input[name=dispEddt]').val().replace(/[^0-9]/g, '')+$('#gnbTabList').find("[name=edTimeHour]").val().replace('시', '')+$('#gnbTabList').find("[name=edTimeMin]").val().replace('분', '')+'59';
+				var dispOrd = $(this).find("[name=dispOrd]").val();
+				strVar1 = $(this).find("input[name=brandGroupNo]").val();
+				imgPath1 = $(this).find("input[name=imgPath1]").val();
+
+				var data = {
+					cateNo : cateNo
+					, contentsLoc : contentsLoc
+					, dispStdt : dispStdt
+					, dispEddt : dispEddt
+					, newImgFileArr : newImgFileArr
+					, imgPath1 : imgPath1
+					, imgPath2 : imgPath2
+					, imgPath3 : imgPath3
+					, imgPath4 : imgPath4
+					, strVar1 : strVar1
+					, strVar2 : strVar2
+					, strVar3 : strVar3
+					, strVar4 : strVar4
+					, strVar5 : strVar5
+					, strVar6 : strVar6
+					, strVar7 : strVar7
+					, strVar8 : strVar8
+					, strTitle1 : strTitle1
+					, strTitle2 : strTitle2
+					, strTitle3 : strTitle3
+					, strTitle4 : strTitle4
+					, subText1 : subText1
+					, subText2 : subText2
+					, subText3 : subText3
+					, subText4 : subText4
+					, useYn : 'Y'
+					, dispOrd : dispOrd
+				};
+				dataArr.push(data);
+			});
+		});
+
+		var jsonData = JSON.stringify(dataArr);
+		mcxDialog.confirm('저장하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				gagajf.ajaxJsonSubmit('/display/contents/preview/save', jsonData, fnGetBrandPreviewList);
+			}
+		});
+	});
+
 	// 브랜드 코드에 해당하는 브랜드 명, 브랜드 이미지 join해서 가져와야함 -> 로직 수정 필요
-	var fnGetGnbBrandContentsPreviewList = function (){
+	var fnGetBrandPreviewList = function (result){
+		console.log('저장이됐다!?');
 		$("#gnbTabList").html('');
 		var data = {cateNo : cateNo
 			,contentsLoc : contentsLoc
 		};
 		var jsonData = JSON.stringify(data);
-		gagajf.ajaxJsonSubmit('/display/contents/preview/list', jsonData, fnCreateGnbBrandLayout);
+		gagajf.ajaxJsonSubmit('/display/contents/tab/preview/list', jsonData, fnCreateBrandLayout);
 	}
 
-	var fnCreateGnbBrandLayout = function (result){
+	var fnCreateBrandLayout = function (result){
+		var html = '';
+
+		for(var i=0; i<result.length; i++){
+			var dispStdt = result[i].dispStdt.split(" ");
+			var dispEddt = result[i].dispEddt.split(" ");
+			html += '<table class="frmStyle tabTable" style="margin-bottom:30px" id="tabTable'+i+'">';
+			html += '<input type="hidden" name="tableIdx" value="'+i+'" data-id="'+i+'" />';
+			html += '	<colgroup>';
+			html += '		<col style="width:10%;"/>';
+			html += '		<col style="width:55%;"/>';
+			html += '		<col/>';
+			html += '	</colgroup>';
+			html += '	<thead>';
+			html += '	<tr>';
+			html += '		<th>전시일시</th>';
+			html += '		<td><input name="dispStdt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출시작일" data-valid-type="calendar" value="'+dispStdt[0]+'"/>';
+			html += '			<select name="stTimeHour" required="required" data-valid-name="노출기간 시작시간">';
+			html += fnCreateTimeOption(24, dispStdt[1].split(":")[0]);
+			html += '			</select>';
+			html += '			<select name="stTimeMin" required="required" data-valid-name="노출기간 시작시간">';
+			html += fnCreateTimeOption(60, dispStdt[1].split(":")[1]);
+			html += '			</select>';
+			html += '			<span> ~ </span>';
+			html += '			<input name="dispEddt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출종료일" data-valid-type="calendar" value="'+dispEddt[0]+'"/>';
+			html += '			<select name="edTimeHour" required="required" data-valid-name="노출기간 종료시간">';
+			html += fnCreateTimeOption(24, dispEddt[1].split(":")[0]);
+			html += '			</select>';
+			html += '			<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
+			html += fnCreateTimeOption(60, dispEddt[1].split(":")[1]);
+			html += '			</select>';
+			html += '			<input name="dispOrd" type="text" class="w80"placeholder="전시순서" style="margin-left:5px; text-align:center"/>';
+			html += '		</td>';
+			html += '		<td class="aL cateTypeBtnArea">';
+			html += '		<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
+			html += '	</tr>';
+			html += '	</thead>';
+			html += '	<tbody>';
+			for(var j=0; j<3; j++){
+				html += '	<tr class="groupTr">';
+				html += '		<th>GROUP '+(j+1)+'<br><input type="text" name="brandGroup'+i+'" id="bTitle'+(j+1)+'" class="w100" value=""/><br>';
+				html += '			<button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+i+'\',\''+(j+1)+'\');">브랜드조회</button><br></th>';
+				html += '		<td colspan="2" name="brandArr'+i+'" id="tabBrand'+(j+1)+'">';
+				html += '			<div class="sortableWrap" data-unit="7" style="overflow-y:scroll;">';
+				html += '				<div class="itemWrap ui-sortable" id="brandListTd'+(j+1)+'" data-id="'+(j+1)+'">';
+				html += '				</div>';
+				html += '			</div>';
+				html += '		</td>';
+				html += '	</tr>';
+			}
+			html += '	</tbody>';
+			html += '</table>';
+		}
+		$("#gnbTabList").prepend(html);
+		$("#gnbTabList").sortable();
+		$('.schDate').datepicker("destroy");
+		$('.schDate').datepicker({
+			changeMonth: true,
+			changeYear: true,
+			defaultDate: $('.schDate').val()
+		});
 
+		if(contentsLoc=='STAB001'){
+			$("#brandListTd1").sortable();
+			$("#brandListTd2").sortable();
+			$("#brandListTd3").sortable();
+		}
+
+		tableIdx = tableIdx+1;
 	}
 
 	$(document).ready(function() {
@@ -251,9 +428,9 @@
 		});
 
 		if(contentsLoc=='STAB001'){
-			fnGetGnbBrandContentsPreviewList();
+			fnGetBrandPreviewList();
 		}else{
-			fnGetGnbCategoryContentsPreviewList();
+			//fnGetGnbCategoryContentsPreviewList();
 		}
 
 	});