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

Merge branch 'sowon' into develop

sowon4187 5 лет назад
Родитель
Сommit
be425f8ee8

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

@@ -139,6 +139,34 @@ public interface TsaPlanDao {
 	 */
 	void deletePlanBrand(Plan param);
 	
+	/**
+	 * 기획전 제휴채널 등록
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	void createPlanAfChannel(Plan param);
+	
+	/**
+	 * 기획전 제휴채널 목록
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	Collection<Plan> getPlanAfChannelList(Plan param);
+	
+	/**
+	 * 기획전 제휴채널 삭제
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	void deletePlanAfChannel(Plan param);
+	
 	/**
 	 * 기획전 브랜드 목록
 	 *
@@ -290,6 +318,15 @@ public interface TsaPlanDao {
 	 */
 	void createPlanCustGb(Plan param);
 	
+	/**
+	 * 기획전 회원구분 삭제
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	void deletePlanCustGb(Plan param);
+	
 	/**
 	 * 기획전 회원등급 등록
 	 *
@@ -299,6 +336,15 @@ public interface TsaPlanDao {
 	 */
 	void createPlanCustGrade(Plan param);
 	
+	/**
+	 * 기획전 회원등급 삭제
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	void deletePlanCustGrade(Plan param);
+	
 	/**
 	 * 기획전 회원구분 조회
 	 *

+ 29 - 0
src/main/java/com/style24/admin/biz/dao/TsaSocialDao.java

@@ -46,4 +46,33 @@ public interface TsaSocialDao {
 	 * @since 2021. 3. 3
 	 */
 	int getSocialCount(Social params);
+	
+	/**
+	 * 소셜 상품 저장
+	 *
+	 * @param 소셜 상품 정보
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	void saveSocialGoods(Social params);
+	
+	/**
+	 * 쇼셜 상품 목록
+	 *
+	 * @return 쇼셜쇼핑 상품 목록
+	 * @author sowon	
+	 * @since 2021. 3. 4
+	 */
+	Collection<Social> getSocialGoodsList(Social params);
+	
+	/**
+	 * 소셜 상품 삭제
+	 *
+	 * @param 소셜 상품 정보
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	void deleteSocialGoods(Social params);
+
+
 }

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

@@ -88,6 +88,15 @@ public class TsaPlanService {
 			planDao.createPlanCate(plan);
 		}
 		
+		String[] channel = param.getMultiChannel();
+		// 기획전 제휴채널 insert
+		for (int j = 0; j < channel.length; j++) {
+			plan.setAfChannel(channel[j]);
+			plan.setPlanSq(param.getPlanSq());
+			plan.setRegNo(TsaSession.getInfo().getUserNo());
+			planDao.createPlanAfChannel(plan);
+		}
+		
 		// 기획전 회원구분 insert
 		String[] custGb = param.getUsableCustGbArr();
 		for (int j = 0; j < custGb.length; j++) {
@@ -297,7 +306,7 @@ public class TsaPlanService {
 			planDao.createPlanCate(plan);
 		}
 		
-		// 기존 기획전 카테고리 삭제
+		// 기존 기획전 브랜드 삭제
 		for (int i = 0; i < param.getMultiBrand().length; i++) {
 			planDao.deletePlanBrand(param);;
 		}
@@ -313,6 +322,50 @@ public class TsaPlanService {
 			planDao.createPlanBrand(plan);
 		}
 		
+		// 기존 기획전 제휴채널 삭제
+		for (int i = 0; i < param.getMultiChannel().length; i++) {
+			planDao.deletePlanAfChannel(param);
+		}
+		
+		
+		String[] channel = param.getMultiChannel();
+		// 기획전 제휴채널 insert
+		for (int j = 0; j < channel.length; j++) {
+			plan.setAfChannel(channel[j]);
+			plan.setPlanSq(param.getPlanSq());
+			plan.setRegNo(TsaSession.getInfo().getUserNo());
+			planDao.createPlanAfChannel(plan);
+		}
+		
+		//기존 회원구분 삭제
+		for (int i = 0; i < param.getUsableCustGbArr().length; i++) {
+			planDao.deletePlanCustGb(param);
+		}
+		
+		
+		// 기획전 회원구분 insert
+		String[] custGb = param.getUsableCustGbArr();
+		for (int j = 0; j < custGb.length; j++) {
+			plan.setCustGb(custGb[j]);
+			plan.setPlanSq(param.getPlanSq());
+			plan.setRegNo(TsaSession.getInfo().getUserNo());
+			planDao.createPlanCustGb(plan);
+		}
+		
+		//기존 회원등급 삭제
+		for (int i = 0; i < param.getUsableCustGradeArr().length; i++) {
+			planDao.deletePlanCustGrade(param);
+		}
+		
+		// 기획전 회원등급 insert
+		String[] custGrade = param.getUsableCustGradeArr();
+		for (int j = 0; j < custGrade.length; j++) {
+			plan.setCustGrade(custGrade[j]);
+			plan.setPlanSq(param.getPlanSq());
+			plan.setRegNo(TsaSession.getInfo().getUserNo());
+			planDao.createPlanCustGrade(plan);
+		}
+		
 		// 최종업데이트 
 		planDao.updatePlanInfo(param);
 
@@ -417,6 +470,19 @@ public class TsaPlanService {
 		return planDao.getPlanCateList(param);
 	}
 	
+
+	/**
+	 * 기획전 제휴채널 목록
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	public Collection<Plan> getPlanAfChannelList(Plan param){
+		return planDao.getPlanAfChannelList(param);
+	}
+	
 	/**
 	 * 기획전 코너 목록 조회
 	 *

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

@@ -8,7 +8,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.admin.biz.dao.TsaSocialDao;
 import com.style24.admin.support.security.session.TsaSession;
-import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Social;
 
 import lombok.extern.slf4j.Slf4j;
@@ -64,5 +63,60 @@ public class TsaSocialService {
 	public int getSocialCount(Social param) {
 		return socialDao.getSocialCount(param);
 	}
+	
+	/**
+	 * 소셜 상품 저장
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	@Transactional("shopTxnManager")
+	public void saveSocialGoods(Collection<Social> paramList) {
+		Integer userNo = TsaSession.getInfo().getUserNo();
 
+		for (Social social : paramList) {
+			social.setRegNo(userNo);
+			social.setUpdNo(userNo);
+			social.setDelYn("N");
+
+			socialDao.saveSocialGoods(social);
+		}
+	}
+	
+	
+	/**
+	 * 쇼셜 상품 목록
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	public Collection<Social> getSocialGoodsList(Social params) {
+		return socialDao.getSocialGoodsList(params);
+	}
+
+	/**
+	 * 소셜 상품 삭제
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteSocialGoods(Collection<Social> paramList) {
+		Integer userNo = TsaSession.getInfo().getUserNo();
+
+		Social socialInfo = null;
+		for (Social social : paramList) {
+			socialInfo = new Social();
+			socialInfo.setSocialSq(social.getSocialSq());
+			socialInfo.setScgoodsSq(social.getScgoodsSq());
+			socialInfo.setGoodsCd(social.getGoodsCd());
+			socialInfo.setUpdNo(userNo);
+			socialInfo.setDelYn(social.getDelYn());
+
+			socialDao.deleteSocialGoods(socialInfo);
+		}
+	}
 }

+ 19 - 0
src/main/java/com/style24/admin/biz/web/TsaBusinessController.java

@@ -777,5 +777,24 @@ public class TsaBusinessController extends TsaBaseController {
 		businessService.saveBrandGroup(brandGroup);
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
+	
+	
+	/**
+	 * 제휴채널 조회팝업
+	 * @param afChannel
+	 * @return
+	 * @author sowon
+	 * @since 2021. 03. 4
+	 */
+	@GetMapping("/channel/popup/form")
+	public ModelAndView getAfChannelList(Aflink aflink) {
+		ModelAndView mav = new ModelAndView();
+		// 제휴채널 콤보박스 목록
+		mav.addObject("afChannelList", rendererService.getCommonCodeList("G053"));
+		mav.addObject("params", aflink);
+		mav.setViewName("business/AfChannelPopupForm");
+
+		return mav;
+	}
 		
 }

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

@@ -44,6 +44,7 @@ import com.style24.persistence.TscPageRequest;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.gagaframework.excel.GagaExcelUtil;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
@@ -1659,6 +1660,9 @@ public class TsaMarketingController extends TsaBaseController {
 			// 등록했던 카테고리
 			mav.addObject("planCateList", planService.getPlanCateList(param));
 			
+			// 등록했던 제휴채널
+			mav.addObject("afChannelList", planService.getPlanAfChannelList(param));
+			
 			mav.addObject("brandList", rendererService.getSupplyCompanyBrandList(""));
 			
 			// 사용가능고객구분 목록
@@ -1753,7 +1757,6 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/planning/list/detail/popup")
 	@ResponseBody
 	public Collection<Plan> getPlanListPop(@RequestBody Plan param) {
-		//param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		Collection<Plan> planList = planService.getPlanList(param);
 		return planList;
 	}
@@ -2340,7 +2343,51 @@ public class TsaMarketingController extends TsaBaseController {
 		return result;
 	}
 	
+	/**
+	 * 소셜 상품 저장
+	 *
+	 * @param 소셜 상품 정보
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	@PostMapping("/social/goods/save")
+	@ResponseBody
+	public GagaResponse saveSocialGoods(@RequestBody Collection<Social> paramList) {
+		socialService.saveSocialGoods(paramList);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+	
+	/**
+	 * 소셜 상품 목록
+	 *
+	 * @param 소셜 상품 정보
+	 * @return 소셜 상품 목록
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	@PostMapping("/social/goods/list")
+	@ResponseBody
+	public Collection<Social> getSocialGoodsList(@RequestBody Social params) {
+		Collection<Social> socialList = socialService.getSocialGoodsList(params);
+		return socialList;
+	}
 
+	/**
+	 * 소셜 상품 삭제
+	 *
+	 * @param 소셜 상품 정보
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 4
+	 */
+	@PostMapping("/social/goods/delete")
+	@ResponseBody
+	public GagaResponse deleteSocialGoods(@RequestBody Collection<Social> paramList) {
+		socialService.deleteSocialGoods(paramList);
+		return super.ok(message.getMessage("SUCC_0003"));
+	}
+	
 
 
 }

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

@@ -20,5 +20,8 @@ public class Aflink extends TscBaseDomain {
 	private float feeRate;		// 수수료율(마진율)
 	private int dispOrd;		// 표시순서
 	private String useYn;		// 사용여부
+	
+	// 검색조건
+	private String callBackFun;		// 콜백함수
 
 }

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

@@ -151,6 +151,9 @@ public class Plan extends TscBaseDomain{
 		private String pageYn;				// 페이징 사용 여부
 		private String changeGb;			// 순서변경 updown 구분
 		private int stockQtySum;			// 재고
+		private String afLinkCd;			// 제휴채널
+		private String afChannel;			// 제휴채널 공통코드
+		private String afLinkNm;			// 제휴채널 명
 
 		// 기획전 팝업
 		private String callBackFun;			// 콜백함수명
@@ -182,6 +185,9 @@ public class Plan extends TscBaseDomain{
 		private String[] multiPlanCoupon;		//쿠폰목록
 		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 		private String[] multiPlanFile;			//이미지목록
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] multiChannel;			//제휴채널목록
+		
 
 		
 		// 템플릿 저장하기 위한 임시 변수

+ 12 - 12
src/main/java/com/style24/persistence/domain/Social.java

@@ -37,23 +37,23 @@ public class Social extends TscBaseDomain{
 		// SOCIAL GOODS
 		private Integer scgoodsSq;		// 소셜상품일련번호(SEQ_SCGOODS sequence)
 		private String goodsCd;			// 상품코드(상품)
-		private String currBprice;		// 변경전현재판매가
-		private String currAprice;		// 변경후현재판매가
-		private String dcBrate;			// 변경전할인율
-		private String dcArate;			// 변경후할인율
-		private String pntBprate;		// 변경전포인트적립율(PC)
-		private String pntAprate;		// 변경후포인트적립율(PC)
-		private String pntBmrate;		// 변경전포인트적립율(모바일)
-		private String pntAmrate;		// 변경후포인트적립율(모바일)
+		private int currBprice;		// 변경전현재판매가
+		private int currAprice;		// 변경후현재판매가
+		private float dcBrate;			// 변경전할인율
+		private float dcArate;			// 변경후할인율
+		private float pntBprate;		// 변경전포인트적립율(PC)
+		private float pntAprate;		// 변경후포인트적립율(PC)
+		private float pntBmrate;		// 변경전포인트적립율(모바일)
+		private float pntAmrate;		// 변경후포인트적립율(모바일)
 		private String erpPriceLinkYn;	// erp가격연계여부(자사품만 사용, y연계)
 		private String dispOrd;			// 표시순서
 		private String delYn;			// 삭제여부(Y:삭제)
 
 		// GOODS
-		private String currPrice;		// 현재 판매가
-		private String dcRate;			// 할인율
-		private String pntPrate;		// PC 포인트 적립율
-		private String pntMrate;		// MOBILE 포인트 적립율
+		private int currPrice;		// 현재 판매가
+		private float dcRate;			// 할인율
+		private float pntPrate;		// PC 포인트 적립율
+		private float pntMrate;		// MOBILE 포인트 적립율
 
 		
 

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

@@ -446,6 +446,31 @@
 		WHERE PLAN_SQ = ${planSq}
 	</delete>
 	
+	<insert id="createPlanAfChannel" parameterType="Plan">
+		/* TsaPlan.createPlanAfChannel */
+		INSERT INTO TB_PLAN_AF_CHANNEL
+			(
+				PLAN_SQ
+			  , AF_CHANNEL
+			  , REG_NO
+			  , REG_DT
+			)
+		VALUES
+		   (
+			    #{planSq}
+			  , #{afChannel}
+			  , #{regNo}
+			  , CURRENT_TIMESTAMP
+		   )
+	</insert>
+	
+	<delete id="deletePlanAfChannel" parameterType="Plan">
+		/* TsaPlan.deletePlanAfChannel */
+		DELETE 
+		FROM TB_PLAN_AF_CHANNEL
+		WHERE PLAN_SQ = ${planSq}
+	</delete>
+	
 	<select id="getPlanBrandList" parameterType="Plan" resultType="Plan">
 		/* TsaPlan.getPlanBrandList */
 		SELECT TP.PLAN_NM AS PLAN_NM
@@ -463,6 +488,18 @@
 		    AND TP.DEL_YN = 'N'
 	</select>
 	
+	<select id="getPlanAfChannelList" parameterType="Plan" resultType="Plan">
+			SELECT A.PLAN_SQ 
+			      ,A.AF_CHANNEL AS afLinkCd
+			      ,B.AF_LINK_NM  
+			      ,A.REG_DT 
+			      ,B.FEE_RATE 
+			      ,B.DISP_ORD 
+			      ,B.AF_CHANNEL 
+			FROM TB_PLAN_AF_CHANNEL A LEFT JOIN tb_af_link B ON A.AF_CHANNEL = B.AF_LINK_CD 
+			WHERE PLAN_SQ = #{planSq}
+	</select>
+	
 	<insert id="createPlanBrandCopy" parameterType="Plan">
 		/* TsaPlan.createPlanBrandCopy */
 			INSERT INTO
@@ -872,6 +909,13 @@
 					  )
 	</insert>
 	
+	<delete id="deletePlanCustGb" parameterType="Plan">
+		/* TsaPlan.deletePlanCustGb */
+		DELETE 
+		FROM TB_PLAN_CUST_DIVISION
+		WHERE PLAN_SQ= #{planSq}
+	</delete>
+	
 	<insert id="createPlanCustGrade" parameterType="Plan">
 		/* TsaPlan.createPlanCustGrade */
 		INSERT INTO TB_PLAN_CUST_GRADE
@@ -889,6 +933,13 @@
 				 )
 	</insert>
 	
+	<delete id="deletePlanCustGrade" parameterType="Plan">
+		/* TsaPlan.deletePlanCustGrade */
+		DELETE 
+		FROM TB_PLAN_CUST_GRADE
+		WHERE PLAN_SQ= #{planSq}
+	</delete>
+	
 	<select id="getPlanCustGbList" parameterType="Plan" resultType="Plan">
 		/* TsaPlan.createPlanCustGrade */
 		SELECT CUST_GB 

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

@@ -89,6 +89,106 @@
 		FROM TB_SOCIAL	
 	</select>
 	
+	<!-- 소셜 상품 저장 -->
+	<insert id="saveSocialGoods" parameterType="Social">
+		/* TsaSocial.saveSocialGoods */
+		INSERT INTO TB_SOCIAL_GOODS
+				(
+					SOCIAL_SQ
+				  , GOODS_CD
+				  , CURR_BPRICE
+				  , CURR_APRICE
+				  , DC_BRATE
+				  , DC_ARATE
+				  , PNT_BPRATE
+				  , PNT_APRATE
+				  , PNT_BMRATE
+				  , PNT_AMRATE
+				  , ERP_PRICE_LINK_YN
+				  , DISP_ORD
+				  , DEL_YN
+				  , REG_NO
+				  , REG_DT
+				  , UPD_NO
+				  , UPD_DT
+				)
+			VALUES
+				(
+				   #{socialSq}
+				 , #{goodsCd}
+				 , #{currBprice}
+				 , #{currAprice}
+				 , #{dcBrate}
+				 , #{dcArate}
+				 , #{pntBprate}
+				 , #{pntAprate}
+				 , #{pntBmrate}
+				 , #{pntAmrate}
+				 , 'N'
+				 , #{dispOrd}
+				 , #{delYn}
+				 , #{regNo}
+				 , NOW()
+				 , #{updNo}
+				 , NOW()
+				 )
+			ON
+			    DUPLICATE KEY 
+			UPDATE 
+			     CURR_BPRICE=#{currBprice}
+			   , CURR_APRICE=#{currAprice}
+			   , DC_BRATE=#{dcBrate}
+			   , DC_ARATE=#{dcArate}
+			   , PNT_BPRATE=#{pntBprate} 
+			   , PNT_APRATE=#{pntAprate} 
+			   , PNT_BMRATE=#{pntBmrate} 
+			   , PNT_AMRATE=#{pntAmrate} 
+			   , DISP_ORD=#{dispOrd}
+			   , DEL_YN=#{delYn}
+			   , UPD_NO=#{updNo}
+			   , UPD_DT= NOW()
+					
+	</insert>
+	
+	<!-- 쇼셜 상품 목록 -->
+	<select id="getSocialGoodsList" parameterType="Social" resultType="Social">
+		/* TsaSocial.getSocialGoodsList */
+		SELECT SCGOODS_SQ    
+		     , SOCIAL_SQ     
+		     , GOODS_CD      
+		     , CURR_BPRICE   
+		     , CURR_APRICE   
+		     , DC_BRATE      
+		     , DC_ARATE      
+		     , PNT_BPRATE    
+		     , PNT_APRATE    
+		     , PNT_BMRATE    
+		     , PNT_AMRATE    
+		     , DISP_ORD      
+		     , DEL_YN        
+		FROM   TB_SOCIAL_GOODS
+		WHERE  SOCIAL_SQ = #{socialSq}
+		<if test="goodsCd != null and goodsCd != ''">
+		AND    GOODS_CD = #{goodsCd}
+		</if>
+		AND    DEL_YN = 'N'
+		ORDER  BY DISP_ORD
+	</select>
+	
+	<!-- 소셜 상품 삭제 -->
+	<update id="deleteSocialGoods" parameterType="Social">
+		/* TsaSocial.deleteSocialGoods */
+		UPDATE TB_SOCIAL_GOODS
+		SET    DEL_YN = #{delYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = now()
+		WHERE  SOCIAL_SQ = #{socialSq}
+		AND    SCGOODS_SQ = #{scgoodsSq}
+		AND    GOODS_CD = #{goodsCd}
+	</update>
+	
+	
+	
 	<sql id="getPlanListCondition_sql">
 		<if test ="siteCd != null and siteCd !=''">
 		AND    SITE_CD = #{siteCd}
@@ -105,11 +205,9 @@
 		<if test="frontGb != null and frontGb != ''">
 		AND    FRONT_GB = #{frontGb}
 		</if>
-		<if test="socialStdt != null and socialStdt != ''">
-		AND    DISP_EDDT <![CDATA[>=]]> DATE_FORMAT(#{socialStdt}, '%Y-%m-%d %H:%i:%S')
-		</if>
-		<if test="socialEddt != null and socialEddt != ''">
-		AND    DISP_STDT <![CDATA[<=]]> DATE_FORMAT(#{socialEddt}, '%Y-%m-%d %H:%i:%S')
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+        AND    SOCIAL_STDT <![CDATA[ >= ]]> DATE_FORMAT(#{stDate},'%Y-%m-%d %H:%i:%S')
+        AND    SOCIAL_STDT <![CDATA[ <= ]]> DATE_FORMAT(#{edDate},'%Y-%m-%d %H:%i:%S')
 		</if>
 	</sql>
 	

+ 141 - 0
src/main/webapp/WEB-INF/views/business/AfChannelPopupForm.html

@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : AfChannelPopupForm.html
+ * @desc    : 제휴채널조회 팝업 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.04   sowon       최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="350" id="popupAfChannel">
+	<div class="panelStyle">
+		<!-- TITLE -->
+		<div class="panelTitle">
+			<strong>제휴채널 조회</strong>
+			<button type="button" class="close" onclick="uifnPopupClose('popupAfChannel');"><em class="fa fa-times"></em></button>
+		</div>
+		<!-- //TITLE -->
+		
+		<!-- 검색 조건 -->
+		<div class="panelContent" >
+				<form id="searchForm" name="searchForm" action="#" th:action="@{'/business/aflink/list'}" onsubmit="$('#btnAfSearch').trigger('click'); return false;">
+					<table class="frmStyle" aria-describedby="검색조건">
+						<colgroup>
+							<col style="width:10%;"/>
+							<col/>
+						</colgroup>
+						<tr>
+							<th>상위제휴채널</th>
+							<td>
+								<select name="afChannel">
+									<option value="">[전체]</option>
+									<option th:if="${afChannelList}" th:each="oneData, status : ${afChannelList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+								</select>
+							</td>
+						</tr>
+					</table>
+					
+					<ul class="panelBar">
+						<li class="center">
+							<button type="button" class="btn btn-base btn-lg" id="btnAfSearch">조회</button>
+							<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
+						</li>
+					</ul>
+				</form>
+		<!-- //검색 조건 -->
+		
+		<!-- 리스트 영역 -->
+			<div id="gridAfList" style="width: 100%; height: 570px;" class="ag-theme-balham"></div>
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-info btn-lg" id="btnConfirmAfChannel">확인</button>
+				</li>
+			</ul>
+
+		</div>
+	</div>
+</div>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let afChannelList = gagajf.convertToArray([[${afChannelList}]]);
+	let useYnList = { "Y":"Yes", "N":"No" };
+	
+	let columnDefs = [
+		{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "제휴채널코드", field: "afLinkCd", width: 100, cellClass: 'text-center'},
+		{
+			headerName: "제휴채널명", field: "afLinkNm", width: 180,
+			cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			}
+		},
+		{
+			headerName: "상위제휴채널", field: "afChannel", width: 120, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(afChannelList, params.data.afChannel); }
+		}
+	];
+	
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+	
+	// 다중 선택
+	gridOptions.rowSelection = 'multiple';
+	
+	// 검색
+	$('#btnAfSearch').on('click', function() {
+		var actionUrl = $('#searchForm').prop('action') + '?' + $('#searchForm').serialize();
+
+		// Fetch data
+		gagaAgGrid.fetch(actionUrl, gridOptions, '#searchForm');
+	});
+	
+	
+	// 적용 버튼 클릭 시
+	$('#btnConfirmAfChannel').on('click', function() {
+		
+		var selectedData = gagaAgGrid.selectedRowData(gridOptions);
+		
+		if (selectedData.length < 1) {
+			mcxDialog.alert('선택 된 제휴채널이 없습니다.');
+			return
+		}
+	
+		var callbackFn = [[${params.callBackFun}]];
+		
+		var jsonData = JSON.stringify(selectedData);
+
+		console.log("jsonData:" + jsonData);
+		console.log("callbackFn:" + callbackFn);
+		if ( typeof callbackFn != 'undefined' && callbackFn) {
+
+			if (typeof callbackFn == 'function') {
+				callbackFn(jsonData);
+			} else {
+				if (callbackFn) {
+					if ( callbackFn.indexOf("(") == -1 ) eval( callbackFn +"(" + jsonData+")");
+					else eval( callbackFn(jsonData) );
+				}
+			}
+			uifnPopupClose('popupAfChannel');
+		}  
+	});
+	
+	
+	$(document).ready(function() {
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridAfList', gridOptions);
+	});
+	/*]]>*/
+
+</script>
+
+
+
+</html>

+ 118 - 44
src/main/webapp/WEB-INF/views/marketing/PlanDetailPopupForm.html

@@ -140,9 +140,17 @@
 					<tr>
 						<th>제휴채널<em class="required" title="필수"></em></th>
 						<td colspan="3">
-							<label class="chkBox" th:if="${upperAfLinkCdList}" th:each="oneData, status : ${upperAfLinkCdList}">
-								<input type="checkbox" name="upperAfLinkCdArr" th:value="${oneData.cd}" th:text="${oneData.cdNm}"/>
-							</label>
+							<!-- 수정시 프로모션명 입력 : 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="btnAddAf">제휴채널 추가</button>
+										<button type="button" class="btn btnRight btn-success btn-lg"id="btnDeleteAf">선택삭제</button>
+									</span> <br />
+									<div id="gridAfPlanList" style="width: 100%; height: 200px;" class="ag-theme-balham"></div>
+								</div>
+							</div>
   						</td>
 						
 					</tr>
@@ -472,9 +480,17 @@
 					<tr>
 						<th>제휴채널<em class="required" title="필수"></em></th>
 						<td colspan="3">
-							<label class="chkBox" th:if="${upperAfLinkCdList}" th:each="oneData, status : ${upperAfLinkCdList}">
-								<input type="checkbox" name="upperAfLinkCdArr" th:value="${oneData.cd}" th:text="${oneData.cdNm}"/>
-							</label>
+							<!-- 수정시 프로모션명 입력 : 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="btnAddAf">제휴채널 추가</button>
+										<button type="button" class="btn btnRight btn-success btn-lg"id="btnDeleteAf">선택삭제</button>
+									</span> <br />
+									<div id="gridAfPlanList" style="width: 100%; height: 200px;" class="ag-theme-balham"></div>
+								</div>
+							</div>
   						</td>
 					</tr>
 					<tr>
@@ -629,8 +645,38 @@
 	var planCateList = [[${planCateList}]];
 	var custGbList = [[${gbList}]];
 	var custGradeList =	[[${gradeList}]]; 
+	var afChannelList = [[${afChannelList}]]; 
 	var snOptions;
 
+	let useYnList = { "Y":"Yes", "N":"No" };
+	let channelName = {"G053_01":"직접","G053_02":"네이버","G053_03":"다음","G053_04":"크리데오","G053_05":"카카오","G053_06":"인스타그램","G053_07":"페이스북","G053_08":"구글"
+			          ,"G053_09":"바이럴","G053_10":"모비온","G053_11":"YES24","G053_12":"한세드림"}
+	
+	let columnAfDefs = [
+		{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "제휴채널코드", field: "afLinkCd", width: 100, cellClass: 'text-center'},
+		{
+			headerName: "제휴채널명", field: "afLinkNm", width: 180,
+			cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			}
+		},
+		{headerName: "상위제휴채널", field: "afChannel", width: 120, cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(channelName) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(channelName, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(channelName, params.newValue); }	
+		}
+
+	];
+	
+	// 제휴채널 그리드 설정
+	var gridOptionsAfList = gagaAgGrid.getGridOptions(columnAfDefs);
+	gridOptionsAfList.rowSelection = "multiple";
+	gridOptionsAfList.suppressRowClickSelection = true;
+	
+    
+    
 	// 카테고리 전시 여부
 	var fnCataCheck = function(is, formId) {
 		if (is.checked) {
@@ -724,7 +770,7 @@
 					}
 				}
 			}
-	}else{
+	}else if($('#planUpdateForm select[name=replyYn]').val()=='N'){
 		$("#append1").css('display','none');
 		$("#append2").css('display','none');
 		$("#append3").css('display','none');
@@ -762,6 +808,10 @@
 				}
 			}
 		}
+	}else{
+		$("#append1").css('display','none');
+		$("#append2").css('display','none');
+		$("#append3").css('display','none');
 	}
 	
 	
@@ -905,17 +955,13 @@
 			multiCate.push(item.cateNo);
 		});
 		
-		var usableCustGradeArr = [];
-		var chkCustGrade = $('#planRegisterForm input:checkbox[name=usableCustGradeArr]:checked');
-		for(let i=0; i< chkCustGrade.length; i++){
-			usableCustGradeArr.push(chkCustGrade.eq(i).val());
-		}
+		let allChannelData = gagaAgGrid.getAllRowData(gridOptionsAfList);
+		var multiChannel = [];
+		$.each(allChannelData, function(idx, item) {
+			multiChannel.push(item.afLinkCd);
+		});
 		
-		var usableCustGbArr = [];
-		var chkCustGb = $('#planRegisterForm input:checkbox[name=usableCustGbArr]:checked');
-		for(let i=0; i< chkCustGb.length; i++){
-			usableCustGbArr.push(chkCustGb.eq(i).val());
-		}
+	
 		
 		// 기획전 등록
 		if (formId == '#planRegisterForm') {
@@ -923,6 +969,17 @@
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
+					var usableCustGradeArr = [];
+					var chkCustGrade = $('#planRegisterForm input:checkbox[name=usableCustGradeArr]:checked');
+					for(let i=0; i< chkCustGrade.length; i++){
+						usableCustGradeArr.push(chkCustGrade.eq(i).val());
+					}
+					
+					var usableCustGbArr = [];
+					var chkCustGb = $('#planRegisterForm input:checkbox[name=usableCustGbArr]:checked');
+					for(let i=0; i< chkCustGb.length; i++){
+						usableCustGbArr.push(chkCustGb.eq(i).val());
+					}
 					
 					let data = {
 							 multiBrand : multiBrand
@@ -931,6 +988,7 @@
 							,CateList : allCateData
 							,usableCustGradeArr : usableCustGradeArr
 							,usableCustGbArr : usableCustGbArr
+							,multiChannel : multiChannel
 						    ,mode : $('#planRegisterForm input[name=mode]').val()
 						    ,planSq : $('#planRegisterForm input[name=planSq]').val()
 							,planGb	: $('#planRegisterForm select[name=planGb]').val()
@@ -974,12 +1032,25 @@
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
+					var usableCustGradeArr = [];
+					var chkCustGrade = $('#planUpdateForm input:checkbox[name=usableCustGradeArr]:checked');
+					for(let i=0; i< chkCustGrade.length; i++){
+						usableCustGradeArr.push(chkCustGrade.eq(i).val());
+					}
 					
+					var usableCustGbArr = [];
+					var chkCustGb = $('#planUpdateForm input:checkbox[name=usableCustGbArr]:checked');
+					for(let i=0; i< chkCustGb.length; i++){
+						usableCustGbArr.push(chkCustGb.eq(i).val());
+					}
 					let data = {
 							 multiBrand : multiBrand
 							,brandList : allBrandData
 							,multiCate : multiCate
+							,multiChannel : multiChannel
 							,CateList : allCateData
+							,usableCustGradeArr : usableCustGradeArr
+							,usableCustGbArr : usableCustGbArr
 						    ,mode : $('#planUpdateForm input[name=mode]').val()
 						    ,planSq : $('#planUpdateForm input[name=planSq]').val()
 							,planGb	: $('#planUpdateForm select[name=planGb]').val()
@@ -1105,9 +1176,6 @@
 		{headerName: "브랜드그룹명", field: "brandGroupKnm", width: 120, cellClass: 'text-center'},
 		{headerName: "브랜드영문명", field: "brandGroupEnm", width: 150, 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}  */
 	];
 	
 	// 브랜드 그리드 설정
@@ -1163,7 +1231,7 @@
     	gridOptionsFGCateList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGCateList)});
     });
 	
-	
+
 	
 	// 카테고리 추가
 	$('#btnAddCate').on('click' , function () {
@@ -1194,7 +1262,34 @@
 		}
 	}
 	
+	// 제휴채널 추가
+	$('#btnAddAf').on('click' , function () {
+		cfnOpenAfChannelPopup("callBackAf");
+	});
 	
+	// 제휴채널 콜백
+	var callBackAf = function(result) {
+		// 기존 리스트 데이터 for
+		for(let i = 0 ; i < result.length ; i++) {
+			let addChk = true, gridListValue = gagaAgGrid.getAllRowData(gridOptionsAfList);		// 받아온 모든 데이터
+
+			// 받아온 data for
+			for(let j = 0 ; j < gridListValue.length ; j++) {
+				// 동일한 data는 추가하지 않음
+				if(gridListValue[j].afLinkCd == result[i].afLinkCd) {	addChk = false;	}		// 중복체크
+			}
+
+			// 중복되지 않은 데이터 리스트에 추가
+			if(addChk) {
+				gagaAgGrid.addRowData(gridOptionsAfList, {"afLinkCd":result[i].afLinkCd , "afLinkNm":result[i].afLinkNm, "afChannel":result[i].afChannel});
+			}
+		}
+	}
+	
+	// 제츄채널 선택삭제 버튼 클릭시
+    $('#btnDeleteAf').on('click', function() {
+    	gridOptionsAfList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsAfList)});
+    });
 
 	$(document).ready(function() {
 		
@@ -1207,22 +1302,12 @@
 		// 그리드 그리기
 		gagaAgGrid.createGrid("gridFGBrandList", gridOptionsFGBrandList);
 		gagaAgGrid.createGrid("gridFGCateList", gridOptionsFGCateList);
+		gagaAgGrid.createGrid("gridAfPlanList", gridOptionsAfList);
 		
 		 if (mode =='U') {
-			/* $('#planDetailForm input[name=badgeFcolor]').spectrum({
-				preferredFormat: "hex",
-				showInput: true,
-				allowEmpty: true
-			});
-
-			$('#planDetailForm input[name=badgeBcolor]').spectrum({
-				preferredFormat: "hex",
-				showInput: true,
-				allowEmpty: true
-			}); */
-			
 			gridOptionsFGBrandList.api.setRowData(planBrandList);
 			gridOptionsFGCateList.api.setRowData(planCateList);
+			gridOptionsAfList.api.setRowData(afChannelList);
 
 			if (planInfo.goodsLimitYn == 'N') {
 				$('#planDetailForm input[name=goodsLimitQty]').hide();
@@ -1238,17 +1323,6 @@
 			}
 
 		} else {
-			/* $('#planRegisterForm input[name=badgeFcolor]').spectrum({
-				preferredFormat: "hex",
-				showInput: true,
-				allowEmpty: true
-			});
-
-			$('#planRegisterForm input[name=badgeBcolor]').spectrum({
-				preferredFormat: "hex",
-				showInput: true,
-				allowEmpty: true
-			}); */
 
 			$("#viewStartDtNew").val(_today);
 			$("#viewEndDtNew").val(_today);

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

@@ -97,9 +97,9 @@
 			</table>
 
 			<ul class="panelBar">
-				<li class="center"><input type="button" value="초기화"
-					class="btn btn-gray btn-lg" id="btnInit" /> <input type="button"
-					value="조회" class="btn btn-base btn-lg" id="btnSearch" /></li>
+				<li class="center"><input type="button" value="초기화" class="btn btn-gray btn-lg" id="btnInit" /> 
+				<input type="button" value="조회" class="btn btn-base btn-lg" id="btnSearch" />
+				</li>
 			</ul>
 	</div>
 
@@ -361,7 +361,7 @@
 		$("#planListSearchForm input[name=pageNo]").val('1');
 		fnPlanListSearch($("#planListSearchForm input[name=searchGb]").val());
 	});
-	
+
 	
 	$(document).ready(function() {
 

+ 7 - 5
src/main/webapp/WEB-INF/views/marketing/PlanPopupForm.html

@@ -44,11 +44,13 @@
 					<tbody>
 						<tr>
 							<th>사이트</th>
-						 	<td><label th:if="${siteList}"
-								th:each="oneData, status : ${siteList}"> <input
-									type="checkbox" name="siteCds" th:value="${oneData.cd}"
-									th:text="${oneData.cdNm}" />
-							</label></td>
+							<td><select name="siteCd">
+									<th:block th:if="${siteList}"
+										th:each="oneData, status : ${siteList}">
+										<option th:value="${oneData.cd}"
+											th:text="${oneData.cdNm}"></option>
+									</th:block>
+							</select></td>
 
 							<th>기획전명</th>
 							<td><input type="text" name="planNm" id="planNm" /></td>

+ 1 - 1
src/main/webapp/WEB-INF/views/marketing/PollListForm.html

@@ -219,7 +219,7 @@
 <table class="frmStyle" style="display: none;" id="rowQuestion">
 	<tr id="trRowQuestion">
 	<td>
-		<input type="checkbox" name="chkIdx" style="margin-left: 10px; top: 50%;  left: 0;  width: 18px; height: 18px; transform: translate(0,-50%);"/>
+		<input type="checkbox" name="chkIdx" style="top: 50%; width: 18px; height: 18px;"/>
 		<input type="hidden" name="crud" value="C"/>
 		<input type="hidden" name="pollQsq" value=""/>
 	</td>

+ 60 - 45
src/main/webapp/WEB-INF/views/marketing/SocialShoppingListForm.html

@@ -33,29 +33,6 @@
 					<col/>
 				</colgroup>
 				<tbody>
-					<tr>
-						<th>진행기간</th>
-						<td colspan="7" id="terms"></td>
-					</tr>
-					<tr>
-						<th>소셜번호</th>
-						<td>
-							<input type="text" name="socualSq" id="socualSq"/>
-						</td>
-
-						<th>등록자</th>
-						<td>
-							<input type="text" name="regId" id="regId"/>
-						</td>
-
-						<th>사용여부</th>
-						<td>
-							<select name="useYn">
-								<option value="">전체</option>
-								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="|${oneData.cdNm}|"></option>
-							</select>
-						</td>
-					</tr>
 					<tr>
 						<th>사이트</th>
 						<td>
@@ -81,6 +58,29 @@
 							</select>
 						</td>
 					</tr>
+					<tr>
+						<th>소셜번호</th>
+						<td>
+							<input type="text" name="socialSq" id="socialSq"/>
+						</td>
+
+						<th>등록자</th>
+						<td>
+							<input type="text" name="regId" id="regId"/>
+						</td>
+
+						<th>사용여부</th>
+						<td>
+							<select name="useYn">
+								<option value="">전체</option>
+								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th>진행기간</th>
+						<td colspan="7" id="terms"></td>
+					</tr>
 				</tbody>
 			</table>
 			<ul class="panelBar">
@@ -130,7 +130,7 @@
 						<!-- 버튼 배치 영역 -->
 						<ul class="panelBar">
 							<li class="right">
-								<button type="button" class="btn btn-info btn-lg" onclick="$('#detailForm')[0].reset(); $('.tabsNav li').eq(1).addClass('off');">신규</button>
+								<button type="button" class="btn btn-info btn-lg" onclick="afreshBtn()">신규</button>
 							<button type="button" class="btn btn-success btn-lg" onclick="fnSocialSaveValid();">저장</button>
 							</li>
 						</ul>
@@ -196,10 +196,13 @@
 										<select name="socialType" required="required" data-valid-name="소셜유형">
 											<option th:if="${socialTypeList}" th:each="oneData, status : ${socialTypeList}" th:value="${oneData.cd}" th:text="|${oneData.cdNm}|"></option>
 										</select>
-										 <span id="planSpan">
+										
 											<button type="button" class="btn btn-base btn-lg" id="btnSearchPlan">기획전 조회</button>
-											<input type="text" name="socialPlanSq" readonly="readonly"/>
-											<input type="hidden" name="planSq"/>
+											/ 기획전
+										 <span id="planSpan">
+											<select name="planSq" id="planSq">
+													<option th:if="${planList}" th:each="oneData, status : ${planList}" th:value="${oneData.planSq}" th:text="|[${oneData.planSq}]  ${oneData.planNm}|"></option>
+											</select>
 										</span>
 									</td>
 									
@@ -261,15 +264,12 @@
 							<li class="right">
 								<button type="button" class="btn btn-default btn-lg" onclick="fnOpenGoodsPopup();">상품추가</button>
 								<button type="button" class="btn btn-default btn-lg" onclick="fnDeleteGoods();">상품삭제</button>
-								<button type="button" class="btn btn-default btn-lg" onclick="fnSocialGoodsExcelUpload();">엑셀상품추가</button>
-								<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF011');">엑셀상품추가 양식 다운로드</button>
+								<!-- <button type="button" class="btn btn-default btn-lg" onclick="fnSocialGoodsExcelUpload();">엑셀상품추가</button>
+								<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF011');">엑셀상품추가 양식 다운로드</button> -->
 								<button type="button" class="btn btn-success btn-lg" onclick="fnSocialGoodsSave();">저장</button>
-								<button type="button" class="btn btn-success btn-lg" onclick="fnSocialSaveValid();">저장</button>
 							</li>
 						</ul>
-					<div class="panelStyle">	
 						<div id="gridGoodsList" style="width: 100%; height: 500px;"  class="ag-theme-balham"></div>
-					</div>
 					
 					
 					<!-- <li class="boxContentBtnB" style="margin-top: 10px;">
@@ -290,7 +290,7 @@
 /*<![CDATA[*/
 
 	var siteList = gagajf.convertToArray([[${siteList}]]);
-	var socialTypeList = ([[${socialTypeList}]]);
+	var socialTypeList = gagajf.convertToArray([[${socialTypeList}]]);
 	var wmGbList = {"A":"ALL", "P":"웹", "M":"모바일"};
 	var applyList = {"P":"대기", "A":"적용", "F":"종료"};
 
@@ -354,11 +354,15 @@
 		$(formId + ' input[name=socialTnm]').val(data.socialTnm);
 		$(formId + ' select[name=siteCd]').val(data.siteCd);
 		$(formId + ' select[name=useYn]').val(data.useYn);
+		$(formId + ' select[name=applyGb]').val(data.applyGb);
 		$(formId + ' select[name=frontGb]').val(data.frontGb);
 		$(formId + ' select[name=socialType]').val(data.socialType);
 		$(formId + ' select[name=planSq]').val(data.planSq);
 		$(formId + ' select[name=socialType]').trigger('change');
 		
+		$(formId + ' select[name=planSq]').attr("disabled",true);
+		$(formId + ' select[name=socialType]').attr("disabled",true);
+		$(formId + ' button[id=btnSearchPlan]').css("display","none");
 		// 진행 기간 설정
 		var stDate = data.socialStdt.split(" ")[0];
 		var edDate = data.socialEddt.split(" ")[0];
@@ -374,6 +378,18 @@
 		$('#edTimeHour').val(edTime.substring(0,2));
 	}
 	
+	// 신규버튼  클릭 시 
+	var afreshBtn = function() {
+		var formId = '#detailForm';
+		
+		$('#detailForm')[0].reset();
+		$('.tabsNav li').eq(1).addClass('off');
+		
+		$(formId + ' select[name=planSq]').removeAttr("disabled");
+		$(formId + ' select[name=socialType]').removeAttr("disabled");
+		$(formId + ' button[id=btnSearchPlan]').removeAttr("style");
+		
+	};
 	// 소셜 기본정보 저장
 	var fnSocialSaveValid = function() {
 		var formId = '#detailForm';
@@ -497,17 +513,17 @@
 		{headerName: "상품코드"				, field:'goodsCd'	, width:300 , cellClass: 'text-center',
 			cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
 		},
-		{headerName: '적용 판매가'			, field:'currAprice', width:200 , cellClass: 'text-right', cellEditor: 'numericCellEditor', hide : true
+		{headerName: '적용 판매가'			, field:'currAprice', width:200 , cellClass: 'text-right', cellEditor: 'numericCellEditor'
 			, editable: function(params) { return gagajf.isNull(params.data.dcArate) ? true : false; } 
 			, cellRenderer: function(params) { return gagajf.isNull(params.value) ? '' : params.value.addComma(); }
 		}, // 변경 후 현재판매가
-		{headerName: '적용 할인율'			, field:'dcArate'	, width:200 , cellClass: 'text-right', cellEditor: 'numericCellEditor', hide : true
+		{headerName: '적용 할인율'			, field:'dcArate'	, width:200 , cellClass: 'text-right', cellEditor: 'numericCellEditor'
 			, editable: function(params) { return gagajf.isNull(params.data.currAprice) ? true : false; }
 		}, // 변경 후 할인율
-		{headerName: '적용 PC 포인트'		, field:'pntAprate'	, width:200 , cellClass: 'text-right', editable : true, cellEditor: 'numericCellEditor', hide : true }, // 변경 후 포인트적립율(PC)
-		{headerName: '적용 MOBILE 포인트'	, field:'pntAmrate'	, width:200 , cellClass: 'text-right', editable : true, cellEditor: 'numericCellEditor', hide : true }, // 변경 후 포인트적립율(모바일)
-		{headerName: '표시순서'				, field:'dispOrd'	, width:100 , cellClass: 'text-center', editable : true, cellEditor: 'numericCellEditor', hide : true},
-		{headerName: '삭제여부'				, field:'delYn'		, width:100 , cellClass: 'text-center', hide : true},
+		{headerName: '적용 PC 포인트'		, field:'pntAprate'	, width:200 , cellClass: 'text-right', editable : true, cellEditor: 'numericCellEditor'}, // 변경 후 포인트적립율(PC)
+		{headerName: '적용 MOBILE 포인트'	, field:'pntAmrate'	, width:200 , cellClass: 'text-right', editable : true, cellEditor: 'numericCellEditor' }, // 변경 후 포인트적립율(모바일)
+		{headerName: '표시순서'				, field:'dispOrd'	, width:100 , cellClass: 'text-center', editable : true, cellEditor: 'numericCellEditor'},
+		{headerName: '삭제여부'				, field:'delYn'		, width:100 , cellClass: 'text-center', hide: true},
 	];
 
 	var gridOptionsGoods = gagaAgGrid.getGridOptions(columnDefsGoods);
@@ -654,7 +670,7 @@
 		});
 	}
 	
-	var fnSocialGoodsExcelUpload = function() {
+	/* var fnSocialGoodsExcelUpload = function() {
 		cfnExcelUploadPopup('socialGoodsExcelUpload', 'socialGoodsExcelUpload');
 	}
 	
@@ -667,7 +683,7 @@
 		
 		var jsonData = JSON.stringify(data);
 		gagajf.ajaxJsonSubmit('/marketing/social/goods/excelupload', jsonData, fnSearchSocialGoodsList);
-	}
+	} */
 	
 	// 소셜 상품 저장
 	var fnSocialGoodsSave = function() {
@@ -680,7 +696,7 @@
 		
 		var checkData = [];
 		var msg = '';
-		/* $(goodsList).each(function(idx, goods) {
+		$(goodsList).each(function(idx, goods) {
 			if (goods.dcArate > 100) {
 				msg = '할인율은 100을 넘을 수 없습니다.';
 				return false;
@@ -696,7 +712,7 @@
 		if (!gagajf.isNull(msg)) {
 			mcxDialog.alert(msg);
 			return;
-		} */
+		}
 		
 		mcxDialog.confirm('저장 하시겠습니까?', {
 			cancelBtnText: "취소",
@@ -714,8 +730,7 @@
 	});
 	
 	var popupPlan = function(result) {
-		$('#detailForm input[name=socialPlanSq]').val("[" + result[0].planSq + "] " +result[0].planNm);
-		$('#detailForm input[name=planSq]').val(result[0].planSq);
+		$('#detailForm select[name=planSq]').val(result[0].planSq);
 	}
 	
 	$(document).ready(function() {

+ 25 - 0
src/main/webapp/ux/js/admin.popup.js

@@ -708,6 +708,7 @@ var cfnOpenBrandGroupListPopup = function(callbackfn, multiGb, type) {
 	cfnOpenModalPopup(actionUrl, "popupBrandGroup");
 }
 
+
 /**
  * @type   : function
  * @access : public
@@ -889,3 +890,27 @@ var cfnOpenMainMultiContentsPopup = function(cateNo, contentsLoc) {
 	//uifnPopClose('popupMainMultiContents');
 	cfnOpenModalPopup(actionUrl, 'popupMainMultiContents');
 }
+
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : 제휴채널 팝업
+ * <pre>
+ *     cfnOpenGoodsPopup('goosCallbackFun');
+ * </pre>
+ * @param  : callbackfun - 콜백함수
+ * @since  : 2020/01/17
+ * @author : eskim
+ */
+var cfnOpenAfChannelPopup = function(callbackfun) {
+	var actionUrl = "/business/channel/popup/form";
+	console.log(callbackfun);
+	if (typeof(callbackfun) == 'undefined'){
+		return;
+	}
+	if (typeof(callbackfun) != 'undefined'){
+		actionUrl += "?callBackFun=" + callbackfun;
+	} 
+		
+	cfnOpenModalPopup(actionUrl,'popupAfChannel');
+}