Ver código fonte

이태영 - 2020122 사은품 프로모션 화면 작성 중 중간 커밋

이태영 5 anos atrás
pai
commit
765f128dc9

+ 2 - 3
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaMarketingDao.java

@@ -1,8 +1,7 @@
 package com.style24.admin.biz.dao;
 
 import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.Itemkind;
-import com.style24.persistence.domain.Marketing;
+import com.style24.persistence.domain.FreeGoodsPromotion;
 import org.springframework.stereotype.Component;
 
 import java.util.Collection;
@@ -25,7 +24,7 @@ public interface TsaMarketingDao {
 	 * @author xodud1202
 	 * @since 2020. 12. 17
 	 */
-	Collection<Marketing> getFreeGoodsPromotionList(Marketing marketing);
+	Collection<FreeGoodsPromotion> getFreeGoodsPromotionList(FreeGoodsPromotion marketing);
 
 	/* // xodud1202 진행 */
 

+ 3 - 3
style24.admin/src/main/java/com/style24/admin/biz/service/TsaMarketingService.java

@@ -77,13 +77,13 @@ public class TsaMarketingService {
 
 	/**
 	 * 사은품 프로모션 리스트
-	 * @param marketing
+	 * @param param
 	 * @return
 	 * @author xodud1202
 	 * @since 2020. 12. 17
 	 */
-	public Collection<Marketing> getFreeGoodsPromotionList(Marketing marketing) {
-		return marketingDao.getFreeGoodsPromotionList(marketing);
+	public Collection<FreeGoodsPromotion> getFreeGoodsPromotionList(FreeGoodsPromotion param) {
+		return marketingDao.getFreeGoodsPromotionList(param);
 	}
 
 	/* // xodud1202 진행 */

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

@@ -1,6 +1,7 @@
 package com.style24.admin.biz.web;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaDateUtil;
 import com.style24.admin.biz.service.TsaCommonService;
 import com.style24.admin.biz.service.TsaMarketingService;
 import com.style24.admin.biz.service.TsaRendererService;
@@ -9,7 +10,7 @@ import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.TsaPageRequest;
-import com.style24.persistence.domain.Marketing;
+import com.style24.persistence.domain.FreeGoodsPromotion;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -18,7 +19,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
 /**
@@ -52,7 +52,6 @@ public class TsaMarketingController extends TsaBaseController {
 	/* xodud1202 진행 */
 	/**
 	 * 사은품 프로모션 관리 화면
-	 * @return
 	 * @author xodud1202
 	 * @since 2020. 12. 16
 	 */
@@ -65,29 +64,46 @@ public class TsaMarketingController extends TsaBaseController {
 
 	/**
 	 * 사은품 프로모션 목록 조회
-	 *
-	 * @return
 	 * @author xodud1202
 	 * @since 2020. 10. 17
 	 */
 	@PostMapping("/freeGoodsPromotion/list")
 	@ResponseBody
-	public GagaMap getFreeGoodsPromotionList(@RequestBody Marketing marketing) {
+	public GagaMap getFreeGoodsPromotionList(@RequestBody FreeGoodsPromotion param) {
 		GagaMap result = new GagaMap();
 
-		List<Marketing> marketingList = (ArrayList<Marketing>) marketingService.getFreeGoodsPromotionList(marketing);
+		List<FreeGoodsPromotion> marketingList = (ArrayList<FreeGoodsPromotion>) marketingService.getFreeGoodsPromotionList(param);
 
-		marketing.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		marketing.setPageable(new TsaPageRequest(marketing.getPageNo() - 1, marketing.getPageSize()));
-		marketing.getPageable().setTotalCount(marketingList.size());
+		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
+		param.getPageable().setTotalCount(marketingList.size());
 
-		result.set("pageing", marketing);
+		result.set("pageing", param);
 		result.set("freeGoodsList", marketingList);
 
 		return result;
 	}
 
 
+	/**
+	 * 세트상품구성 화면
+	 *
+	 * @param
+	 * @return
+	 * @author eskim
+	 * @since 2020. 05. 26
+	 */
+	@ResponseBody
+	@GetMapping("/freeGoodsRegiPopup/form")
+	public ModelAndView freeGoodsRegiForm(FreeGoodsPromotion param) {
+		ModelAndView mav = new ModelAndView();
+
+		mav.addObject("params", param);
+		mav.setViewName("marketing/FreeGoodsPromotionRegiForm");
+		return mav;
+	}
+
+
 	/* // xodud1202 진행 */
 
 	/* JSM 진행 */

+ 1 - 9
style24.admin/src/main/java/com/style24/persistence/domain/Marketing.java → style24.admin/src/main/java/com/style24/persistence/domain/FreeGoodsPromotion.java

@@ -12,7 +12,7 @@ import lombok.Data;
  */
 @SuppressWarnings("serial")
 @Data
-public class Marketing extends TscBaseDomain {
+public class FreeGoodsPromotion extends TscBaseDomain {
 	// 사은품 프로모션
 	private int freeGiftSq;		// 프로모션ID
 	private String freeGiftName;	// 프로모션명
@@ -27,12 +27,4 @@ public class Marketing extends TscBaseDomain {
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;
-
-	/* xodud1202 진행 */
-
-	/* // xodud1202 진행 */
-
-	/* JSM 진행 */
-
-	/* // JSM 진행 */
 }

+ 17 - 16
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaMarketing.xml

@@ -1,33 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.style24.admin.biz.dao.TsaMarketingDao">
+	<!-- xodud1202 진행 -->
 
 	<!-- 품목 목록 -->
-	<select id="getFreeGoodsPromotionList" parameterType="Marketing" resultType="Marketing">
+	<select id="getFreeGoodsPromotionList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
 		/* TsaMarketing.getFreeGoodsPromotionList */
 		SELECT FG.FREEGIFT_SQ
-		     , FG.FREEGIFT_NM
-		     , FG.FREEGIFT_STAT
-		     , DATE_FORMAT(FG.FREEGIFT_STDT, '%Y.%m.%d') AS FREEGIFT_STDT
-		     , DATE_FORMAT(FG.FREEGIFT_EDDT, '%Y.%m.%d') AS FREEGIFT_EDDT
-		     , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.REG_NO) AS REG_NM
-		     , DATE_FORMAT(FG.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
-		     , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.UPD_NO) AS UPD_NM
-		     , DATE_FORMAT(FG.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
-          FROM TB_FREEGIFT FG
-         WHERE 1=1
+		, FG.FREEGIFT_NM
+		, FG.FREEGIFT_STAT
+		, DATE_FORMAT(FG.FREEGIFT_STDT, '%Y.%m.%d') AS FREEGIFT_STDT
+		, DATE_FORMAT(FG.FREEGIFT_EDDT, '%Y.%m.%d') AS FREEGIFT_EDDT
+		, (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.REG_NO) AS REG_NM
+		, DATE_FORMAT(FG.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
+		, (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.UPD_NO) AS UPD_NM
+		, DATE_FORMAT(FG.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+		FROM TB_FREEGIFT FG
+		WHERE 1=1
 		<if test="searchTxt != null and searchTxt != ''">
-			<if test="promotionGubun != null and promotionGubun == 'freeGiftSq'">
+			<if test="promotionGubun != null and promotionGubun == 'freegiftSq'">
 				AND FG.FREEGIFT_SQ = #{searchTxt}
 			</if>
-			<if test="promotionGubun != null and promotionGubun == 'freeGiftName'">
-				AND FG.FREEGIFT_NAME = #{searchTxt}
+			<if test="promotionGubun != null and promotionGubun == 'freegiftNm'">
+				AND FG.FREEGIFT_NM = #{searchTxt}
 			</if>
 		</if>
-         ORDER BY REG_DT DESC
+		ORDER BY REG_DT DESC
 	</select>
 
-	<!-- xodud1202 진행 -->
+
 
 	<!-- // xodud1202 진행 -->
 

+ 5 - 5
style24.admin/src/main/resources/log/logback-locd.xml

@@ -2,7 +2,7 @@
 
 <configuration scan="true">
 	<property name="LOG_HOME" value="/WIDE/workspace/logs/style24/admin"/>
-	<property name="LOG_LEVEL" value="INFO"/>
+	<property name="LOG_LEVEL" value="DEBUG"/>
 	
 	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
 		<encoder>
@@ -14,14 +14,14 @@
 	<logger name="org.springframework" level="ERROR"/>
 	
 	<!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. -->
-	<!-- <logger name="jdbc.sqlonly" level="${LOG_LEVEL}">
+	<logger name="jdbc.sqlonly" level="${LOG_LEVEL}">
 		<appender-ref ref="CONSOLE"/>
-	</logger> -->
+	</logger>
 	
 	<!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
-	<!-- <logger name="jdbc.sqltiming" level="${LOG_LEVEL}">
+	<logger name="jdbc.sqltiming" level="${LOG_LEVEL}">
 		<appender-ref ref="CONSOLE"/>
-	</logger> -->
+	</logger>
 	
 	<!-- ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. -->
 	<!-- 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다. -->

+ 19 - 9
style24.admin/src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionForm.html

@@ -54,8 +54,8 @@
 						<tr>
 							<th>프로모션 조회</th>
 							<td>
-								<label class="rdoBtn"><input type="radio" name="promotionGubun" id="promotionId" value="freeGiftSq"  checked/>프로모션ID</label>
-								<label class="rdoBtn"><input type="radio" name="promotionGubun" id="promotionName" value="freeGiftName"/>프로모션명</label>
+								<label class="rdoBtn"><input type="radio" name="promotionGubun" id="promotionId" value="freegiftSq"  checked/>프로모션ID</label>
+								<label class="rdoBtn"><input type="radio" name="promotionGubun" id="promotionName" value="freegiftNm"/>프로모션명</label>
 								<input type="text" class="w900" name="searchTxt" id="searchTxt" />
 							</td>
 						</tr>
@@ -86,7 +86,11 @@
 						<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
 					</li>
 				</ul>
-
+				<div class="panelBar">
+					<div class="right">
+						<button type="button" class="btn btn-info btn-lg" id="btnFreeGoodsRegi" >프로모션등록</button>
+					</div>
+				</div>
 				<!-- 검색결과 영역 -->
 				<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh60"></div>
 			</div>
@@ -96,11 +100,11 @@
 /*<![CDATA[*/
 	var columnDefs = [];
 	columnDefs = [
-		{headerName: "프로모션ID", field: "freeGiftSq", width: 80, cellClass: 'text-center'},
-		{headerName: "프로모션명", field: "freeGiftName", width: 130, cellClass: 'text-center'},
-		{headerName: "상태", field: "freeGiftStat", width: 140, cellClass: 'text-center'},
-		{headerName: "시작일", field: "freeGiftStdt", width: 140, cellClass: 'text-center'},
-		{headerName: "종료일", field: "freeGiftEddt", width: 140, cellClass: 'text-center'},
+		{headerName: "프로모션ID", field: "freegiftSq", width: 80, cellClass: 'text-center'},
+		{headerName: "프로모션명", field: "freegiftNm", width: 130, cellClass: 'text-center'},
+		{headerName: "상태", field: "freegiftStat", width: 140, cellClass: 'text-center'},
+		{headerName: "시작일", field: "freegiftStdt", width: 140, cellClass: 'text-center'},
+		{headerName: "종료일", field: "freegiftEddt", width: 140, cellClass: 'text-center'},
 		{headerName: "등록자", field: "regNm", width: 200, cellClass: 'text-left'
 			,cellRenderer: function(params) {
 				return params.value + "(" + params.data.regDt + ")";
@@ -119,7 +123,7 @@
 	// Row Click
 	gridOptions.onCellClicked = function(event) {
 		var goodsCd = event.data.goodsCd;
-		if (event.colDef.field == "freeGiftName"){
+		if (event.colDef.field == "freegiftNm"){
 			// 수정 필요
 			// cfnOpenGoodsDetailPopup('U',goodsCd);
 		}
@@ -199,6 +203,12 @@
 		
 	}
 
+	// 조회클릭시
+	$('#btnFreeGoodsRegi').on('click', function() {
+		cfnOpenFreeGoodsPromotionSetPopup();
+	});
+
+
 	//페이징
 	$('#searchForm select[name=pageSize]').on('change', function() {
 		$("#searchForm input[name=pageNo]").val('1');

+ 302 - 0
style24.admin/src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html

@@ -0,0 +1,302 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsSetForm.html
+ * @desc    : 세트상품 구성 관리
+ *============================================================================
+ * SISUN
+ * Copyright(C) 2019 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.11.04   eskim       최초 작성
+ *******************************************************************************
+ -->	
+	<div class="modalPopup" data-width="1100">
+		<div class="panelStyle" style="max-height:900px;overflow-y:scroll;">
+			<div class="panelTitle">
+				<h2>사은품 프로모션 관리</h2>
+				<button type="button" class="close" onclick="fnFreeGoodsPromotionFormClose()"><i class="fa fa-times"></i></button>
+			</div>
+
+			<form id="freeGoodsPromotionForm" name="freeGoodsPromotionForm" th:method="post" >
+				<div class="panelContent">
+					<ul class="notice">
+						<li>구성상품 등록시 기본값&nbsp;
+							<!-- 아이콘 툴팁 -->
+							<div class="iconTooltip">
+								<i class="fa fa-info" aria-hidden="true"></i>
+								<span class="left" style="width:400px; text-align:left;">
+									<!-- class="left" 또는 class="right" -->
+									- 상품상태 : 정보부족<br/>
+									- 정상가 : 구성상품의 정상가 합<br/>
+									- 판매가 : 구성상품 판매가 입력값의 합<br/>
+									- 브랜드코드 : 구성상품의 기준여부 'Y'상품의 브랜드코드<br/>
+									- 품목코드 : 구성상품의 기준여부 'Y'상품의 품목코드<br/>
+									- 포인트 : 구성상품의 기준여부 'Y'상품의 브랜드 포인트<br/>
+									- 배송비정책 : 구성상품의 기준여부 'Y'상품의 브랜드 배송비정책<br/>
+								</span>
+							</div>
+							<!-- //아이콘 툴팁 -->
+						</li>
+					</ul>
+					<table class="frmStyle">
+						<colgroup>
+							<col width="10%"/>
+							<col width="50%"/>
+							<col width="10%"/>
+							<col/>
+						</colgroup>
+						<tr>
+							<th>프로모션명<em class="required" title="필수"></em></th>
+							<td>
+								<!-- 수정시 프로모션명 입력 : before -->
+								<input class="w50p" type="text" id="freegiftNm" name="freegiftNm" maxlength="30"/>
+							</td>
+							<th>프로모션ID</th>
+							<td>
+								<!-- 프로모션 ID 입력 : before -->
+								<span />
+							</td>
+						</tr>
+						<tr>
+							<th>행사 기간<em class="required" title="필수"></em></th>
+							<td>
+								<input type="text" class="schDate w100" id="freegiftStdt" name="freegiftStdt" maxlength="10" required="required" data-valid-name="시작일자"/>
+								~
+								<input type="text" class="schDate w100" id="freegiftEddt" name="freegiftEddt" maxlength="10" required="required" data-valid-name="종료일자"/>
+							</td>
+							<!-- <td id="promotionTerms">수정시 행사기간 입력되도록 수정(JAVASCRIPT?) : before</td> -->
+							<th>상태</th>
+							<td>
+								<!-- 상태 입력 : before -->
+								<span />
+							</td>
+						</tr>
+						<tr>
+							<th>적용 몰 구분<em class="required" title="필수"></em></th>
+							<td colspan="3">
+								<!-- 적용 몰 구분 입력(공통 가져와야할듯?) : before -->
+								<input type="checkbox" id="jasa"/><label for="jasa">자사몰</label>
+							</td>
+						</tr>
+					</table>
+				</div>
+
+				<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><i class="fa fa-info-circle"></i>브랜드/공급업체/상품 중 1가지는 필수로 지정하셔야 합니다.</div>
+						<div><i class="fa fa-info-circle"></i>브랜드와 공급업체는 지정 시, 해당 브랜드의 공급처와 같은 AND조건으로 적용됩니다.(예시:A브랜드 상품 중 B업체 상품만)</div>
+						<div><i class="fa fa-info-circle"></i>공급업체와 브랜드를 적용하시더라도 적용상품은 별개로 등록된 상품을 기준으로 사은품 지급기준으로 적용하실 수 있습니다.</div>
+
+						<div class="panelContent">
+							<table class="frmStyle">
+								<colgroup>
+									<col width="10%"/>
+									<col/>
+								</colgroup>
+								<tr>
+									<th>공급업체/브랜드</th>
+									<td>
+										<!-- 수정시 프로모션명 입력 : before -->
+										<div style="width:45%;display:inline-block;">
+											<span>공급업체 설정</span>
+											<div>
+												<input type="button" value="업체 추가" />
+												<input type="button" value="선택 삭제" />
+												<span>선택 : 00개</span>
+												<br/>
+												<div style="border:solid 1px black;width:200px;height:200px;"></div>
+											</div>
+										</div>
+										<div style="width:45%;display:inline-block;">
+											<span>브랜드 설정</span>
+											<div>
+												<input type="button" value="브랜드 추가" />
+												<input type="button" value="선택 삭제" />
+												<span>선택 : 00개</span>
+												<br/>
+												<div style="border:solid 1px black;width:200px;height:200px;"></div>
+											</div>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<th>적용상품</th>
+									<td>
+										<input type="button" value="상품 추가" />
+										<input type="button" value="선택 삭제" />
+										<span>선택 : 00개</span>
+										<br/>
+										<div style="border:solid 1px black;width:200px;height:200px;"></div>
+									</td>
+								</tr>
+							</table>
+						</div>
+					</div>
+				</div>
+
+				<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/>
+								</colgroup>
+								<tr>
+									<th>제외 대상</th>
+									<td>
+										<div>
+											<input type="button" value="상품 추가" />
+											<input type="button" value="선택 삭제" />
+											<span>선택 : 00개</span>
+											<br/>
+											<div style="border:solid 1px black;width:200px;height:200px;"></div>
+										</div>
+									</td>
+								</tr>
+							</table>
+						</div>
+					</div>
+				</div>
+
+				<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/>
+								</colgroup>
+								<tr>
+									<th>지급 방법<em class="required" title="필수"></em></th>
+									<td>
+										<div>
+											<span>아래 내용으로 라디오 박스 2개</span>
+											<span>모두 지급 (설정한 사은품을 모두 지급합니다)</span>
+											<span>선택 사은품 (목록 중 1개를 선택하게 합니다)</span>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<th>사은품 조건1<em class="required" title="필수"></em><br/>(최대 2개)</th>
+									<td>
+										<div>
+											<div><i class="fa fa-info-circle"></i>사은품은 최대 <font color="red">5</font>개까지 설정하실 수 있습니다.</div>
+											<div><i class="fa fa-info-circle"></i>구매 금액 조건을 추가하시면 구매 금액 충족 조건에 맞는 것으로 지급됩니다. 구매금액 조건은 최대 2개까지만등록 하실 수 있습니다.</div>
+											<div><i class="fa fa-info-circle"></i>장바구니에 담았을 때의 가격 기준으로 적용됩니다.(주문상품쿠폰(다운로드쿠폰)/장바구니 쿠폰 할인 적용 전 판매가)</div>
+											<label for="saleAmt">구매금액</label><input type="text" class="w300" id="saleAmt" /> <br/>
+											<label for="goodsList">사은품 목록</label><input type="button" value="+ 사은품 선택" id="goodsList" /> <!-- 선택 시 팝업 노출 -->
+											<input type="button" value="선택삭제" id="deleteGoodsList" />
+											<br/>
+											<div style="border:solid 1px black;width:200px;height:200px;"></div>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<th>사은품 조건2<em class="required" title="필수"></em><br/>(최대 2개)</th>
+									<td>
+										<div>
+											<label for="saleAmt2">구매금액</label><input type="text" class="w300" id="saleAmt2" /> <br/>
+											<label for="goodsList2">사은품 목록</label><input type="button" value="+ 사은품 선택" id="goodsList2" /> <!-- 선택 시 팝업 노출 -->
+											<input type="button" value="선택삭제" id="deleteGoodsList2" />
+											<br/>
+											<div style="border:solid 1px black;width:200px;height:200px;"></div>
+										</div>
+									</td>
+								</tr>
+							</table>
+						</div>
+					</div>
+				</div>
+
+				<div class="panelStyle" style="margin:unset;">
+					<!-- //TITLE -->
+					<div class="inner-panelContent">
+						<div class="panelContent">
+							<table class="frmStyle">
+								<colgroup>
+									<col width="10%"/>
+									<col width="40%"/>
+									<col width="10%"/>
+									<col/>
+								</colgroup>
+								<tr>
+									<th>등록자</th>
+									<td>
+										<span>등록자이름(연.월.일 시간:분:초)</span>
+									</td>
+									<th>최종수정자</th>
+									<td>
+										<span>수정자이름(연.월.일 시간:분:초)</span>
+									</td>
+								</tr>
+							</table>
+						</div>
+					</div>
+				</div>
+			</form>
+
+			<ul class="panelBar">
+				<li  class="right">
+					<!-- <th:block th:if="${sessionInfo.roleCd == 'G001_0000' OR sessionInfo.roleCd == 'G001_A000' OR sessionInfo.roleCd == 'G001_A101' OR sessionInfo.roleCd == 'G001_A100' OR sessionInfo.roleCd == 'G001_A001'}"> -->
+						<button type="button" class="btn btnRight btn-success btn-lg" id="btnSearchList">목록</button>
+						<button type="button" class="btn btnRight btn-success btn-lg" id="btnFreegoodsPromotionSave">저장</button>
+						<button type="button" class="btn btnRight btn-success btn-lg" id="btnChangeStatIng">진행</button>
+						<button type="button" class="btn btnRight btn-success btn-lg" id="btnPromotionDelete">삭제</button>
+						<button type="button" class="btn btnRight btn-success btn-lg" id="btnPromotionStop">중지</button>
+					<!-- </th:block> -->
+				</li>
+			</ul>
+		</div>	
+	</div>
+
+	<script th:inline="javascript">
+		$(document).ready(function() {
+			cfnCreateCalendar('#promotionTerms', 'freegoodsStdt', 'freegoodsEddt', true, '행사기간', 'X');
+		});
+
+		//패널영역 줄이기
+		$(document).on("click",".panelControl .inner-fa-chevron-up", function() {
+			$(this).parent().parent().parent().find(".inner-panelContent").slideUp(100);
+			$(this).attr("class","fa inner-fa-chevron-down");
+		});
+		//패널영역 펼치기
+		$(document).on("click",".panelControl .inner-fa-chevron-down", function() {
+			$(this).parent().parent().parent().find(".inner-panelContent").slideDown(100);
+			$(this).attr("class","fa inner-fa-chevron-up");
+		});
+
+		//창종료
+		var fnFreeGoodsPromotionFormClose = function(){
+			uifnPopupClose('popupFreeGoodsPromotionRegi');
+		}
+	</script>
+</html>

+ 2 - 0
style24.admin/src/main/webapp/ux/css/admin.ui.css

@@ -160,6 +160,8 @@ header a, header button {color:#fff;}
 .panelStyle .panelBar > li {display:table-cell;}
 .panelStyle .panelBar > .center {text-align:center;}
 .panelStyle .panelBar > .right {text-align:right;}
+.panelStyle .inner-fa-chevron-up:before {content:"\f077";}
+.panelStyle .inner-fa-chevron-down:before {content:"\f078";}
 
 /* 패널 내부 테이블 여러개 배치 */
 .panelStyle .division + .panelBar {padding-bottom:15px;}

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

@@ -686,3 +686,20 @@ var cfnOpenBrandListPopup = function(callbackfn, searchTxt) {
 	if (typeof(searchTxt) != 'undefined') actionUrl += "&searchTxt=" + encodeURIComponent(searchTxt);
 	cfnOpenModalPopup(actionUrl, "popupBrandList");
 }
+
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : 프로모션 등록 팝업
+ * <pre>
+ *     cfnOpenFreeGoodsPromotionSetPopup();
+ * </pre>
+ * @since  : 2020/12/21
+ * @author : xodud1202
+ */
+var cfnOpenFreeGoodsPromotionSetPopup = function() {
+	var actionUrl = "/marketing/freeGoodsRegiPopup/form";
+
+	uifnPopupClose('popupFreeGoodsPromotionRegi');
+	cfnOpenModalPopup(actionUrl, 'popupFreeGoodsPromotionRegi');
+}