Bläddra i källkod

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

card007 5 år sedan
förälder
incheckning
107156123c
22 ändrade filer med 535 tillägg och 401 borttagningar
  1. 8 0
      src/main/java/com/style24/admin/biz/dao/TsaDisplayDao.java
  2. 14 0
      src/main/java/com/style24/admin/biz/service/TsaDisplayService.java
  3. 2 2
      src/main/java/com/style24/admin/biz/service/TsaPlanService.java
  4. 1 0
      src/main/java/com/style24/admin/biz/service/TsaSocialService.java
  5. 10 0
      src/main/java/com/style24/admin/biz/web/TsaCustomerController.java
  6. 12 0
      src/main/java/com/style24/admin/biz/web/TsaDisplayController.java
  7. 2 2
      src/main/java/com/style24/admin/biz/web/TsaMarketingController.java
  8. 3 0
      src/main/java/com/style24/persistence/domain/BrandGroup.java
  9. 1 0
      src/main/java/com/style24/persistence/domain/CategoryGoods.java
  10. 17 1
      src/main/java/com/style24/persistence/domain/Contents.java
  11. 3 0
      src/main/java/com/style24/persistence/domain/Plan.java
  12. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml
  13. 70 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml
  14. 9 13
      src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml
  15. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaSocial.xml
  16. 2 1
      src/main/webapp/WEB-INF/views/business/BrandGroupPopupForm.html
  17. 2 0
      src/main/webapp/WEB-INF/views/display/GoodsDispOrdChangePopupForm.html
  18. 2 2
      src/main/webapp/WEB-INF/views/display/LookbookBannerPopupForm.html
  19. 341 361
      src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html
  20. 6 3
      src/main/webapp/WEB-INF/views/display/MainListForm.html
  21. 2 2
      src/main/webapp/WEB-INF/views/marketing/PlanListForm.html
  22. 25 12
      src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html

+ 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);

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

@@ -1380,7 +1380,7 @@ public class TsaPlanService {
 		int byteCnt = 1500;
 		
 		
-		fsrcTop.setLocGb("T");                 
+		fsrcTop.setFrontGb("T");                 
 		fsrcTop.setRegNo(param.getRegNo());      
 		fsrcTop.setPlanSq(param.getPlanSq());    
 		fsrcTop.setDispYn(param.getTopFsrcDispYn());
@@ -1448,7 +1448,7 @@ public class TsaPlanService {
 		int byteCnt = 1500;
 		
 		
-		fsrcBtm.setLocGb("B");                 
+		fsrcBtm.setFrontGb("B");                 
 		fsrcBtm.setRegNo(param.getRegNo());      
 		fsrcBtm.setPlanSq(param.getPlanSq());    
 		fsrcBtm.setDispYn(param.getBtmFsrcDispYn());

+ 1 - 0
src/main/java/com/style24/admin/biz/service/TsaSocialService.java

@@ -38,6 +38,7 @@ public class TsaSocialService {
 		// 진행중인 소셜이 있는지 확인
 		social.setSocialStdt(param.getSocialStdt());
 		social.setSocialEddt(param.getSocialEddt());
+		social.setSocialSq(param.getSocialSq());
 		social.setUseYn(param.getUseYn());
 		social.setApplyGb(param.getApplyGb());
 		if(socialDao.getSocialGoOffCount(social) > 0) {

+ 10 - 0
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -930,6 +930,11 @@ public class TsaCustomerController extends TsaBaseController {
 	@ResponseBody
 	public GagaMap getCustomerSecedeList(@RequestBody CustomerSearch customerSearch) {
 		GagaMap result = new GagaMap();
+		// 회원명, 이메일 암호화
+		if ("custNm".equals(customerSearch.getSearchGb()) || "email".equals(customerSearch.getSearchGb())) {
+			customerSearch.setSearchTxt(CryptoUtils.encryptAES(customerSearch.getSearchTxt()));
+		}
+		customerSearch.encryptData();	//데이터 암호화 필요
 		customerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		customerSearch.setPageable(new TscPageRequest(customerSearch.getPageNo() - 1, customerSearch.getPageSize()));
 		customerSearch.getPageable().setTotalCount(customerService.getCustomerSecedeListCount(customerSearch));
@@ -970,6 +975,11 @@ public class TsaCustomerController extends TsaBaseController {
 	@ResponseBody
 	public GagaMap getCustomerDormantList(@RequestBody CustomerSearch customerSearch) {
 		GagaMap result = new GagaMap();
+		// 회원명, 이메일 암호화
+		if ("custNm".equals(customerSearch.getSearchGb()) || "email".equals(customerSearch.getSearchGb())) {
+			customerSearch.setSearchTxt(CryptoUtils.encryptAES(customerSearch.getSearchTxt()));
+		}
+		customerSearch.encryptData();	//데이터 암호화 필요
 		customerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		customerSearch.setPageable(new TscPageRequest(customerSearch.getPageNo() - 1, customerSearch.getPageSize()));
 		customerSearch.getPageable().setTotalCount(customerService.getCustomerDormantListCount(customerSearch));

+ 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

+ 2 - 2
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -2069,11 +2069,11 @@ public class TsaMarketingController extends TsaBaseController {
 			mav.addObject("fileList", planService.getPlanContentFileList(param));
 			
 			//html 리스트 - 상단
-			param.setLocGb("T");
+			param.setFontGb("T");
 			mav.addObject("fsrcListTop", planService.getPlanContentFsrcList(param));
 			
 			//html 리스트 - 하단
-			param.setLocGb("B");
+			param.setFontGb("B");
 			mav.addObject("fsrcListBtm", planService.getPlanContentFsrcList(param));
 			
 			//상품 리스트

+ 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;

+ 1 - 0
src/main/java/com/style24/persistence/domain/CategoryGoods.java

@@ -26,6 +26,7 @@ public class CategoryGoods extends TscBaseDomain {
 	private String cate3No;
 	private String cate4No;
 	private String searchGb;
+	private String contentsLoc;
 
 	private int rnum;
 	private String goodsCd;

+ 17 - 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,20 @@ 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;
+
+    private String group1Title;
+    private String group1brandCd;
+    private String group1brandNm;
+    private String group1brandImg;
+    private String group2Title;
+    private String group2brandCd;
+    private String group2brandNm;
+    private String group2brandImg;
+    private String group3Title;
+    private String group3brandCd;
+    private String group3brandNm;
+    private String group3brandImg;
 }

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

@@ -62,6 +62,8 @@ public class Plan extends TscBaseDomain{
 		private String goodsLimitQty;		//상품등록제한수(상품등록제한여부가 "Y"일 떄)
 		private String delYn;				//삭제여부(Y:삭제)
 		private String openYn;				//오픈여부(Y:오픈)
+		private String stDate;
+		private String edDate;
 		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 		private long[] dispOrdArr;			// 표시순서 배열
 		private long dispOrd;				//표시순서
@@ -77,6 +79,7 @@ public class Plan extends TscBaseDomain{
 		private String fsrcPc;				//프론트소스(pc)	/ 화면용
 		private String fsrcMob;			//프론트소스(모바일)	/ 화면용
 		private String locGb;			//위치구분(T:상단 / B:하단)
+		private String fontGb;			//위치구분(T:상단 / B:하단)
 
 		// 기획전 상세
 		private Integer planDtlSq;				//기획전상세일련번호(SEQ_PLAN_DTL sequence)

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -821,8 +821,8 @@
 		    <if test="searchGb == 'email'">
 		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
 		    </if>
-		    <if test="searchGb == 'custNo'">
-		AND    LOWER(CUST_NO) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    <if test="searchGb == 'custId'">
+		AND    LOWER(CUST_ID) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
 		    </if>
 		</if>
 		<if test="siteCd != null and siteCd != ''">

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

@@ -854,6 +854,9 @@
 									AND CATE4_NO  = #{cate4No}
 								</if>
 				)
+				<if test="contentsLoc != null and contentsLoc !=''">
+					AND A.CONTENTS_LOC = #{contentsLoc}
+				</if>
 		) A
 		<if test="searchGb == null or searchGb =='BASIC'">
 			, TB_GOODS G
@@ -902,11 +905,13 @@
 							, G.SUPPLY_GOODS_CD
 							, G.STYLE_YEAR
 							, FN_GET_CODE_NM('G009',IFNULL(G.FORMAL_GB,'10'))  AS FORMAL_GB
+							, A.CONTENTS_LOC
 						FROM ( SELECT A.GOODS_CD
 									, A.CATE_NO
 									, A.DISP_ORD
 									, A.REG_NO
 									, A.REG_DT
+									, A.CONTENTS_LOC
 								FROM TB_CATE_GOODS A
 								WHERE 1=1
 								AND A.CATE_NO IN ( SELECT LEAF_CATE_NO
@@ -925,6 +930,9 @@
 													AND CATE4_NO  = #{cate4No}
 												</if>
 								)
+								<if test="contentsLoc != null and contentsLoc !=''">
+								AND A.CONTENTS_LOC = #{contentsLoc}
+								</if>
 					) A
 				<if test="searchGb == null or searchGb =='BASIC'">
 					, TB_GOODS G
@@ -1329,6 +1337,7 @@
 		FROM TB_CONTENTS_PREVIEW A
 		WHERE A.CATE_NO = #{cateNo}
 		  AND A.CONTENTS_LOC = #{contentsLoc}
+		  AND A.USE_YN = 'Y'
 		ORDER BY A.DISP_ORD
 	</select>
 
@@ -1693,4 +1702,65 @@
 		WHERE	CATE_NO = #{cateNo}
 		AND 	CONTENTS_LOC = #{contentsLoc}
 	</insert>
+
+	<!-- 메인전시 컨텐츠 탭영역 미리보기 리스트 -->
+	<select id="getContentsTabPreviewList" parameterType="Contents" resultType="Contents">
+		/* TsaDisplay.saveContentsGoods */
+		SELECT 	STR_TITLE3
+				, DISP_STDT
+				, DISP_EDDT
+				, MAX(GROUP1_TITLE) AS GROUP1_TITLE
+				, MAX(GROUP1_BRAND_CD) AS GROUP1_BRAND_CD
+				, MAX(GROUP1_BRAND_NM) AS GROUP1_BRAND_NM
+				, MAX(GROUP1_BRAND_IMG) AS GROUP1_BRAND_IMG
+				, MAX(GROUP2_TITLE) AS GROUP2_TITLE
+				, MAX(GROUP2_BRAND_CD) AS GROUP2_BRAND_CD
+				, MAX(GROUP2_BRAND_NM) AS GROUP2_BRAND_NM
+				, MAX(GROUP2_BRAND_IMG) AS GROUP2_BRAND_IMG
+				, MAX(GROUP3_TITLE) AS GROUP3_TITLE
+				, MAX(GROUP3_BRAND_CD) AS GROUP3_BRAND_CD
+				, MAX(GROUP3_BRAND_NM) AS GROUP3_BRAND_NM
+				, MAX(GROUP3_BRAND_IMG) AS GROUP3_BRAND_IMG
+		FROM (
+				SELECT  STR_TITLE3
+					, DISP_STDT
+					, DISP_EDDT
+					, CASE WHEN STR_TITLE2 = 1 THEN TITLE END AS GROUP1_TITLE
+					, CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP1_BRAND_CD
+					, CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP1_BRAND_NM
+					, CASE WHEN STR_TITLE2 = 1 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP1_BRAND_IMG
+					, CASE WHEN STR_TITLE2 = 2 THEN TITLE END AS GROUP2_TITLE
+					, CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP2_BRAND_CD
+					, CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP2_BRAND_NM
+					, CASE WHEN STR_TITLE2 = 2 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP2_BRAND_IMG
+					, CASE WHEN STR_TITLE2 = 3 THEN TITLE END AS GROUP3_TITLE
+					, CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(BRAND_GROUP_NO SEPARATOR ',') END GROUP3_BRAND_CD
+					, CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(BRAND_GROUP_NM SEPARATOR ',') END GROUP3_BRAND_NM
+					, CASE WHEN STR_TITLE2 = 3 THEN GROUP_CONCAT(LOGO_FILE_NM SEPARATOR ',') END GROUP3_BRAND_IMG
+				FROM (
+					SELECT
+							B.STR_TITLE3
+							, B.STR_TITLE2
+							, B.DISP_STDT
+							, B.DISP_EDDT
+							, B.STR_TITLE1     AS TITLE
+							, 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
+					FROM   TB_BRAND_GROUP A
+						, TB_CONTENTS_PREVIEW B
+					WHERE  A.BRAND_GROUP_NO = B.STR_VAR1
+					AND    A.USE_YN = 'Y'
+					AND	   B.CATE_NO = #{cateNo}
+					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
+				) T
+			GROUP BY STR_TITLE2
+		) Z
+	</select>
 </mapper>

+ 9 - 13
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -178,16 +178,12 @@
 		<if test="planGb != null and planGb != ''">
 		AND    PLAN_GB = #{planGb}
 		</if>
-		<if test="dispStdt != null and dispStdt != ''">
-		AND    DISP_EDDT <![CDATA[>=]]> DATE_FORMAT(#{dispStdt}, '%Y-%m-%d %H:%i:%S')
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+        AND    DISP_STDT <![CDATA[ >= ]]> DATE_FORMAT(#{stDate},'%Y-%m-%d %H:%i:%S')
+        AND    DISP_STDT <![CDATA[ <= ]]> DATE_FORMAT(#{edDate},'%Y-%m-%d %H:%i:%S')
 		</if>
-		<if test="dispEddt != null and dispEddt != ''">
-		AND    DISP_STDT <![CDATA[<=]]> DATE_FORMAT(#{dispEddt}, '%Y-%m-%d %H:%i:%S')
-		</if>
-		<if test="popupDispStdt != null and popupDispStdt != ''">
-		AND    DISP_EDDT <![CDATA[>=]]> DATE_FORMAT(#{popupDispStdt}, '%Y-%m-%d %H:%i:%S')
-		</if>
-		<if test="popupDispEddt != null and popupDispEddt != ''">
+		<if test="popupDispStdt != null and popupDispStdt != '' and popupDispEddt != null and popupDispEddt != ''">
+		AND    DISP_STDT <![CDATA[>=]]> DATE_FORMAT(#{popupDispStdt}, '%Y-%m-%d %H:%i:%S')
 		AND    DISP_STDT <![CDATA[<=]]> DATE_FORMAT(#{popupDispEddt}, '%Y-%m-%d %H:%i:%S')
 		</if>
 	</sql>
@@ -231,7 +227,7 @@
 		         INSERT INTO
 				      TB_PLAN_FSRC (
 				          PLAN_SQ
-				          , LOC_GB
+				          , FRONT_GB
 				          , FSRC_PC
 				          , FSRC_MOB
 				          , DISP_YN
@@ -242,7 +238,7 @@
 				      )
 				   VALUES (
 				    	  #{planSq}
-				    	  , #{locGb}
+				    	  , #{frontGb}
 				          , #{fsrcPc}
 				          , #{fsrcMob}
 				          , #{dispYn}
@@ -1167,7 +1163,7 @@
 		/* TsaPlan.getPlanContentFsrcList */
 		SELECT 
 		  	  B.PLAN_SQ
-		     ,B.LOC_GB
+		     ,B.FRONT_GB
 		     ,B.DISP_YN 
 		     ,B.FSRC_MOB 
 		     ,B.FSRC_PC 
@@ -1177,7 +1173,7 @@
 		     ,B.UPD_DT
 		FROM TB_PLAN_FSRC B
 		WHERE B.PLAN_SQ = #{planSq}
-			AND B.LOC_GB = #{locGb}  
+			AND B.FRONT_GB = #{fontGb}  
 	</select>
 	
 	<select id="getPlanContentGoodsList" parameterType="Plan" resultType="Plan">

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

@@ -203,6 +203,7 @@
 		WHERE 1=1
 			AND A.USE_YN = 'Y'
 			AND A.APPLY_GB = 'A'
+			AND A.SOCIAL_SQ != #{socialSq}
 			AND  (A.SOCIAL_STDT <![CDATA[ <= ]]>  DATE_FORMAT(DATE_ADD(#{socialStdt}, INTERVAL 0 DAY), '%Y%m%d%H%i%S')  
 			OR A.SOCIAL_EDDT <![CDATA[ >= ]]>  DATE_FORMAT(DATE_ADD(#{socialStdt}, INTERVAL 0 DAY), '%Y%m%d%H%i%S'))  
 	</select>

+ 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 - 0
src/main/webapp/WEB-INF/views/display/GoodsDispOrdChangePopupForm.html

@@ -26,6 +26,7 @@
 			<input type="hidden" id="cate4No" name="cate4No" th:value="${params.cate4No}"/>
 			<input type="hidden" id="searchGb" name="searchGb" value="BASIC"/>
 			<input type="hidden" id="cateCd" name="cateCd" th:value="${params.cateCd}"/>
+			<input type="hidden" id="contentsLoc" name="contentsLoc" th:value="${params.contentsLoc}"/>
 			<button type="button" class="btn btn-base btn-lg" id="btnSearch" style="display: none;">조회</button>
 			<div class="panelTitle">
 				<h2>상품 순서변경</h2>
@@ -298,6 +299,7 @@
 					dispOrdArr : dispOrdArr
 					,goodsCdArr : goodsCdArr
 					,cateNo : $("#goodsDispOrdChangeForm input[name=cateCd]").val()
+					,contentsLoc : $("#goodsDispOrdChangeForm input[name=contentsLoc]").val()
 				}
 
 				var jsonData = JSON.stringify(data);

+ 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>

+ 341 - 361
src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html

@@ -42,7 +42,7 @@
 	var contentsLoc = [[${contentsLoc}]];
 	var contentsTitle = [[${contentsTitle}]];
 	var contentsLocArr = gagajf.convertToArray([[${contentsLocList}]]);
-	var tdWidth = $("#sortable").find("td").width();
+	var tdWidth = $("#gnbTabList").find("td").width();
 	var tdDeleteWidth = parseInt(tdWidth/11, 10);
 	tdWidth = tdWidth - tdDeleteWidth;
 	var cate1List = [[${cate1List}]];
@@ -76,152 +76,89 @@
 		return html;
 	}
 
-	// 창닫기
-	var fnMainGnbContentsPopupFormClose = function (){
-		uifnPopupClose('popupMainGnbContents');
-	}
-
-	var fnChangeCateType = function (obj, idx){
-		let cateType = $("#tabTable"+idx).find("input:radio[name=cateType"+idx+"]:checked").val();
-
+	// 탭추가
+	var addIdx = 0;
+	var fnAddTab = function (param){
+		addIdx = tableIdx;
 		var html = '';
-		if(cateType=='B'){
-			$(obj).closest("table").find("[name=tabBrandRow]").show();
-			$(obj).closest("table").find("[name=tabCateRow]").hide();
-			$(obj).closest("table").find("[name=tabOutletRow]").hide();
-			$(obj).closest("table").find("[name=tabLinkTitleRow]").hide();
-			$(obj).closest("table").find("[name=tabLinkRow]").hide();
-			/*$(obj).closest("table").find("[name=title]").val("브랜드");
-			$(obj).closest("table").find("[name=link]").val("/brand/list");
-			$(obj).closest("table").find("[name=title]").attr("readOnly",true);
-			$(obj).closest("table").find("[name=link]").attr("readOnly",true);*/
-		}else if(cateType=='C'){
-			$(obj).closest("table").find("[name=tabBrandRow]").hide();
-			$(obj).closest("table").find("[name=tabBrandTitle]").hide();
-			$(obj).closest("table").find("[name=tabBrandLink]").hide();
-			$(obj).closest("table").find("[name=tabCateRow]").show();
-			$(obj).closest("table").find("[name=tabOutletRow]").hide();
-			$(obj).closest("table").find("[name=tabLinkTitleRow]").hide();
-			$(obj).closest("table").find("[name=tabLinkRow]").hide();
-			/*$(obj).closest("table").find("[name=title]").val("");
-			$(obj).closest("table").find("[name=link]").val("/category/form");
-			$(obj).closest("table").find("[name=title]").attr("readOnly",true);
-			$(obj).closest("table").find("[name=link]").attr("readOnly",true);*/
-		}else if(cateType=='O'){
-			$(obj).closest("table").find("[name=tabBrandRow]").hide();
-			$(obj).closest("table").find("[name=tabBrandTitle]").hide();
-			$(obj).closest("table").find("[name=tabBrandLink]").hide();
-			$(obj).closest("table").find("[name=tabCateRow]").hide();
-			$(obj).closest("table").find("[name=tabLinkTitleRow]").hide();
-			$(obj).closest("table").find("[name=tabLinkRow]").hide();
-			/*$(obj).closest("table").find("[name=title]").val("아울렛");
-			$(obj).closest("table").find("[name=link]").val("/outlet/main");
-			$(obj).closest("table").find("[name=title]").attr("readOnly",true);
-			$(obj).closest("table").find("[name=link]").attr("readOnly",true);*/
-		}else if(cateType=='L'){
-			$(obj).closest("table").find("[name=tabBrandRow]").hide();
-			$(obj).closest("table").find("[name=tabBrandTitle]").hide();
-			$(obj).closest("table").find("[name=tabBrandLink]").hide();
-			$(obj).closest("table").find("[name=tabCateRow]").hide();
-			$(obj).closest("table").find("[name=tabOutletRow]").hide();
-			$(obj).closest("table").find("[name=tabLinkTitleRow]").show();
-			$(obj).closest("table").find("[name=tabLinkRow]").show();
-			/*$(obj).closest("table").find("[name=title]").val("");
-			$(obj).closest("table").find("[name=link]").val("#");
-			$(obj).closest("table").find("[name=title]").attr("readOnly",false);
-			$(obj).closest("table").find("[name=link]").attr("readOnly",false);*/
+		html += '<table class="frmStyle tabTable" style="margin-bottom:30px" id="tabTable'+addIdx+'">';
+		html += '<input type="hidden" name="tableIdx" value="'+addIdx+'" data-id="'+addIdx+'" />';
+		html += '	<colgroup>';
+		html += '		<col style="width:10%;"/>';
+		html += '		<col style="width:55%;"/>';
+		html += '		<col/>';
+		html += '	</colgroup>';
+		html += '	<thead>';
+		if(contentsLoc=='STAB002'){
+			html += '<tr class="cateTypeTr">';
+			html += '	<th>유형선택</th>';
+			html += '	<td colspan="3">';
+			//html += '		<label class="rdoBtn"><input type="radio" name="cateType'+addIdx+'" value="C" onclick="fnChangeCateType(this,'+addIdx+');"/>대카테고리</label>';
+			//html += '		<label class="rdoBtn"><input type="radio" name="cateType'+addIdx+'" value="O" onclick="fnChangeCateType(this,'+addIdx+');"/>아울렛</label>';
+			//html += '		<label class="rdoBtn"><input type="radio" name="cateType'+addIdx+'" value="L" onclick="fnChangeCateType(this,'+addIdx+');"/>이벤트링크</label>';
+			html += '	</td>';
+			html += '</tr>';
 		}
-	}
-
-	/**
-	 * 몰메인 카테고리 탭일때
-	 */
-	var tabIdx = 0;
-	var fnAddTab = function (param){
-		tabIdx = tableIdx;
-
-		var html = '<table class="frmStyle tabTable" style="margin-bottom:30px" id="tabTable'+tabIdx+'">';
-		html += '<input type="hidden" name="idxTest" value="'+tabIdx+'" data-id="'+tabIdx+'">';
-		html += '<colgroup>';
-		html += '<col style="width:10%;"/>';
-		html += '<col style="width:55%;"/>';
-		html += '<col/>';
-		html += '</colgroup>';
-		html += '<thead>';
-		html += '<tr class="cateTypeTr">';
-		html += '<th>유형선택</th>';
-		html += '<td colspan="3">';
-		html += '<label class="rdoBtn"><input type="radio" name="cateType'+tabIdx+'" value="B" onclick="fnChangeCateType(this,'+tabIdx+');"/>브랜드</label>';
-		html += '<label class="rdoBtn"><input type="radio" name="cateType'+tabIdx+'" value="C" onclick="fnChangeCateType(this,'+tabIdx+');"/>대카테고리</label>';
-		html += '<label class="rdoBtn"><input type="radio" name="cateType'+tabIdx+'" value="O" onclick="fnChangeCateType(this,'+tabIdx+');"/>아울렛</label>';
-		html += '<label class="rdoBtn"><input type="radio" name="cateType'+tabIdx+'" value="L" onclick="fnChangeCateType(this,'+tabIdx+');"/>이벤트링크</label>';
-		html += '</td>';
-		html += '</tr>';
-		html += '<tr><th>전시일시</th><td><input name="dispStdt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출시작일" data-valid-type="calendar"/>';
-		html += '<select name="stTimeHour" required="required" data-valid-name="노출기간 시작시간">';
+		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"/>';
+		html += '			<select name="stTimeHour" required="required" data-valid-name="노출기간 시작시간">';
 		html += fnCreateTimeOption(24);
-		html += '</select>';
-		html += '<select name="stTimeMin" required="required" data-valid-name="노출기간 시작시간">';
+		html += '			</select>';
+		html += '			<select name="stTimeMin" required="required" data-valid-name="노출기간 시작시간">';
 		html += fnCreateTimeOption(60);
-		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"/>';
-		html += '<select name="edTimeHour" required="required" data-valid-name="노출기간 종료시간">';
+		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"/>';
+		html += '			<select name="edTimeHour" required="required" data-valid-name="노출기간 종료시간">';
 		html += fnCreateTimeOption(24,23);
-		html += '</select>';
-		html += '<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
+		html += '			</select>';
+		html += '			<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
 		html += fnCreateTimeOption(60,59);
-		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>';
-		html += '	<tr name="tabBrandRow" style="display:none;">';
-		html += '		<th>캐주얼<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+tabIdx+'\',1);">브랜드조회</button></th>';
-		html += '		<td colspan="3" id="tabBrand1">';
-		html += '			<ul class="brandGroupUl">';
-		html += '			</ul>';
-		html += '		</td>';
-		html += '	</tr>';
-		html += '	<tr name="tabBrandRow" style="display:none;">';
-		html += '		<th>골프<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+tabIdx+'\',2);">브랜드조회</button></th>';
-		html += '		<td colspan="3" id="tabBrand2">';
-		html += '			<ul class="brandGroupUl">';
-		html += '			</ul>';
-		html += '		</td>';
-		html += '	</tr>';
-		html += '	<tr name="tabBrandRow" style="display:none;">';
-		html += '		<th>키즈<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+tabIdx+'\',3);">브랜드조회</button></th>';
-		html += '		<td colspan="3" id="tabBrand3">';
-		html += '			<ul class="brandGroupUl">';
-		html += '			</ul>';
-		html += '		</td>';
-		html += '	</tr>';
-		html += '	<tr name="tabCateRow" style="display:none;">';
-		html += '		<th>카테고리</th>';
-		html += '		<td colspan="3">카테고리선택';
-		html += '			<select name="cate1List">';
-		html += '				<option value="">[선택]</option>';
-		for(let i=0; i<cate1List.length; i++){
-			html += '<option value="'+cate1List[i].cd+'">['+cate1List[i].cd+'] '+cate1List[i].cdNm+'</option>';
-		}
 		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 += '	<tr name="tabLinkTitleRow" style="display:none;">';
-		html += '		<th>타이틀</th>';
-		html += '		<td><input name="title" type="text" maxlength="200" data-valid-name="타이틀" value=""/></td>';
-		html += '	</tr>';
-		html += '	<tr name="tabLinkRow" style="display:none;">';
-		html += '		<th>링크 (없으면 #)</th>';
-		html += '		<td><input name="link" type="text" maxlength="200" data-valid-name="링크" value=""/></td>';
-		html += '	</tr>';
-		html += '</tbody>';
+		html += '	</thead>';
+		html += '	<tbody>';
+		if(contentsLoc=='STAB001'){
+			for(var i=0; i<3; i++){
+				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>';
+			}
+		}else{
+			html += '	<tr name="tabCateRow" style="display:none;">';
+			html += '		<th>카테고리</th>';
+			html += '		<td colspan="3">카테고리선택';
+			html += '			<select name="cate1List">';
+			html += '				<option value="">[선택]</option>';
+			for(let i=0; i<cate1List.length; i++){
+				html += '<option value="'+cate1List[i].cd+'">['+cate1List[i].cd+'] '+cate1List[i].cdNm+'</option>';
+			}
+			html += '			</select>';
+			html += '		</td>';
+			html += '	</tr>';
+			html += '	<tr name="tabLinkTitleRow" style="display:none;">';
+			html += '		<th>타이틀</th>';
+			html += '		<td><input name="title" type="text" maxlength="200" data-valid-name="타이틀" value=""/></td>';
+			html += '	</tr>';
+			html += '	<tr name="tabLinkRow" style="display:none;">';
+			html += '		<th>링크 (없으면 #)</th>';
+			html += '		<td><input name="link" type="text" maxlength="200" data-valid-name="링크" value=""/></td>';
+			html += '	</tr>';
+		}
+		html += '	</tbody>';
 		html += '</table>';
-
 		$("#gnbTabList").prepend(html);
 		$("#gnbTabList").sortable();
 		$('.schDate').datepicker("destroy");
@@ -230,25 +167,14 @@
 			changeYear: true,
 			defaultDate: $('.schDate').val()
 		});
-		tableIdx = tableIdx+1;
-		fnResetTabIdx();
-		//fnResetCateTypeIdx();
-	}
-
-	var fnResetTabIdx = function (){
-		$(".tabTable").each(function(i){
-			//$(this).attr('id','tabTable'+i);
-			$(this).find("input[name=dispOrd]").val(i+1);
-		});
 
-	}
+		if(contentsLoc=='STAB001'){
+			$("#brandListTd1").sortable();
+			$("#brandListTd2").sortable();
+			$("#brandListTd3").sortable();
+		}
 
-	var fnResetCateTypeIdx = function (){
-		$(".cateTypeTr").each(function(i){
-			$(this).find("input:radio").attr('name','cateType'+i);
-			$(this).find("input:radio").removeAttr("onclick");
-			$(this).find("input:radio").attr("onclick","fnChangeCateType(this,"+i+");");
-		});
+		tableIdx = tableIdx+1;
 	}
 
 	var tabTableRow;
@@ -259,260 +185,302 @@
 		cfnOpenBrandGroupListPopup("callBackBrandGroup", "S", "S");
 	}
 
+	// 브랜드 코드, 브랜드 명, 브랜드 이미지 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 + " #brandListTd" + callbackBrandTr).append(html);
+		brandCdIdx++;
+	}
+
+	var fnRemoveBrand = function (obj , idx){
+		var divId = $(obj).closest('div').attr('id');
+		$("#"+divId+" #brandUl"+idx).remove();
+		//fnReloadGoodsListIdx(divId);
+	}
+
+	// 카테고리 유형 선택
+	var fnChangeCateType = function (obj, idx){
+		let cateType = $("#tabTable"+idx).find("input:radio[name=cateType"+idx+"]:checked").val();
 
+		if(cateType=='C'){
+			$(obj).closest("table").find("[name=tabCateRow]").show();
+			$(obj).closest("table").find("[name=tabOutletRow]").hide();
+			$(obj).closest("table").find("[name=tabLinkTitleRow]").hide();
+			$(obj).closest("table").find("[name=tabLinkRow]").hide();
+		}else if(cateType=='O'){
+			$(obj).closest("table").find("[name=tabCateRow]").hide();
+			$(obj).closest("table").find("[name=tabLinkTitleRow]").hide();
+			$(obj).closest("table").find("[name=tabLinkRow]").hide();
+		}else if(cateType=='L'){
+			$(obj).closest("table").find("[name=tabCateRow]").hide();
+			$(obj).closest("table").find("[name=tabOutletRow]").hide();
+			$(obj).closest("table").find("[name=tabLinkTitleRow]").show();
+			$(obj).closest("table").find("[name=tabLinkRow]").show();
 		}
-		$("#tabTable"+tabTableRow +" #tabBrand"+callbackBrandTr+" .brandGroupUl").append(html);
 	}
 
-	var fnRemoveBrand = function (obj, idx){
-		var divId = $(obj).closest('td').attr('id');
-		$("#"+divId+" #brandSpan"+idx).remove();
+	// 창닫기
+	var fnMainGnbContentsPopupFormClose = function (){
+		uifnPopupClose('popupMainGnbContents');
 	}
 
 	// 컨텐츠 행삭제
 	var fnDeleteContentsRow = function (obj){
 		$(obj).closest("table").remove();
-		fnResetTabIdx();
 	}
 
 	/**
 	 * 임시저장
 	 */
 	var dataArr = [];
-	$("#btnGnbTabSave").on('click',function (){
+	$("#btnGnbTabSave").on('click', function(){
 		if(!gagajf.checkRequired("#gnbTabList")){
 			return;
 		}
-		dataArr = [];
-		console.log('1');
-		$(".tabTable").each(function (){
-			console.log('2');
-			//var brandCasualArr = [];
-			//var brandGolfArr = [];
-			//var brandKidsArr = [];
-			var strTitle1 = "";		// 타이틀
-			var strTitle2 = "";		// category 일때, 카테코드
-			var strVar1 = "";		// 링크
-
-			var brnadCasualList = "";
-			var brnadGolfList = "";
-			var brnadKidsList = "";
-
-			var radioNm = $(this).find(".rdoBtn input").attr("name");
-			var radioValue = $(this).find("input:radio[name="+radioNm+"]:checked").val();
-
-			if(radioValue=='B'){
-				$(this).find("#tabBrand1 >ul >span").each(function (){
-					//brandCasualArr.push($(this).find("input[name=brandGroupNo]").val());
-					brnadCasualList += ','+$(this).find("input[name=brandGroupNo]").val();
-				});
-				$(this).find("#tabBrand2 >ul >span").each(function (){
-					//brandCasualArr.push($(this).find("input[name=brandGroupNo]").val());
-					brnadGolfList += ','+$(this).find("input[name=brandGroupNo]").val();
-				});
-				$(this).find("#tabBrand3 >ul >span").each(function (){
-					//brandCasualArr.push($(this).find("input[name=brandGroupNo]").val());
-					brnadKidsList += ','+$(this).find("input[name=brandGroupNo]").val();
-				});
-				strTitle1 = "브랜드";
-				strVar1 = "/brand/list";
-			}
 
-			if(radioValue=='C'){
-				var cateText = $(this).find("tr[name=tabCateRow]").find("select[name=cate1List] option:selected").text();
-				var cateValue = $(this).find("tr[name=tabCateRow]").find("select[name=cate1List] option:selected").val();
-				var cateTextArr = cateText.split(" ");
-				strTitle1 = cateTextArr[1];
-				strVar1 = "/category/form";
-				strVar2 = cateValue;
-			}
-
-			if(radioValue=='O'){
-				strTitle1 = "아울렛";
-				strVar1 = "/outlet/main";
-			}
-
-			if(radioValue=='L'){
-				strTitle1 = $(this).find("input[name=title]").val();
-				strVar1 = $(this).find("input[name=link]").val();
-			}
-
-			var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
-			var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
-			var dispOrd = $(this).find("[name=dispOrd]").val();
+		dataArr = [];
+		$("#gnbTabList .tabTable").each(function (){
 			var newImgFileArr = [];
-
-			var data = {
-				cateNo : cateNo
-				, contentsLoc : contentsLoc
-				, contentsType : radioValue
-				, dispOrd : dispOrd
-				, dispStdt : dispStdt
-				, dispEddt : dispEddt
-				, newImgFileArr : newImgFileArr
-				, strVar1 : strVar1
-				, strVar2 : brnadCasualList
-				, strVar3 : brnadGolfList
-				, strVar4 : brnadKidsList
-				, strTitle1 : strTitle1
-				, strTitle2 : strTitle2
-				, useYn : 'Y'
-			}
-			dataArr.push(data);
+			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;
+
+			strTitle3 = $(".tabTable").find("input[name=tableIdx]").val();
+
+			$(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();
+				strTitle2 = idx;
+
+				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('컨텐츠를 저장 하시겠습니까?', {
+		mcxDialog.confirm('저장하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function(){
-				gagajf.ajaxJsonSubmit('/display/contents/preview/save', jsonData, fnGetGnbTabContentsPreviewList);
+				gagajf.ajaxJsonSubmit('/display/contents/preview/save', jsonData, fnGetBrandPreviewList);
 			}
 		});
 	});
 
-	var fnGetGnbTabContentsPreviewList = function (){
+	// 브랜드 코드에 해당하는 브랜드 명, 브랜드 이미지 join해서 가져와야함 -> 로직 수정 필요
+	var fnGetBrandPreviewList = function (result){
 		$("#gnbTabList").html('');
 		var data = {cateNo : cateNo
 			,contentsLoc : contentsLoc
 		};
 		var jsonData = JSON.stringify(data);
-		gagajf.ajaxJsonSubmit('/display/contents/preview/list', jsonData, fnCreateGnbTabLayout);
+		gagajf.ajaxJsonSubmit('/display/contents/tab/preview/list', jsonData, fnCreateBrandLayout);
 	}
 
-	var fnCreateGnbTabLayout = function (result){
+	var fnCreateBrandLayout = function (result){
 		var html = '';
 		for(var i=0; i<result.length; i++){
+			var g1cdArr = result[i].group1brandCd.split(",");
+			var g2cdArr = result[i].group2brandCd.split(",");
+			var g3cdArr = result[i].group3brandCd.split(",");
+			var g1nmArr = result[i].group1brandNm.split(",");
+			var g2nmArr = result[i].group2brandNm.split(",");
+			var g3nmArr = result[i].group3brandNm.split(",");
+			var g1imgArr = result[i].group1brandImg.split(",");
+			var g2imgArr = result[i].group2brandImg.split(",");
+			var g3imgArr = result[i].group3brandImg.split(",");
+
 			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="idxTest" 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 class="cateTypeTr">';
-			html += '<th>유형선택</th>';
-			html += '<td colspan="3">';
-			if(result[i].contentsType=='B'){
-				html += '<label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="B" onclick="fnChangeCateType(this,'+i+');" checked="checked"/>브랜드</label>';
-			}else{
-				html += '<label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="B" onclick="fnChangeCateType(this,'+i+');"/>브랜드</label>';
+			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>';
+
+			html += '	<tr class="groupTr">';
+			html += '		<th>GROUP1<br><input type="text" name="brandGroup'+i+'" id="bTitle1" class="w100" value="'+result[i].group1Title+'"/><br>';
+			html += '			<button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+i+'\',1);">브랜드조회</button><br></th>';
+			html += '		<td colspan="2" name="brandArr'+i+'" id="tabBrand1">';
+			html += '			<div class="sortableWrap" data-unit="7" style="overflow-y:scroll;">';
+			html += '				<div class="itemWrap ui-sortable" id="brandListTd1" data-id="1">';
+			for(let k=0; k<g1cdArr.length; k++){
+				html += '<ul id="brandUl' + k + '" class="item ui-state-default brandClass" style="min-height:130px;">';
+				html += '	<input type="hidden" name="brandGroupNo" value="' + g1cdArr[k] + '">';
+				html += '	<li class="img">';
+				html += '		<img src="' + uploadGoodsUrl + "/" + g1imgArr[k] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				html += '	</li>';
+				html += '	<li class="cont">';
+				html += '		<ul>';
+				html += '			<li class="no" name="brandCdLi"><span>' + g1cdArr[k] + '</span>';
+				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + k + ');">X</a></span>';
+				html += '			</li>';
+				html += '			<li class="title">' + g1nmArr[k] + '</li>';
+				html += '		</ul>';
+				html += '	</li>';
+				html += '</ul>';
 			}
-			if(result[i].contentsType=='C'){
-				html += '<label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="C" onclick="fnChangeCateType(this,'+i+');" checked="checked"/>대카테고리</label>';
-			}else{
-				html += '<label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="C" onclick="fnChangeCateType(this,'+i+');"/>대카테고리</label>';
+			html += '				</div>';
+			html += '			</div>';
+			html += '		</td>';
+			html += '	</tr>';
+
+			html += '	<tr class="groupTr">';
+			html += '		<th>GROUP2<br><input type="text" name="brandGroup'+i+'" id="bTitle2" class="w100" value="'+result[i].group2Title+'"/><br>';
+			html += '			<button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+i+'\',2);">브랜드조회</button><br></th>';
+			html += '		<td colspan="2" name="brandArr'+i+'" id="tabBrand2">';
+			html += '			<div class="sortableWrap" data-unit="7" style="overflow-y:scroll;">';
+			html += '				<div class="itemWrap ui-sortable" id="brandListTd2" data-id="2">';
+			for(let m=0; m<g2cdArr.length; m++){
+				html += '<ul id="brandUl' + m + '" class="item ui-state-default brandClass" style="min-height:130px;">';
+				html += '	<input type="hidden" name="brandGroupNo" value="' + g2cdArr[m] + '">';
+				html += '	<li class="img">';
+				html += '		<img src="' + uploadGoodsUrl + "/" + g2imgArr[m] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				html += '	</li>';
+				html += '	<li class="cont">';
+				html += '		<ul>';
+				html += '			<li class="no" name="brandCdLi"><span>' + g2cdArr[m] + '</span>';
+				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + m + ');">X</a></span>';
+				html += '			</li>';
+				html += '			<li class="title">' + g2nmArr[m] + '</li>';
+				html += '		</ul>';
+				html += '	</li>';
+				html += '</ul>';
 			}
-			if(result[i].contentsType=='O'){
-				html += '<label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="O" onclick="fnChangeCateType(this,'+i+');" checked="checked"/>아울렛</label>';
-			}else{
-				html += '<label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="O" onclick="fnChangeCateType(this,'+i+');"/>아울렛</label>';
+			html += '				</div>';
+			html += '			</div>';
+			html += '		</td>';
+			html += '	</tr>';
+
+			html += '	<tr class="groupTr">';
+			html += '		<th>GROUP3<br><input type="text" name="brandGroup'+i+'" id="bTitle3" class="w100" value="'+result[i].group3Title+'"/><br>';
+			html += '			<button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+i+'\',3);">브랜드조회</button><br></th>';
+			html += '		<td colspan="2" name="brandArr'+i+'" id="tabBrand3">';
+			html += '			<div class="sortableWrap" data-unit="7" style="overflow-y:scroll;">';
+			html += '				<div class="itemWrap ui-sortable" id="brandListTd3" data-id="3">';
+			for(let n=0; n<g3cdArr.length; n++){
+				html += '<ul id="brandUl' + n + '" class="item ui-state-default brandClass" style="min-height:130px;">';
+				html += '	<input type="hidden" name="brandGroupNo" value="' + g3cdArr[n] + '">';
+				html += '	<li class="img">';
+				html += '		<img src="' + uploadGoodsUrl + "/" + g3imgArr[n] + '" onerror="this.src=\'/image/no.gif\';"/>';
+				html += '	</li>';
+				html += '	<li class="cont">';
+				html += '		<ul>';
+				html += '			<li class="no" name="brandCdLi"><span>' + g3cdArr[n] + '</span>';
+				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + n + ');">X</a></span>';
+				html += '			</li>';
+				html += '			<li class="title">' + g3nmArr[n] + '</li>';
+				html += '		</ul>';
+				html += '	</li>';
+				html += '</ul>';
 			}
-			if(result[i].contentsType=='L'){
-				html += '<label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="L" onclick="fnChangeCateType(this,'+i+');" checked="checked"/>이벤트링크</label>';
-			}else{
-				html += '<label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="L" onclick="fnChangeCateType(this,'+i+');"/>이벤트링크</label>';
-			}
-			html += '</td>';
-			html += '</tr>';
-			html += '<tr><th>전시일시</th><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);
-			html += '</select>';
-			html += '<select name="stTimeMin" required="required" data-valid-name="노출기간 시작시간">';
-			html += fnCreateTimeOption(60);
-			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,23);
-			html += '</select>';
-			html += '<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
-			html += fnCreateTimeOption(60,59);
-			html += '</select>';
-			html += '<input name="dispOrd" type="text" class="w80"placeholder="전시순서" style="margin-left:5px; text-align:center" value="'+result[i].dispOrd+'"/>';
-			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>';
-			if(result[i].contentsType=='B'){
-				html += '	<tr name="tabBrandRow">';
-				html += '		<th>캐주얼<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+i+'\',1);">브랜드조회</button></th>';
-				html += '		<td colspan="3" id="tabBrand1">';
-				html += '			<ul class="brandGroupUl">';
-
-				html += '			</ul>';
-				html += '		</td>';
-				html += '	</tr>';
-				html += '	<tr name="tabBrandRow">';
-				html += '		<th>골프<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+i+'\',2);">브랜드조회</button></th>';
-				html += '		<td colspan="3" id="tabBrand2">';
-				html += '			<ul class="brandGroupUl">';
-
-				html += '			</ul>';
-				html += '		</td>';
-				html += '	</tr>';
-				html += '	<tr name="tabBrandRow">';
-				html += '		<th>키즈<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchBrand(\''+i+'\',3);">브랜드조회</button></th>';
-				html += '		<td colspan="3" id="tabBrand3">';
-				html += '			<ul class="brandGroupUl">';
+			html += '				</div>';
+			html += '			</div>';
+			html += '		</td>';
+			html += '	</tr>';
 
-				html += '			</ul>';
-				html += '		</td>';
-				html += '	</tr>';
-			}
-			else if(result[i].contentsType=='C'){
-				html += '	<tr name="tabCateRow">';
-				html += '		<th>카테고리</th>';
-				html += '		<td colspan="3">카테고리선택';
-				html += '			<select name="cate1List">';
-				html += '				<option value="">[선택]</option>';
-				for(let i=0; i<cate1List.length; i++){
-					if(strTitle2==cate1List[i].cd){
-						html += '<option value="'+cate1List[i].cd+'" selected="selected">['+cate1List[i].cd+'] '+cate1List[i].cdNm+'</option>';
-					}else{
-						html += '<option value="'+cate1List[i].cd+'">['+cate1List[i].cd+'] '+cate1List[i].cdNm+'</option>';
-					}
-				}
-				html += '			</select>';
-				html += '		</td>';
-				html += '	</tr>';
-			}
-			else if(result[i].contentsType=='L'){
-				html += '	<tr name="tabLinkTitleRow" style="display:none;">';
-				html += '		<th>타이틀</th>';
-				html += '		<td><input name="title" type="text" maxlength="200" data-valid-name="타이틀" value="'+result[i].strTitle1+'"/></td>';
-				html += '	</tr>';
-				html += '	<tr name="tabLinkRow" style="display:none;">';
-				html += '		<th>링크 (없으면 #)</th>';
-				html += '		<td><input name="link" type="text" maxlength="200" data-valid-name="링크" value="'+result[i].strVar1+'"/></td>';
-				html += '	</tr>';
-			}
-			html += '</tbody>';
+			html += '	</tbody>';
 			html += '</table>';
 		}
-		$("#gnbTabList").append(html);
+		$("#gnbTabList").prepend(html);
 		$("#gnbTabList").sortable();
 		$('.schDate').datepicker("destroy");
 		$('.schDate').datepicker({
@@ -520,18 +488,30 @@
 			changeYear: true,
 			defaultDate: $('.schDate').val()
 		});
-		tableIdx = $(".tabTable").length;
+
+		if(contentsLoc=='STAB001'){
+			$("#brandListTd1").sortable();
+			$("#brandListTd2").sortable();
+			$("#brandListTd3").sortable();
+		}
+
+		tableIdx = tableIdx+1;
 	}
 
 	$(document).ready(function() {
 		$("#gnbTabList").disableSelection();
 		$("#gnbTabList").sortable({
 			stop: function(event, ui) {
-				fnResetTabIdx();
+				//fnResetTabIdx();
 			}
 		});
 
-		fnGetGnbTabContentsPreviewList();
+		if(contentsLoc=='STAB001'){
+			fnGetBrandPreviewList();
+		}else{
+			//fnGetGnbCategoryContentsPreviewList();
+		}
+
 	});
 /*]]>*/
 </script>

+ 6 - 3
src/main/webapp/WEB-INF/views/display/MainListForm.html

@@ -385,12 +385,14 @@
 
 		if(cate1No=='1700'){
 			contentsLocHtml += '<option value="SGNB001">[SGNB001] STYLE24MALL > GNB > TOP배너</option>';
-			contentsLocHtml += '<option value="STAB001">[STAB001] STYLE24MALL > GNB > 카테고리탭</option>';
+			contentsLocHtml += '<option value="STAB001">[STAB001] STYLE24MALL > GNB > 브랜드</option>';
+			contentsLocHtml += '<option value="STAB002">[STAB002] STYLE24MALL > GNB > 카테고리</option>';
 			contentsLocHtml += '<option value="SKEY001">[SKEY001] STYLE24MALL > GNB > 검색어</option>';
 		}
 		if(cate1No=='4700'){
 			contentsLocHtml += '<option value="SGNB002">[SGNB001] STYLE24MALL > GNB > TOP배너(모바일)</option>';
-			contentsLocHtml += '<option value="STAB001">[STAB001] STYLE24MALL > GNB > 카테고리탭</option>';
+			contentsLocHtml += '<option value="STAB001">[STAB001] STYLE24MALL > GNB > 브랜드</option>';
+			contentsLocHtml += '<option value="STAB002">[STAB002] STYLE24MALL > GNB > 카테고리</option>';
 			contentsLocHtml += '<option value="SKEY001">[SKEY001] STYLE24MALL > GNB > 검색어</option>';
 		}
 		for(var i=0; i<contentsLocList.length; i++){
@@ -612,7 +614,7 @@
 		// 브랜드픽, MD추천 다른 팝업 사용
 		if(contentsLoc=='SMM007'||contentsLoc=='SMM009'){
 			cfnOpenMainMultiContentsPopup(cateNo, contentsLoc);
-		}else if(contentsLoc=='STAB001'){
+		}else if(contentsLoc=='STAB001' || contentsLoc=='STAB002'){
 			cfnOpenMainGnbContentsPopup(cateNo, contentsLoc);
 		}else{
 			cfnOpenMainContentsPopup(cateNo, contentsLoc);
@@ -738,6 +740,7 @@
 		params += '&selLvl='+selLvl;
 		params += '&cateCd='+result.leafCateNo;
 		params += '&goodsAddYn=Y';
+		params += '&contentsLoc='+result.contentsLoc;
 		cfnOpenGoodsDispOrdChangePopup('', params);
 	};
 

+ 2 - 2
src/main/webapp/WEB-INF/views/marketing/PlanListForm.html

@@ -58,8 +58,8 @@
 									th:value="${oneData.cd}"
 									th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
 						</select></td>
-						<th>등록자</th>
-						<td><input type="text" name="regId" id="regId" /></td>
+						<th rowspan="2">등록자</th>
+						<td rowspan="2"><input type="text" name="regId" id="regId" /></td>
 						<th rowspan="3">키워드</th>
 						<td rowspan="3"><select name="search" id="search">
 								<option value="searchPlanNm">기획전명</option>

+ 25 - 12
src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html

@@ -217,7 +217,7 @@
 										<th>웹용소스</th>
 										<td colspan="5">
 											<div style="margin-top: 5px;">
-												<textarea name="fsrcPcTop" id="fsrcPcTop" rows="15" cols="95" style="width: 1280px;"></textarea>
+												<textarea class="textareaR4 summernote" name="fsrcPcTop" id="fsrcPcTop" rows="15" cols="95" style="width: 1280px;"></textarea>
 											</div>
 										</td>
 									</tr>
@@ -225,7 +225,7 @@
 										<th>모바일용소스</th>
 										<td colspan="5">
 											<div style="margin-top: 5px;">
-												<textarea name="fsrcMobileTop" id="fsrcMobileTop" rows="15" cols="95" style="width: 1280px;"></textarea>
+												<textarea class="textareaR4 summernote" name="fsrcMobileTop" id="fsrcMobileTop" rows="15" cols="95" style="width: 1280px;"></textarea>
 											</div>
 										</td>
 									</tr>
@@ -261,7 +261,7 @@
 										<th>웹용소스</th>
 										<td colspan="5">
 											<div style="margin-top: 5px;">
-												<textarea name="fsrcPcBtm" id="fsrcPcBtm" rows="15"	cols="95" style="width: 1280px;"></textarea>
+												<textarea class="textareaR4 summernote" name="fsrcPcBtm" id="fsrcPcBtm" rows="15"	cols="95" style="width: 1280px;"></textarea>
 											</div>
 										</td>
 									</tr>
@@ -269,7 +269,7 @@
 										<th>모바일용소스</th>
 										<td colspan="5">
 											<div style="margin-top: 5px;">
-												<textarea name="fsrcMobileBtm" id="fsrcMobileBtm" rows="15" cols="95" style="width: 1280px;"></textarea>
+												<textarea class="textareaR4 summernote" name="fsrcMobileBtm" id="fsrcMobileBtm" rows="15" cols="95" style="width: 1280px;"></textarea>
 											</div>
 										</td>
 									</tr>
@@ -2010,11 +2010,20 @@
 	
 	
 $(document).ready(function() {
+		gagaSn.setContents('#fsrcPcBtm', ''); 
+		gagaSn.setContents('#fsrcMobileBtm', '');
+		gagaSn.setContents('#fsrcPcTop', ''); 
+		gagaSn.setContents('#fsrcMobileTop', '');
+/* 		var snOptions1 = gagaSn.getToolbarOptions('media');
+		var snOptions2 = gagaSn.getToolbarOptions('media');
+		var snOptions3 = gagaSn.getToolbarOptions('media');
+		var snOptions4 = gagaSn.getToolbarOptions('media');
+		
 		// 썸머노트 그리기
-		gagaSn.createSummernote(snOptions, '#fsrcPcTop');
-		gagaSn.createSummernote(snOptions, '#fsrcMobileTop');
-		gagaSn.createSummernote(snOptions, '#fsrcPcBtm');
-		gagaSn.createSummernote(snOptions, '#fsrcMobileBtm');
+		gagaSn.createSummernote(snOptions1, '#fsrcPcTop');
+		gagaSn.createSummernote(snOptions2, '#fsrcMobileTop');
+		gagaSn.createSummernote(snOptions3, '#fsrcPcBtm');
+		gagaSn.createSummernote(snOptions4, '#fsrcMobileBtm');  */
 		
 		// 그리드 그리기
 		gagaAgGrid.createGrid("gridListPlanReview", gridOptionsPlanReviewList);
@@ -2106,8 +2115,10 @@ $(document).ready(function() {
 					$('#planTemplateForm input:checkbox[name="btmFsrcDispYn"]').prop('checked', true);
 				}
 			
-				$('#fsrcPcBtm').summernote('code', fsrcListBtm[0].fsrcPc);
-				$('#fsrcMobileBtm').summernote('code', fsrcListBtm[0].fsrcMob);
+				//$('#fsrcPcBtm').summernote('code', fsrcListBtm[0].fsrcPc);
+				//$('#fsrcMobileBtm').summernote('code', fsrcListBtm[0].fsrcMob);
+				gagaSn.setContents('#fsrcPcBtm', fsrcListBtm[0].fsrcPc); 
+				gagaSn.setContents('#fsrcMobileBtm', fsrcListBtm[0].fsrcMob);
 			}
 			
 			//html(상단)
@@ -2118,8 +2129,10 @@ $(document).ready(function() {
 					$('#planTemplateForm input:checkbox[name="topFsrcDispYn"]').prop('checked', true);
 				}
 			
-				$('#fsrcPcTop').summernote('code', fsrcListTop[0].fsrcPc);
-				$('#fsrcMobileTop').summernote('code', fsrcListTop[0].fsrcMob);
+				//$('#fsrcPcTop').summernote('code', fsrcListTop[0].fsrcPc);
+				//$('#fsrcMobileTop').summernote('code', fsrcListTop[0].fsrcMob);
+				gagaSn.setContents('#fsrcPcTop', fsrcListTop[0].fsrcPc); 
+				gagaSn.setContents('#fsrcMobileTop', fsrcListTop[0].fsrcMob);
 			}
 			
 			//상품