Selaa lähdekoodia

Merge branch 'sowon' into develop

sowon4187 5 vuotta sitten
vanhempi
commit
1944c31254

+ 28 - 0
src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java

@@ -101,6 +101,34 @@ public interface TsaPlanDao {
 	 * @since 2021. 2. 8
 	 */
 	void updatePlanWebInfo(Plan param);
+	
+	/**
+	 * 기획전 복사
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 2. 9
+	 */
+	void createPlanCopy(Plan param);
+	
+	/**
+	 * 기획전 브랜드 등록
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 2. 9
+	 */
+	void createPlanBrand(Plan param);
+	
+	/**
+	 * 기획전 브랜드 목록
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 9
+	 */
+	Collection<Plan> getPlanBrandList(Plan param);
 
 
 }

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

@@ -15,6 +15,7 @@ import com.style24.admin.biz.dao.TsaPlanDao;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.session.TscSession;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.MoreBetterGoods;
 import com.style24.persistence.domain.Plan;
 
 import lombok.extern.slf4j.Slf4j;
@@ -57,9 +58,21 @@ public class TsaPlanService {
 	 */
 	@Transactional("shopTxnManager")
 	public void createPlanWebInfo(Plan param) {
+		Plan plan = new Plan();
 		param.setRegNo(TsaSession.getInfo().getUserNo());
 		param.setUpdNo(TsaSession.getInfo().getUserNo());
 		planDao.createPlanWebInfo(param);
+		
+		String[] brand = param.getMultiBrand();
+		// 기획전 브랜드 insert
+		for (int j = 0; j < brand.length; j++) {
+			plan.setBrandCd(brand[j]);
+			plan.setPlanSq(param.getPlanSq());
+			plan.setRegNo(TsaSession.getInfo().getUserNo());
+			plan.setUpdNo(TsaSession.getInfo().getUserNo());
+			planDao.createPlanBrand(plan);
+		}
+		    
 
 		log.debug("planSq : {}", param.getPlanSq());
 
@@ -383,6 +396,56 @@ public class TsaPlanService {
 //		}
 	}
 	
+	/**
+	 * 기획전 복사
+	 *
+	 * @param 복사대상 기획전 번호
+	 * @return 복사된 기획전 번호
+	 * @author rladbwnd5
+	 * @since 2021. 02. 09
+	 */
+	@Transactional("shopTxnManager")
+	public Plan copyPlan(Plan param) {
+		Plan plan = new Plan();
+		int userNo = TsaSession.getInfo().getUserNo();
+		// 01. 기획전 복사
+		param.setRegNo(userNo);
+		param.setUpdNo(userNo);
+		planDao.createPlanCopy(param);
+		
+
+		// 02. 기획전 코너 목록 조회
+//		Plan serchCorner = new Plan();
+//		serchCorner.setPlanSq(param.getCopyPlanSq());
+//		Collection<TsaPlan> cornerList = marketingDao.getPlanCornerList(serchCorner);
+//
+//		for (TsaPlan cornerInfo : cornerList) {
+//			// 03. 기획전 코너 복사
+//			TsaPlan copyCorner = new TsaPlan();
+//			copyCorner.setPlanSq(plan.getPlanSq());
+//			copyCorner.setCopyPlanDtlSq(cornerInfo.getPlanDtlSq());
+//			copyCorner.setRegId(userId);
+//			copyCorner.setUpdId(userId);
+//			marketingDao.createPlanCornerCopy(copyCorner);
+//			plan.setPlanDtlSq(copyCorner.getPlanDtlSq());
+//
+//			// 04. 상품 조회
+//			TsaPlan searchGoods = new TsaPlan();
+//			searchGoods.setPlanDtlSq(cornerInfo.getPlanDtlSq());
+//			Collection<TsaPlan> goodsList = marketingDao.getPlanGoodsList(searchGoods);
+//
+//			// 05. 상품 복사
+//			for (TsaPlan goodsInfo : goodsList) {
+//				goodsInfo.setPlanDtlSq(plan.getPlanDtlSq());
+//				goodsInfo.setRegId(userId);
+//				goodsInfo.setUpdId(userId);
+//				marketingDao.createPlanGoodsCopy(goodsInfo);
+//			}
+//		}
+
+		return plan;
+	}
+	
 	/**
 	 * 파일 삭제
 	 *
@@ -399,5 +462,17 @@ public class TsaPlanService {
 			// Nothing Do
 		}
 	}
+	
+	/**
+	 * 기획전 브랜드 목록
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 9
+	 */
+	public Collection<Plan> getPlanBrandList(Plan param){
+		return planDao.getPlanBrandList(param);
+	}
 
 }

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

@@ -1329,6 +1329,9 @@ public class TsaMarketingController extends TsaBaseController {
 		if (param.getMode().equals("N")) { // 신규 일 때
 			// 기획전 전체 목록
 			mav.addObject("planList", planService.getPlanAllList(param));
+			
+			// 브랜드 목록
+			mav.addObject("brandList", rendererService.getSupplyCompanyBrandList(""));
 
 		} else if(param.getMode().equals("U")){ // 상세 일 때
 			mav.addObject("planInfo", planService.getPlanWebDetailInfo(param));
@@ -1336,6 +1339,10 @@ public class TsaMarketingController extends TsaBaseController {
 			mav.addObject("fsrcPc", planService.getPlanFsrcPcList(param));
 
 			mav.addObject("fsrcMobile", planService.getPlanFsrcMobileList(param));
+			
+			mav.addObject("planBrandList", planService.getPlanBrandList(param));
+			
+			mav.addObject("brandList", rendererService.getSupplyCompanyBrandList(""));
 
 			//mav.addObject("planQuestionList", planService.getPlanQuestionList(param));
 
@@ -1434,5 +1441,19 @@ public class TsaMarketingController extends TsaBaseController {
 		planService.updatePlanWebInfo(param);
 		return super.ok(message.getMessage("SUCC_0002"));
 	}
+	
+	/**
+	 * 기획전 등록 화면 기획전 복사
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	@PostMapping("/planning/copy")
+	@ResponseBody
+	public Plan copyPlan(@RequestBody Plan param) {
+		System.out.println("컨트롤러 :" + param);
+		return planService.copyPlan(param);
+	}
 
 }

+ 16 - 5
src/main/java/com/style24/persistence/domain/Plan.java

@@ -69,20 +69,29 @@ public class Plan extends TscBaseDomain{
 		private String privacyPolicy;		//개인정보수집동의정책
 
 		// 기획전 소스
-		private long seq;					//일련번호
+		private Integer seq;					//일련번호
 		private String fsrc;				//프론트소스
 		private String fsrcPc;				//프론트소스(pc)	/ 화면용
 		private String fsrcMobile;			//프론트소스(모바일)	/ 화면용
 
 		// 기획전 상세
-		private long planDtlSq;				//기획전상세일련번호(SEQ_PLAN_DTL sequence)
-		private long copyPlanDtlSq;			//복사할 상세 일련번호
-		private long copyPlanSq;			//복사할 일련번호
+		private Integer planDtlSq;				//기획전상세일련번호(SEQ_PLAN_DTL sequence)
+		private Integer copyPlanDtlSq;			//복사할 상세 일련번호
+		private Integer copyPlanSq;			//복사할 일련번호
 		private String copyMode;			//복사 선택(CORNER:코너복사, PLAN:기획전복사)
 		private String cornerDispType;		//코너노출유형(공통코드G045) (2:2컷 , 3:3컷, 4:4컷)
 		private String cornerNm;			//코너 명
 		private String planDtlStat;			//기획전상세상태(공통코드G044)
-
+		
+		// 기획전 브랜드
+		private String brandCd;		//기획전브랜드코드
+		private String DispYn;      	//표시여부           
+		private String brandKnm;    // 브랜드명(한글)
+		private String brandEnm;    // 브랜드명(영문)
+		/* Multi CheckBox 항목*/
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] multiBrand;
+		
 		// 기획전 응모
 		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 		private String[] planQtitle;
@@ -146,4 +155,6 @@ public class Plan extends TscBaseDomain{
 		private String search; // 검색어
 		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 		private String[] conditionList;
+		
+		
 }

+ 130 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -385,6 +385,136 @@
 		ORDER  BY PLAN_SQ DESC
 	</select>
 
+	<!-- 기획전 복사 -->
+	<insert id="createPlanCopy" parameterType="Plan">
+		/* TsaMarketing.createPlanCopy */
+		<selectKey keyProperty="planSq" resultType="Integer" order="AFTER">
+			SELECT LAST_INSERT_ID()	/* 기획전 일련번호  */
+		</selectKey>
+
+		INSERT INTO TB_PLAN (
+		            PLAN_SQ
+		          , PLAN_NM
+		          , PLAN_GB
+		          <!-- , CUST_GB -->
+		          <!-- , CUST_GRADE -->
+		          <!-- , PLAN_SNM -->
+		          , TEMPLATE_TYPE
+		          , SITE_CD
+		          , FRONT_GB
+		          , DISP_STDT
+		          , DISP_EDDT
+		          , MAIN_PIMG
+		          , MAIN_MIMG
+		          , DTL_PIMG
+		          , DTL_MIMG
+		          , DTL_TITLE1        
+		          <!-- , CATE_CD -->
+		          <!-- , CATE_DISP_YN -->
+		          , REPLY_YN
+		          , REPLY_LOC
+		          , REPLY_IMG
+		          , REPLY_TITLE1
+		          , REPLY_TITLE2
+		          , POLL_SQ
+		          <!-- , PRIVACY_POLICY -->
+		          , DEV_URL
+		          , CORNER_NM_DISP_YN
+		          , GOODS_LIMIT_YN
+		          , GOODS_LIMIT_QTY
+		          , DEL_YN
+		          , OPEN_YN
+		          , DISP_ORD
+		          , READ_CNT
+		          , BADGE_NM
+		          , BADGE_FCOLOR
+		          , BADGE_BCOLOR
+		          , REG_NO
+		          , REG_DT
+		          , UPD_NO
+		          , UPD_DT
+		      ) SELECT #{planSq}
+		             , PLAN_NM
+		             , PLAN_GB
+		             <!-- , CUST_GB -->
+		             <!-- , CUST_GRADE -->
+		             <!-- , PLAN_SNM -->
+		             , TEMPLATE_TYPE
+		             , SITE_CD
+		             , FRONT_GB
+		             , DISP_STDT
+		             , DISP_EDDT
+		             , MAIN_PIMG
+		             , MAIN_MIMG
+		             , DTL_PIMG
+		             , DTL_MIMG
+		             , DTL_TITLE1
+		             <!-- , CATE_CD -->
+		             <!-- , CATE_DISP_YN -->
+		             , REPLY_YN
+		             , REPLY_LOC
+		             , REPLY_IMG
+		             , REPLY_TITLE1
+		             , REPLY_TITLE2
+		             , POLL_SQ
+		             <!-- , PRIVACY_POLICY -->
+		             , DEV_URL
+		             , CORNER_NM_DISP_YN
+		             , GOODS_LIMIT_YN
+		             , GOODS_LIMIT_QTY
+		             , 'N'
+		             , OPEN_YN
+		             , DISP_ORD
+		             , 0
+		             , BADGE_NM
+		             , BADGE_FCOLOR
+		             , BADGE_BCOLOR
+		             , #{regNo}
+		             , now()
+		             , #{updNo}
+		             , now()
+		        FROM   TB_PLAN
+		        WHERE  PLAN_SQ = #{copyPlanSq}
+	</insert>
+	
+	<insert id="createPlanBrand" parameterType="Plan">
+		INSERT INTO TB_PLAN_BRAND
+			(
+				BRAND_CD
+			  , PLAN_SQ
+			  , DISP_YN
+			  , REG_NO
+			  , REG_DT
+			  , UPD_NO
+			  , UPD_DT
+			)
+		VALUES
+		   (
+			  #{brandCd}
+			, #{planSq}
+			,'Y'
+			, #{regNo}
+			, CURRENT_TIMESTAMP
+			, #{updNo}
+			, CURRENT_TIMESTAMP
+		   )
+	</insert>
+	
+	<select id="getPlanBrandList" parameterType="Plan" resultType="Plan">
+		SELECT TP.PLAN_NM AS PLAN_NM
+		     , TP.PLAN_SQ AS PLAN_SQ
+		     , TB.BRAND_ENM AS BRAND_ENM
+		     , TB.BRAND_CD AS BRAND_CD
+		     , TB.BRAND_KNM AS BRAND_KNM
+		FROM TB_PLAN TP  LEFT OUTER JOIN TB_PLAN_BRAND TPB 
+							   ON TP.PLAN_SQ = TPB.PLAN_SQ 
+		            	 LEFT OUTER JOIN  TB_BRAND TB 
+		   					   ON TPB.BRAND_CD = TB.BRAND_CD 
+		WHERE 1=1
+		 	AND TP.PLAN_SQ = TPB.PLAN_SQ 
+		 	AND TP.PLAN_SQ = #{planSq}
+		    AND TP.DEL_YN = 'N'
+	</select>
 </mapper>
 
 

+ 286 - 91
src/main/webapp/WEB-INF/views/marketing/PlanWebDetailPopupForm.html

@@ -47,7 +47,6 @@
 						<th class="dashR">기획전탬플릿유형<i class="star"></i></th>
 						<td class="dashR" colspan="3">
 							<select name="templateType" th:field="*{templateType}">
-								<option value="">선택</option>
 								<option value="H">HTML</option>
 								<option value="T">TEXT</option>
 							</select>
@@ -72,7 +71,6 @@
 						<th class="dashR">프론트 구분<i class="star"></i></th>
 						<td class="dashR">
 							<select name="frontGb" id="frontGb" th:field="*{frontGb}">
-								<option value="">선택</option>
 								<option value="A">전체</option>
 								<option value="P">웹</option>
 								<option value="M">모바일</option>
@@ -309,6 +307,66 @@
 						</td>
 					</tr>
 				</table>
+									<div class="panelStyle" style="margin: unset;">
+						<!-- TITLE -->
+						<div class="panelTitle">
+							<h2>카테고리 / 브랜드 등록</h2>
+							<span class="panelControl"> <i
+								class="fa inner-fa-chevron-up"></i> <!-- 열림/닫힘 화살표 -->
+							</span>
+						</div>
+						<!-- //TITLE -->
+						<div class="inner-panelContent">
+							<div class="panelContent">
+								<table class="frmStyle">
+									<colgroup>
+										<col width="10%" />
+										<col width="90%" />
+									</colgroup>
+									<tr>
+										<th>카테고리/브랜드</th>
+										<td>
+											<!-- 수정시 프로모션명 입력 : before -->
+											<div class="padding10"
+												style="display: inline-block; width: 49%;">
+												<!--<span>공급업체 설정</span>-->
+												<div class="padding10 inner-tb-solid">
+													<span class="buttonSpan">
+														<button type="button"
+															class="btn btnRight btn-success btn-lg"
+															id="btnAddCompany">업체 추가</button>
+														<button type="button"
+															class="btn btnRight btn-success btn-lg"
+															id="btnDeleteCompany">선택삭제</button>
+													</span> <br />
+													<div id="gridFGPromotionCompanyList"
+														style="width: 100%; height: 200px;"
+														class="ag-theme-balham"></div>
+												</div>
+											</div>
+											<div class="padding10"
+												style="display: inline-block; width: 49%;">
+												<!--<span>브랜드 설정</span>-->
+												<div class="padding10 inner-tb-solid">
+													<span class="buttonSpan">
+														<button type="button"
+															class="btn btnRight btn-success btn-lg" id="btnAddBrand">브랜드
+															추가</button>
+														<button type="button"
+															class="btn btnRight btn-success btn-lg"
+															id="btnDeleteBrand">선택삭제</button>
+													</span> <br />
+													<div id="gridFGBrandList"
+														style="width: 100%; height: 200px;"
+														class="ag-theme-balham"></div>
+												</div>
+											</div>
+										</td>
+									</tr>
+								</table>
+							</div>
+						</div>
+					</div>
 			</div>
 			<div style='margin: 13px;'>
 			<ul class="panelBar">
@@ -332,8 +390,8 @@
 						<col/>
 					</colgroup>
 					<tr>
-						<th>기존 기획전</th>
-						<td>
+						<th class="dashR">기존 기획전</th>
+						<td class="dashR">
 							<select name="planSq" id="planSq">
 								<option value="">선택</option>
 								<option th:if="${planList}" th:each="oneData, status : ${planList}" th:value="${oneData.planSq}" th:text="|[${oneData.planSq}]  ${oneData.planNm}|"></option>
@@ -356,7 +414,6 @@
 						<th class="dashR">기획전구분<i class="star"></i></th>
 						<td class="dashR">
 							<select name="planGb" required="required" data-valid-name="기획전구분" onchange="fnChangePlanGb(this);">
-								<option value="">선택</option>
 								<option value="P">기획전</option>
 								<option value="E">이벤트</option>
 							</select>
@@ -364,7 +421,6 @@
 						<th class="dashR">기획전탬플릿유형<i class="star"></i></th>
 						<td class="dashR" colspan="3">
 							<select name="templateType" required="required" data-valid-name="기획전탬플릿유형">
-								<option value="">선택</option>
 								<option value="H">HTML</option>
 								<option value="T">TEXT</option>
 							</select>
@@ -389,7 +445,6 @@
 						<th class="dashR">프론트 구분<i class="star"></i></th>
 						<td class="dashR">
 							<select name="frontGb" id="frontGb" required="required" data-valid-name="프론트 구분">
-								<option value="">선택</option>
 								<option value="A">전체</option>
 								<option value="P">웹</option>
 								<option value="M">모바일</option>
@@ -578,14 +633,73 @@
 						</td>
 					</tr>
 				</table>
-			</div>
-				<div style='margin: 13px;'>
-					<ul class="panelBar">
-						<li class="right" th:if="${mode == 'N'}">
-							<button type="button" class="btn btn-info btn-lg" onclick="fnPlanSave('#planWebRegisterForm');">저장</button>
-						</li>
-					</ul>
+					<div class="panelStyle" style="margin: unset;">
+						<!-- TITLE -->
+						<div class="panelTitle">
+							<h2>카테고리 / 브랜드 등록</h2>
+							<span class="panelControl"> <i
+								class="fa inner-fa-chevron-up"></i> <!-- 열림/닫힘 화살표 -->
+							</span>
+						</div>
+						<!-- //TITLE -->
+						<div class="inner-panelContent">
+							<div class="panelContent">
+								<table class="frmStyle">
+									<colgroup>
+										<col width="10%" />
+										<col width="90%" />
+									</colgroup>
+									<tr>
+										<th>카테고리/브랜드</th>
+										<td>
+											<!-- 수정시 프로모션명 입력 : before -->
+											<div class="padding10"
+												style="display: inline-block; width: 49%;">
+												<!--<span>공급업체 설정</span>-->
+												<div class="padding10 inner-tb-solid">
+													<span class="buttonSpan">
+														<button type="button"
+															class="btn btnRight btn-success btn-lg"
+															id="btnAddCompany">업체 추가</button>
+														<button type="button"
+															class="btn btnRight btn-success btn-lg"
+															id="btnDeleteCompany">선택삭제</button>
+													</span> <br />
+													<div id="gridFGPromotionCompanyList"
+														style="width: 100%; height: 200px;"
+														class="ag-theme-balham"></div>
+												</div>
+											</div>
+											<div class="padding10"
+												style="display: inline-block; width: 49%;">
+												<!--<span>브랜드 설정</span>-->
+												<div class="padding10 inner-tb-solid">
+													<span class="buttonSpan">
+														<button type="button"
+															class="btn btnRight btn-success btn-lg" id="btnAddBrand">브랜드
+															추가</button>
+														<button type="button"
+															class="btn btnRight btn-success btn-lg"
+															id="btnDeleteBrand">선택삭제</button>
+													</span> <br />
+													<!-- 브랜드 선택 팝업(단수 선택 팝업... 복수를 새로 만들어야하는지 ? 아니면 변수처리해야하는지 ? -->
+													<div id="gridFGBrandList"
+														style="width: 100%; height: 200px;"
+														class="ag-theme-balham"></div>
+												</div>
+											</div>
+										</td>
+									</tr>
+								</table>
+							</div>
+						</div>
+					</div>
 				</div>
+				<ul class="panelBar">
+					<li class="right" th:if="${mode == 'N'}">
+						<button type="button" class="btn btn-info btn-lg" onclick="fnPlanSave('#planWebRegisterForm');">저장</button>
+					</li>
+				</ul>
 			</form>
 		</div>
 	</div>
@@ -596,81 +710,13 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 
-	// 스마트에디터
-	//var seOptions = gagaSe.getEditorOptions();
 	var mode = [[${mode}]];
 	var planInfo = [[${planInfo}]];
 	var fsrcPc = [[${fsrcPc}]];
 	var fsrcMobile = [[${fsrcMobile}]];
+	var planBrandList = [[${planBrandList}]];
 	var snOptions;
 
-	$(document).ready(function() {
-		snOptions = gagaSn.getToolbarOptions('media');
-		gagaSn.createSummernote(snOptions, '#fsrcPcDetail');
-		gagaSn.createSummernote(snOptions, '#fsrcMobileDetail');
-		
-		 if (mode =='U') {
-			/* $('#planWebDetailForm input[name=badgeFcolor]').spectrum({
-				preferredFormat: "hex",
-				showInput: true,
-				allowEmpty: true
-			});
-
-			$('#planWebDetailForm input[name=badgeBcolor]').spectrum({
-				preferredFormat: "hex",
-				showInput: true,
-				allowEmpty: true
-			}); */
-
-			if (planInfo.goodsLimitYn == 'N') {
-				$('#planWebDetailForm input[name=goodsLimitQty]').hide();
-			} else {
-				$('#planWebDetailForm input[name=goodsLimitQty]').show();
-			}
-
-			// 스마트에디터
-			//gagaSe.createSmartEditor(seOptions, 'fsrcPcDetail');
-			//gagaSe.createSmartEditor(seOptions, 'fsrcMobileDetail');
-
-			// 썸머노트 값 설정
-			$('#fsrcPcDetail').summernote('code', fsrcPc.fsrc);
-			$('#fsrcMobileDetail').summernote('code', fsrcMobile.fsrc);
-			//gagaSn.setContents('#fsrcPcDetail', fsrcPc.fsrc);
-			//gagaSn.setContents('#fsrcMobileDetail', fsrcMobile.fsrc);
-
-			if($("#planGb").val()!='E'){
-				$("#questionEventInsert").hide();
-				$("#questionEventUpdate").hide();
-			}else{
-				gagaSn.createSummernote(snOptions, '#privacyPolicyRegister');
-			}
-
-		} else {
-			/* $('#planWebRegisterForm input[name=badgeFcolor]').spectrum({
-				preferredFormat: "hex",
-				showInput: true,
-				allowEmpty: true
-			});
-
-			$('#planWebRegisterForm input[name=badgeBcolor]').spectrum({
-				preferredFormat: "hex",
-				showInput: true,
-				allowEmpty: true
-			}); */
-
-			$("#viewStartDtNew").val(_today);
-			$("#viewEndDtNew").val(_today);
-
-			// 스마트에디터
-			//gagaSe.createSmartEditor(seOptions, 'fsrcPcRegister');
-			//gagaSe.createSmartEditor(seOptions, 'fsrcMobileRegister');
-
-			$("#questionEventInsert").hide();
-			$("#questionEventUpdate").hide();
-		} 
-		$('#frontGb').trigger('change');
-	});
-
 	// 카테고리 전시 여부
 	var fnCataCheck = function(is, formId) {
 		if (is.checked) {
@@ -694,6 +740,7 @@
 		}
 	}
 
+	// 기획전 복사
 	var fnPlanCopyPopup = function() {
 		var planSq = $('#planWebRegisterForm select[name=planSq]').val();
 
@@ -706,7 +753,7 @@
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function() {
-				var actionUrl = '/marketing/plan/copy';
+				var actionUrl = '/marketing/planning/copy';
 				var data = {copyPlanSq : planSq};
 				var jsonData = JSON.stringify(data);
 
@@ -715,9 +762,10 @@
 		});
 	}
 
+	// 기획전 복사 callback
 	var fnCopyCallback = function(result) {
-		fnPlanWebDetailClose();
-		//fnSearch();
+		uifnPopupClose('planWebRegisterFormDiv');
+		fnPlanListSearch();
 
 		var actionUrl = "/marketing/planning/webdetail/form?mode=U&planSq=" + result.planSq;
 		cfnOpenModalPopup(actionUrl,'popupPlanWebDetail');
@@ -776,12 +824,10 @@
 		var privacyPolicy = '';
 		var frontGb = $('#frontGb').val();
 		if (mode =='U') {
-			//gagaSn.getContents('fsrcPcDetail');
-			//gagaSn.getContents('fsrcMobileDetail');
 			//if($("#planGb").val()=='E'){
 			//	privacyPolicy = gagaSn.getContents('privacyPolicyDetail');
 			//}
-
+			
 			// 이미지 처리
 			if ((!$('input[name=orgMainPimgDelYn]').is(':checked') ? true : false) &&
 				(gagajf.isNull($(formId + ' input[name=mainPimg]').val()) == true)   ) {
@@ -820,18 +866,57 @@
 			return;
 		}
 
+		//var jsonData = JSON.stringify($("#planWebRegisterForm").serializeObject());
+		
+		let allBrandData = gagaAgGrid.getAllRowData(gridOptionsFGBrandList);
+		var multiBrand = [];
+		$.each(allBrandData, function(idx, item) {
+			multiBrand.push(item.brandCd);
+		});
+		
+		let data = {
+				 multiBrand : multiBrand
+				,brandList : allBrandData
+			    ,mode : $('#planWebRegisterForm input[name=mode]').val()
+			    ,planSq : $('#planWebRegisterForm input[name=planSq]').val()
+				,planGb	: $('#planWebRegisterForm select[name=planGb]').val()
+				,templateType :	$('#planWebRegisterForm select[name=templateType]').val()
+				,frontGb : $('#planWebRegisterForm select[name=frontGb]').val()
+				,planNm : $('#planWebRegisterForm input[name=planNm]').val()
+				,startSearchDate : $('#planWebRegisterForm input[name=startSearchDate]').val()
+				,startSearchHour : $('#planWebRegisterForm input[name=startSearchHour]').val()
+				,startSearchMin : $('#planWebRegisterForm input[name=startSearchMin]').val()
+				,endSearchDate : $('#planWebRegisterForm input[name=endSearchDate]').val()
+				,endSearchHour : $('#planWebRegisterForm input[name=endSearchHour]').val()
+				,endSearchMin : $('#planWebRegisterForm input[name=endSearchMin]').val()
+				,dispStdt : $('#planWebRegisterForm input[name=dispStdt]').val()
+				,dispEddt : $('#planWebRegisterForm input[name=dispEddt]').val()
+				,dtlTitle1 : $('#planWebRegisterForm input[name=dtlTitle1]').val()
+				,cornerNmDispYn :  $('#planWebRegisterForm select[name=cornerNmDispYn]').val()
+				,openYn :  $('#planWebRegisterForm select[name=openYn]').val()
+				,siteCd :$('#planWebRegisterForm select[name=siteCd]').val()
+				,dispOrd : $('#planWebRegisterForm input[name=dispOrd]').val()
+				,replyYn : $('#planWebRegisterForm select[name=replyYn]').val()
+				,mainPimg :$('#planWebRegisterForm input[name=mainPimg]').val()
+				,mainMimg : $('#planWebRegisterForm input[name=mainMimg]').val()
+				,fsrcPc :  $('#planWebRegisterForm input[name=fsrcPc]').val()
+				,fsrcMobile : $('#planWebRegisterForm input[name=fsrcMobile]').val()
+			}	
+		
+		// 기획전 등록
 		if (formId == '#planWebRegisterForm') {
 			mcxDialog.confirm('등록 하시겠습니까?', {
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					gagajf.ajaxFormSubmit("/marketing/planning/webdetail/create", "#planWebRegisterForm", fnPlanWebDetailCallBack); 
+					var jsonData =  JSON.stringify(data);
+					gagajf.ajaxJsonSubmit("/marketing/planning/webdetail/create", jsonData, fnPlanWebDetailCallBack); 
 					uifnPopupClose('planWebRegisterFormDiv');
 					fnPlanListSearch();
 					//fnPlanWebDetailClose();
 				}
 			});
-		} else {
+		} else { // 기획전 수정
 			mcxDialog.confirm('저장 하시겠습니까?', {
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
@@ -923,6 +1008,116 @@
 		fnPlanListSearch();
 		
 	}
+	
+	// 브랜드 리스트 설정
+	var columnBrandList = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "브랜드ID", field: "brandCd", width: 110, cellClass: 'text-center'},
+		{headerName: "브랜드명", field: "brandEnm", width: 120, cellClass: 'text-center'},
+		{headerName: "", field: "brandKnm", width: 150, cellClass: 'text-center'},
+		/* {headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "삭제여부", field: "delYn", width: 150, cellClass: 'text-center', hide: true}  */
+	];
+	
+	// 브랜드 그리드 설정
+	var gridOptionsFGBrandList = gagaAgGrid.getGridOptions(columnBrandList);
+	gridOptionsFGBrandList.rowSelection = "multiple";
+	gridOptionsFGBrandList.suppressRowClickSelection = true;
+	
+	// 브랜드 추가 버튼 클릭시 (복수 브랜드때 수정 필요)
+	$('#btnAddBrand').on('click', function() {
+		cfnOpenBrandListPopup("fnSetPopupBrandInfo", "M");
+	});
+	
+	 // 브랜드 설정 선택삭제 버튼 클릭시
+    $('#btnDeleteBrand').on('click', function() {
+        gridOptionsFGBrandList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGBrandList)});
+    });
+	
+	// 브랜드 설정 / 브랜드 추가 콜백함수 (단수로 가져오므로 복수일 경우에 수정 확인 필요)
+	var fnSetPopupBrandInfo = function(result) {
+		for(let i = 0 ; i < result.length ; i++) {
+			let addChk = true, gridListValue = gagaAgGrid.getAllRowData(gridOptionsFGBrandList);		// 받아온 모든 데이터
+
+			// 받아온 data for
+			for(let j = 0 ; j < gridListValue.length ; j++) {
+				if(gridListValue[j].brandCd == result[i].brandCd) {	addChk = false;	}					// 중복체크
+			}
+
+			// 중복되지 않은 데이터 리스트에 추가
+			if(addChk) {
+				gagaAgGrid.addRowData(gridOptionsFGBrandList, {"brandCd" : result[i].brandCd, "brandEnm" : result[i].brandEnm, "brandKnm" : result[i].brandKnm});
+			}
+		}
+	};
+	
+
+	$(document).ready(function() {
+		
+		snOptions = gagaSn.getToolbarOptions('media');
+		
+		// 썸머노트 그리기
+		gagaSn.createSummernote(snOptions, '#fsrcPcDetail');
+		gagaSn.createSummernote(snOptions, '#fsrcMobileDetail');
+		
+		// 그리드 그리기
+		gagaAgGrid.createGrid("gridFGBrandList", gridOptionsFGBrandList);
+		
+		 if (mode =='U') {
+			/* $('#planWebDetailForm input[name=badgeFcolor]').spectrum({
+				preferredFormat: "hex",
+				showInput: true,
+				allowEmpty: true
+			});
+
+			$('#planWebDetailForm input[name=badgeBcolor]').spectrum({
+				preferredFormat: "hex",
+				showInput: true,
+				allowEmpty: true
+			}); */
+			
+			gridOptionsFGBrandList.api.setRowData(planBrandList);
+
+			if (planInfo.goodsLimitYn == 'N') {
+				$('#planWebDetailForm input[name=goodsLimitQty]').hide();
+			} else {
+				$('#planWebDetailForm input[name=goodsLimitQty]').show();
+			}
+
+			// 썸머노트 값 설정
+			$('#fsrcPcDetail').summernote('code', fsrcPc.fsrc);
+			$('#fsrcMobileDetail').summernote('code', fsrcMobile.fsrc);
+
+			if($("#planGb").val()!='E'){
+				$("#questionEventInsert").hide();
+				$("#questionEventUpdate").hide();
+			}else{
+				gagaSn.createSummernote(snOptions, '#privacyPolicyRegister');
+			}
+
+		} else {
+			/* $('#planWebRegisterForm input[name=badgeFcolor]').spectrum({
+				preferredFormat: "hex",
+				showInput: true,
+				allowEmpty: true
+			});
+
+			$('#planWebRegisterForm input[name=badgeBcolor]').spectrum({
+				preferredFormat: "hex",
+				showInput: true,
+				allowEmpty: true
+			}); */
+
+			$("#viewStartDtNew").val(_today);
+			$("#viewEndDtNew").val(_today);
+
+			$("#questionEventInsert").hide();
+			$("#questionEventUpdate").hide();
+		} 
+		$('#frontGb').trigger('change');
+	});
+
 /*]]>*/
 </script>