Ver Fonte

제휴몰관리, 제휴몰고시정보관리 추가

gagamel há 5 anos atrás
pai
commit
01725a9ccc

+ 44 - 0
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaOcmDao.java

@@ -0,0 +1,44 @@
+package com.style24.admin.biz.dao;
+
+import java.util.Collection;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Extmall;
+import com.style24.persistence.domain.ExtmallNoti;
+
+/**
+ * 영업망관리 Dao
+ *
+ * @author gagamel
+ * @since 2020. 11. 5
+ */
+@ShopDs
+public interface TsaOcmDao {
+
+	/**
+	 * 제휴몰 목록
+	 * @param extmall - 제휴몰 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	Collection<Extmall> getExtmallList(Extmall extmall);
+
+	/**
+	 * 제휴몰 등록/수정
+	 * @param extmall - 제휴몰 정보
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	void saveExtmall(Extmall extmall);
+
+	/**
+	 * 제휴몰 고시정보 목록
+	 * @param extmallNoti - 제휴몰고시정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 6
+	 */
+	Collection<ExtmallNoti> getExtmallNotiinfoList(ExtmallNoti extmallNoti);
+
+}

+ 68 - 0
style24.admin/src/main/java/com/style24/admin/biz/service/TsaOcmService.java

@@ -0,0 +1,68 @@
+package com.style24.admin.biz.service;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.style24.admin.biz.dao.TsaOcmDao;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.Extmall;
+import com.style24.persistence.domain.ExtmallNoti;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 영업망관리 Service
+ *
+ * @author gagamel
+ * @since 2020. 11. 4
+ */
+@Service
+@Slf4j
+public class TsaOcmService {
+
+	@Autowired
+	private TscMessageByLocale message;
+
+	@Autowired
+	private TsaOcmDao ocmDao;
+
+	/**
+	 * 제휴몰 목록
+	 * @param extmall - 제휴몰 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	public Collection<Extmall> getExtmallList(Extmall extmall) {
+		return ocmDao.getExtmallList(extmall);
+	}
+
+	/**
+	 * 제휴몰 등록/수정 처리
+	 * @param extmall - 제휴몰 정보
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	@Transactional("shopTxnManager")
+	public void saveExtmall(Extmall extmall) {
+		extmall.setRegNo(TsaSession.getInfo().getUserNo());
+		extmall.setUpdNo(TsaSession.getInfo().getUserNo());
+		ocmDao.saveExtmall(extmall);
+	}
+
+	/**
+	 * 제휴몰 고시정보 목록
+	 * @param extmallNoti - 제휴몰고시정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 6
+	 */
+	public Collection<ExtmallNoti> getExtmallNotiinfoList(ExtmallNoti extmallNoti) {
+		return ocmDao.getExtmallNotiinfoList(extmallNoti);
+	}
+
+}

+ 125 - 0
style24.admin/src/main/java/com/style24/admin/biz/web/TsaOcmController.java

@@ -0,0 +1,125 @@
+package com.style24.admin.biz.web;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.style24.admin.biz.service.TsaOcmService;
+import com.style24.admin.biz.service.TsaRendererService;
+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.domain.Extmall;
+import com.style24.persistence.domain.ExtmallNoti;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.rest.server.GagaResponse;
+
+/**
+ * 영업망관리 Controller
+ *
+ * @author gagamel
+ * @since 2020. 11. 5
+ */
+@Controller
+@RequestMapping("/ocm")
+@Slf4j
+public class TsaOcmController extends TsaBaseController {
+
+	@Autowired
+	private TscMessageByLocale message;
+
+	@Autowired
+	private TsaOcmService ocmService;
+
+	@Autowired
+	private TsaRendererService rendererService;
+
+	/**
+	 * 제휴몰관리 화면
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	@GetMapping("/extmall/form")
+	public ModelAndView extmallForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 제휴몰벤더
+		mav.addObject("vendorList", rendererService.getCommonCodeList("G003", "Y", TsaSession.getInfo().getSupplyCompCd()));
+
+		// 공급업체
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(TsaSession.getInfo().getSupplyCompCd()));
+
+		mav.setViewName("ocm/ExtmallForm");
+
+		return mav;
+	}
+
+	/**
+	 * 제휴몰 목록
+	 * @param extmall - 제휴몰 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	@PostMapping("/extmall/list")
+	@ResponseBody
+	public Collection<Extmall> getExtmallList(@RequestBody Extmall extmall) {
+		return ocmService.getExtmallList(extmall);
+	}
+
+	/**
+	 * 제휴몰 등록/수정 처리
+	 * @param extmall - 외부몰 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	@PostMapping("/extmall/save")
+	@ResponseBody
+	public GagaResponse saveExtmall(@RequestBody Extmall extmall) {
+		ocmService.saveExtmall(extmall);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
+	/**
+	 * 제휴몰고시정보관리 화면
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 6
+	 */
+	@GetMapping("/extmall/notiinfo/form")
+	public ModelAndView extmallNotiinfoForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 제휴몰벤더
+		mav.addObject("vendorList", rendererService.getCommonCodeList("G003", "Y", TsaSession.getInfo().getSupplyCompCd()));
+
+		mav.setViewName("ocm/ExtmallNotiinfoForm");
+
+		return mav;
+	}
+
+	/**
+	 * 제휴몰고시정보 목록
+	 * @param extmallNoti - 제휴몰고시정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 6
+	 */
+	@PostMapping("/extmall/notiinfo/list")
+	@ResponseBody
+	public Collection<ExtmallNoti> getExtmallNotiinfoList(@RequestBody ExtmallNoti extmallNoti) {
+		return ocmService.getExtmallNotiinfoList(extmallNoti);
+	}
+
+}

+ 28 - 0
style24.admin/src/main/java/com/style24/persistence/domain/Extmall.java

@@ -0,0 +1,28 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 외부몰 Domain
+ *
+ * @author gagamel
+ * @since 2020. 11. 5
+ */
+@SuppressWarnings("serial")
+@Data
+public class Extmall extends TscBaseDomain {
+
+	private String vendorId;		// 벤더ID
+	private String extmallId;		// 제휴몰ID
+	private String extmallUserId;	// 제휴몰사용자ID
+	private String extmallNm;		// 제휴몰명
+	private String supplyCompCd;	// 공급업체코드
+	private String sellStoreCd;		// 판매매장코드
+	private float stockSellRate;	// 재고판매비율
+	private float priceAcceptRate;	// 가격허용율
+	private String dwdpYn;			// 직접회수여부(Y:제휴몰에서회수, N:자사몰에서회수)
+	private String useYn;			// 사용여부
+
+}

+ 27 - 0
style24.admin/src/main/java/com/style24/persistence/domain/ExtmallNoti.java

@@ -0,0 +1,27 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 외부몰고시정보 Domain
+ *
+ * @author gagamel
+ * @since 2020. 11. 6
+ */
+@SuppressWarnings("serial")
+@Data
+public class ExtmallNoti extends TscBaseDomain {
+
+	private String vendorId;
+	private String extmallNiClsfCd;
+	private String extmallNiClsfNm;
+	private String extmallNiItemCd;
+	private String extmallNiItemNm;
+	private String selfmallNiClsfNm;
+	private String selfmallNiItemNm;
+
+	private String niContent;
+
+}

+ 100 - 0
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaOcm.xml

@@ -0,0 +1,100 @@
+<?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.TsaOcmDao">
+
+	<!-- 외부몰 목록 -->
+	<select id="getExtmallList" parameterType="Extmall" resultType="Extmall">
+		/* TsaOcm.getExtmallList */
+		SELECT VENDOR_ID         /*벤더ID*/
+		     , EXTMALL_ID        /*외부몰ID*/
+		     , EXTMALL_USER_ID   /*외부몰사용자ID*/
+		     , EXTMALL_NM        /*외부몰명*/
+		     , SUPPLY_COMP_CD    /*업체코드*/
+		     , SELL_STORE_CD     /*판매매장코드*/
+		     , STOCK_SELL_RATE   /*재고판매비율*/
+		     , PRICE_ACCEPT_RATE /*가격차이허용율*/
+		     , DWDP_YN           /*직접회수처리여부*/
+		     , USE_YN            /*사용여부*/
+		FROM   TB_EXTMALL A
+		WHERE  1 = 1
+		<if test="vendorId != null and vendorId != ''">
+		AND    VENDOR_ID = #{vendorId}
+		</if>
+		ORDER  BY VENDOR_ID, EXTMALL_ID, EXTMALL_USER_ID
+	</select>
+	
+	<!-- 외부몰 등록/수정 -->
+	<insert id="saveExtmall" parameterType="Extmall">
+		/* TsaOcm.saveExtmall */
+		INSERT INTO TB_EXTMALL (
+		       VENDOR_ID
+		     , EXTMALL_ID
+		     , EXTMALL_USER_ID
+		     , EXTMALL_NM
+		     , SUPPLY_COMP_CD
+		     , SELL_STORE_CD
+		     , STOCK_SELL_RATE
+		     , PRICE_ACCEPT_RATE
+		     , DWDP_YN
+		     , USE_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{vendorId}
+		     , #{extmallId}
+		     , #{extmallUserId}
+		     , #{extmallNm}
+		     , #{supplyCompCd}
+		     , #{sellStoreCd}
+		     , IFNULL(#{stockSellRate},0)
+		     , IFNULL(#{priceAcceptRate},0)
+		     , #{dwdpYn}
+		     , #{useYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       EXTMALL_NM = #{extmallNm}
+		     , SUPPLY_COMP_CD = #{supplyCompCd}
+		     , SELL_STORE_CD = #{sellStoreCd}
+		     , STOCK_SELL_RATE = IFNULL(#{stockSellRate},0)
+		     , PRICE_ACCEPT_RATE = IFNULL(#{priceAcceptRate},0)
+		     , DWDP_YN = #{dwdpYn}
+		     , USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+	
+	<!-- 외부몰고시정보 목록 -->
+	<select id="getExtmallNotiinfoList" parameterType="ExtmallNoti" resultType="ExtmallNoti">
+		/* TsaOcm.getExtmallNotiinfoList */
+		SELECT A.VENDOR_ID                                 /*벤더ID*/
+		     , A.EXTMALL_NI_CLSF_CD                        /*외부몰고시정보분류코드*/
+		     , A.EXTMALL_NI_CLSF_NM                        /*외부몰고시정보분류명*/
+		     , A.EXTMALL_NI_ITEM_CD                        /*외부몰고시정보항목코드*/
+		     , A.EXTMALL_NI_ITEM_NM                        /*외부몰고시정보항목명*/
+		     , CASE WHEN A.NI_CLSF_CD IS NULL THEN
+		                NULL
+		            ELSE
+		                CONCAT('[',A.NI_CLSF_CD,'] ',B.CD_NM)
+		       END                  AS SELFMALL_NI_CLSF_NM /*자사몰정보고시분류명*/
+		     , CASE WHEN A.NI_ITEM_CD IS NULL THEN
+		                NULL
+		            ELSE
+		                CONCAT('[',A.NI_ITEM_CD,'] ',C.CD_NM)
+		       END                  AS SELFMALL_NI_ITEM_NM /*자사몰정보고시항목명*/
+		FROM   TB_EXTMALL_NOTI_INFO A
+		LEFT OUTER JOIN TB_COMMON_CODE B ON A.NI_CLSF_CD = B.CD
+		                                AND B.CD_GB = 'G004'
+		LEFT OUTER JOIN TB_COMMON_CODE C ON A.NI_ITEM_CD = C.CD
+		                                AND C.CD_GB = 'G005'
+		WHERE  A.VENDOR_ID = #{vendorId}
+		ORDER  BY A.EXTMALL_NI_CLSF_CD, A.EXTMALL_NI_ITEM_CD
+	</select>
+	
+</mapper>

+ 265 - 0
style24.admin/src/main/webapp/WEB-INF/views/ocm/ExtmallForm.html

@@ -0,0 +1,265 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : ExtmallForm.html
+ * @desc    : 제휴몰관리 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.11.05   gagamel     최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		
+		<!-- 검색조건 영역 -->
+		<div class="panelStyle">
+			<form id="searchForm" name="searchForm" action="#" th:action="@{'/ocm/extmall/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+				<table class="frmStyle" aria-describedby="검색조건">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th>제휴몰벤더</th>
+						<td>
+							<select name="vendorId">
+								<option value="">[전체]</option>
+								<option th:if="${vendorList}" th:each="oneData, status : ${vendorList}" 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="btnSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
+					</li>
+				</ul>
+			</form>
+		</div>
+		<!-- 검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+			
+			<div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+		
+		<!-- 등록/수정 -->
+		<div class="panelStyle">
+			<form id="detailForm" name="detailForm" action="#" th:action="@{'/ocm/extmall/save'}">
+				<table class="frmStyle" aria-describedby="등록/수정 폼">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th>제휴몰벤더<i class="required" title="필수"></i></th>
+						<td>
+							<select name="vendorId" required="required" data-valid-name="제휴몰벤더">
+								<option value="">[선택]</option>
+								<option th:if="${vendorList}" th:each="oneData, status : ${vendorList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+						</td>
+						
+						<th>제휴몰ID<i class="required" title="필수"></i></th>
+						<td>
+							<input type="text" class="w150" name="extmallId" maxlength="20" required="required" data-valid-name="제휴몰ID"/>
+						</td>
+						<th>제휴몰사용자ID<i class="required" title="필수"></i></th>
+						<td>
+							<input type="text" class="w150" name="extmallUserId" maxlength="20" required="required" data-valid-name="제휴몰사용자ID"/>
+						</td>
+						<th>제휴몰명<i class="required" title="필수"></i></th>
+						<td>
+							<input type="text" name="extmallNm" maxlength="50" required="required" data-valid-name="제휴몰명"/>
+						</td>
+					</tr>
+					<tr>
+						<th>공급업체</th>
+						<td>
+							<select name="supplyCompCd">
+								<option value="">[선택]</option>
+								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+						</td>
+						<th>판매매장코드</th>
+						<td>
+							<input type="text" class="w150" name="sellStoreCd" maxlength="20"/>
+						</td>
+						<th>재고판매비율<i class="required" title="필수"></i></th>
+						<td>
+							<input type="text" class="w100 aR" name="stockSellRate" maxlength="3" required="required" data-valid-type="real" data-valid-name="재고판매비율"/>%
+						</td>
+						<th>가격차이허용율<i class="required" title="필수"></i></th>
+						<td>
+							<input type="text" class="w100 aR" name="priceAcceptRate" maxlength="3" required="required" data-valid-type="real" data-valid-name="가격차이허용율"/>%
+						</td>
+					</tr>
+					<tr>
+						<th>직접회수여부</th>
+						<td colspan="3">
+							<label class="rdoBtn"><input type="radio" name="dwdpYn" value="Y" checked="checked">제휴몰에서 회수<span></span></label>
+							<label class="rdoBtn"><input type="radio" name="dwdpYn" value="N">자사몰에서 회수<span></span></label>
+						</td>
+						<th>사용여부<i class="required" title="필수"></i></th>
+						<td colspan="3">
+							<label class="rdoBtn"><input type="radio" name="useYn" value="Y" checked="checked">Yes<span></span></label>
+							<label class="rdoBtn"><input type="radio" name="useYn" value="N">No<span></span></label>
+						</td>
+					</tr>
+				</table>
+			</form>
+			
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
+					<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+		</div>
+		<!-- 등록/수정 -->
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let vendorList = gagajf.convertToArray([[${vendorList}]]);
+	let supplyCompList = gagajf.convertToArray([[${supplyCompList}]]);
+
+	let columnDefs = [
+// 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+// 		{headerName: "CRUD", field: "crud", width: 75, minWidth: 75, hide: true},
+		{
+			headerName: "제휴몰벤더", field: "vendorId", width: 150, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(vendorList, params.data.vendorId); }
+		},
+		{
+			headerName: "제휴몰ID", field: "extmallId", width: 120, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			}
+		},
+		{headerName: "제휴몰사용자ID", field: "extmallUserId", width: 150, cellClass: 'text-center'},
+		{headerName: "제휴몰명", field: "extmallNm", width: 200},
+		{
+			headerName: "업체", field: "supplyCompCd", width: 150, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(supplyCompList, params.data.supplyCompCd); }
+		},
+		{headerName: "판매매장코드", field: "sellStoreCd", width: 120, cellClass: 'text-center'},
+		{headerName: "재고판매비율(%)", field: "stockSellRate", width: 150, cellClass: 'text-center'},
+		{headerName: "가격차이허용율(%)", field: "priceAcceptRate", width: 150, cellClass: 'text-center'},
+		{
+			headerName: "직접회수여부", field: "dwdpYn", width: 150, cellClass: 'text-center',
+			cellRenderer: function (params) {
+				return params.value == 'Y' ? '제휴몰에서회수' : '자사몰에서회수';
+			}
+		},
+		{
+			headerName: "사용여부", field: "useYn", width: 100, cellClass: 'text-center',
+			cellRenderer: function (params) {
+				return params.value == 'Y' ? 'Yes' : 'No';
+			}
+		}
+	];
+
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// Cell click
+	gridOptions.onCellClicked = function(event) {
+		if (event.colDef.field != 'extmallId')
+			return;
+		
+		$('#detailForm select[name=vendorId]').val(event.data.vendorId);
+		$('#detailForm input[name=extmallId]').val(event.data.extmallId);
+		$('#detailForm input[name=extmallUserId]').val(event.data.extmallUserId);
+		$('#detailForm input[name=extmallNm]').val(event.data.extmallNm);
+		$('#detailForm select[name=supplyCompCd]').val(event.data.supplyCompCd);
+		$('#detailForm input[name=sellStoreCd]').val(event.data.sellStoreCd);
+		$('#detailForm input[name=stockSellRate]').val(event.data.stockSellRate);
+		$('#detailForm input[name=priceAcceptRate]').val(event.data.priceAcceptRate);
+		
+		if (event.data.dwdpYn == 'Y') {
+			$('#detailForm input:radio[name=dwdpYn]').eq(0).trigger('click');
+		} else {
+			$('#detailForm input:radio[name=dwdpYn]').eq(1).trigger('click');
+		}
+		
+		if (event.data.useYn == 'Y') {
+			$('#detailForm input:radio[name=useYn]').eq(0).trigger('click');
+		} else {
+			$('#detailForm input:radio[name=useYn]').eq(1).trigger('click');
+		}
+	}
+
+	// 검색
+	$('#btnSearch').on('click', function() {
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+	});
+	
+	// 신규버튼
+	$('#btnNew').on('click', function() {
+		$("#detailForm")[0].reset();
+	});
+
+	// 저장
+	$("#btnSave").on("click", function() {
+		// 필수값 체크
+		if (!gagajf.validation('#detailForm'))
+			return false;
+
+		mcxDialog.confirm("저장하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				gagajf.ajaxFormSubmit($('#detailForm').prop('action'), '#detailForm', function() {
+					$('#btnNew').trigger('click');
+					$('#btnSearch').trigger('click');
+				});
+			}
+		});
+	});
+	
+	// 엑셀다운로드
+	$('#btnExcel').on('click', function() {
+		gagaAgGrid.exportToExcel('제휴몰 목록', gridOptions);
+	});
+
+	$(document).ready(function() {
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+/*]]>*/
+</script>
+
+</html>

+ 107 - 0
style24.admin/src/main/webapp/WEB-INF/views/ocm/ExtmallNotiinfoForm.html

@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : ExtmallNotiinfoForm.html
+ * @desc    : 제휴몰고시정보관리 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.11.06   gagamel     최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		
+		<!-- 검색조건 영역 -->
+		<div class="panelStyle">
+			<form id="searchForm" name="searchForm" action="#" th:action="@{'/ocm/extmall/notiinfo/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+				<table class="frmStyle" aria-describedby="검색조건">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th>제휴몰벤더</th>
+						<td>
+							<select name="vendorId">
+								<option th:if="${vendorList}" th:each="oneData, status : ${vendorList}" 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="btnSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
+					</li>
+				</ul>
+			</form>
+		</div>
+		<!-- 검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+			
+			<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let vendorList = gagajf.convertToArray([[${vendorList}]]);
+
+	let columnDefs = [
+		{
+			headerName: "제휴몰벤더", field: "vendorId", width: 200, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(vendorList, params.data.vendorId); }
+		},
+		{headerName: "제휴몰고시분류코드", field: "extmallNiClsfCd", width: 200, cellClass: 'text-center'},
+		{headerName: "제휴몰고시분류명", field: "extmallNiClsfNm", width: 200, cellClass: 'text-center'},
+		{headerName: "제휴몰고시항목코드", field: "extmallNiItemCd", width: 200, cellClass: 'text-center'},
+		{headerName: "제휴몰고시항목명", field: "extmallNiItemNm", width: 300},
+		{headerName: "자사몰고시분류", field: "selfmallNiClsfNm", width: 200, cellClass: 'text-center'},
+		{headerName: "자사몰고시항목", field: "selfmallNiItemNm", width: 300}
+	];
+
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 검색
+	$('#btnSearch').on('click', function() {
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+	});
+	
+	// 엑셀다운로드
+	$('#btnExcel').on('click', function() {
+		gagaAgGrid.exportToExcel('제휴몰고시정보 목록', gridOptions);
+	});
+
+	$(document).ready(function() {
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+/*]]>*/
+</script>
+
+</html>