Explorar o código

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

gagamel %!s(int64=5) %!d(string=hai) anos
pai
achega
572d98769a

+ 16 - 0
src/main/java/com/style24/admin/biz/dao/TsaDisplayDao.java

@@ -152,4 +152,20 @@ public interface TsaDisplayDao {
 	 * @since 2021. 1. 15
 	 */
 	Collection<Goods> getGoodsCategoryList(GoodsCategory goodsCategory);
+
+	/**
+	 * 상품별카테고리전시 저장
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 1. 17
+	 */
+	void saveGoodsCategory(GoodsCategory goodsCategory);
+
+	/**
+	 * 상품별카테고리 리스트 조회
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 1. 18
+	 */
+	Collection<GoodsCategory> getGoodsCategoryViewList(String goodsCd);
 }

+ 72 - 0
src/main/java/com/style24/admin/biz/service/TsaDisplayService.java

@@ -3,6 +3,7 @@ package com.style24.admin.biz.service;
 import java.util.Collection;
 
 import com.style24.persistence.domain.*;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.stereotype.Service;
@@ -177,4 +178,75 @@ public class TsaDisplayService {
 	public Collection<Goods> getGoodsCategoryList(GoodsCategory goodsCategory) {
 		return displayDao.getGoodsCategoryList(goodsCategory);
 	}
+
+	/**
+	 * 상품별카테고리전시 저장
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 1. 17
+	 */
+	@Transactional("shopTxnManager")
+	//@CacheEvict(value = "cate", allEntries = true)
+	public void saveGoodsCategory(GoodsCategory goodsCategory) {
+		goodsCategory.setRegNo(TsaSession.getInfo().getUserNo());
+		goodsCategory.setUpdNo(TsaSession.getInfo().getUserNo());
+
+		log.info("[saveGoodsCategory goodsCategory.getGoodsCds()]{}",goodsCategory.getGoodsCds());
+		if(StringUtils.isNotEmpty(goodsCategory.getGoodsCds())){
+			String[] goodsCdArr = goodsCategory.getGoodsCds().split(",");
+			log.info("[saveGoodsCategory goodsCdArr]{}",goodsCdArr);
+			for (String goodsCd : goodsCdArr) {
+				log.info("saveGoodsCategory goodsCd::{}",goodsCd);
+				goodsCategory.setGoodsCd(goodsCd);
+				int cnt = 0;
+				for (String cateCd : goodsCategory.getCateCdArr()) {
+					log.info("saveGoodsCategory cateCd::{}",cateCd);
+					if(StringUtils.isNotEmpty(cateCd)){
+						goodsCategory.setCateCd(cateCd);
+						goodsCategory.setCateGb(goodsCategory.getCateGbArr()[cnt]);
+						goodsCategory.setCateType(goodsCategory.getCateTypeArr()[cnt]);
+						displayDao.saveGoodsCategory(goodsCategory);
+
+						if(!"G031_20".equals(goodsCategory.getCateType())){
+							if(StringUtils.isNotEmpty(goodsCategory.getCateCd3Arr()[cnt])){
+								String[] cate3Array = goodsCategory.getCateCd3Arr()[cnt].split(",");
+								if(cate3Array[1].equals("N")){
+									goodsCategory.setCateCd(cate3Array[0]);
+									displayDao.saveGoodsCategory(goodsCategory);
+								}
+							}
+
+							if(StringUtils.isNotEmpty(goodsCategory.getCateCd2Arr()[cnt])){
+								String[] cate2Array = goodsCategory.getCateCd2Arr()[cnt] .split(",");
+								if(cate2Array[1].equals("N")){
+									goodsCategory.setCateCd(cate2Array[0]);
+									displayDao.saveGoodsCategory(goodsCategory);
+								}
+							}
+
+							if(StringUtils.isNotEmpty(goodsCategory.getCateCd1Arr()[cnt])){
+								String[] cate1Array = goodsCategory.getCateCd1Arr()[cnt] .split(",");
+								if(cate1Array[1].equals("N")){
+									goodsCategory.setCateCd(cate1Array[0]);
+									displayDao.saveGoodsCategory(goodsCategory);
+								}
+							}
+						}
+					}
+					cnt++;
+				}
+			}
+		}
+	}
+
+	/**
+	 * 상품별카테고리 리스트 조회
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 1. 18
+	 */
+	public Collection<GoodsCategory> getGoodsCategoryViewList(String goodsCd) {
+		return displayDao.getGoodsCategoryViewList(goodsCd);
+	}
+
 }

+ 28 - 7
src/main/java/com/style24/admin/biz/web/TsaDisplayController.java

@@ -9,12 +9,7 @@ import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.*;
 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.PathVariable;
-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.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.style24.admin.biz.service.TsaDisplayService;
@@ -190,7 +185,7 @@ public class TsaDisplayController extends TsaBaseController {
 
 	/**
 	 * 카테고리 목록 화면(팝업)
-	 * @param Category
+	 * @param category
 	 * @return
 	 * @author xyzp1539
 	 * @since 2021. 01. 11
@@ -267,4 +262,30 @@ public class TsaDisplayController extends TsaBaseController {
 		return result;
 	}
 
+	/**
+	 * 상품별카테고리전시 저장
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 1. 17
+	 */
+	@PostMapping("/goods/category/save")
+	@ResponseBody
+	public GagaResponse saveGoodsCategory(@RequestBody GoodsCategory goodsCategory) {
+		log.info("[Controller saveGoodsCategory]{}",goodsCategory);
+		displayService.saveGoodsCategory(goodsCategory);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
+	/**
+	 * 상품별카테고리 리스트 조회
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 1. 18
+	 */
+	@GetMapping("/goods/category/view/list")
+	@ResponseBody
+	public Collection<GoodsCategory> getGoodsCategoryViewList(@RequestParam(value = "goodsCd")String goodsCd) {
+		return displayService.getGoodsCategoryViewList(goodsCd);
+	}
+
 }

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

@@ -563,7 +563,7 @@
 	</select>
 
 	<!-- 상품별카테고리전시관리 목록 조회 -->
-	<select id="getGoodsCategoryList" parameterType="GoodsCategory" resultType="Goods">
+	<select id="getGoodsCategoryList" parameterType="GoodsCategory" resultType="GoodsCategory">
 		SELECT	Z.*
 		FROM	(
 			SELECT	@rownum := @rownum + 1 AS RNUM
@@ -572,7 +572,8 @@
 					ELSE (SELECT NVL(SUM(CURR_STOCK_QTY), 0) - NVL(SUM(BASE_STOCK_QTY), 0) AS CURR_STOCK_QTY FROM VW_STOCK WHERE GOODS_CD = A.GOODS_CD)
 					END AS CURR_STOCK_QTY
 			FROM	(
-				SELECT	G.GOODS_CD
+				SELECT	'카테고리확인' AS FULL_CATE_NM
+						, G.GOODS_CD
 						, G.GOODS_NM
 						, G.DC_RATE
 						, G.TAG_PRICE
@@ -738,4 +739,44 @@
 			</choose>
 		</if>
 	</sql>
+
+	<!-- 상품별카테고리전시 저장 -->
+	<insert id="saveGoodsCategory" parameterType="GoodsCategory">
+		/* TsaDisplay.saveGoodsCategory */
+		INSERT INTO TB_CATE_GOODS(
+					CATE_NO
+					,GOODS_CD
+					,DISP_ORD
+					,REG_NO
+					,REG_DT
+				)
+				VALUES (
+				    #{cateCd}
+				    ,#{goodsCd}
+				    ,(SELECT	NVL((MAX(DISP_ORD) + 1), 1) AS DISP_ORD
+				        FROM	TB_CATE_GOODS ALIAS_FOR_SUBQUERY
+				        WHERE   CATE_NO = #{cateCd})
+				    ,#{regNo}
+				    ,NOW()
+				)
+				ON DUPLICATE KEY UPDATE
+					 REG_NO = #{regNo}
+					,REG_DT = NOW()
+	</insert>
+
+	<select id="getGoodsCategoryViewList" parameterType="String" resultType="GoodsCategory">
+		SELECT CONCAT(FN_GET_CODE_NM('G032', B.CATE_GB ), ' > ',B.FULL_CATE_NM ) AS FULL_CATE_NM
+			 , A.CATE_NO AS CATE_CD
+			 , B.CATE_TYPE
+			 , A.GOODS_CD
+			 , B.CATE1_NO AS CATE_CD1
+			 , B.CATE2_NO AS CATE_CD2
+			 , B.CATE3_NO AS CATE_CD3
+			 , B.CATE4_NO AS CATE_CD4
+		FROM TB_CATE_GOODS A
+		   , TB_CATE_4SRCH B
+		WHERE A.CATE_NO = B.LEAF_CATE_NO
+		  AND A.GOODS_CD = #{goodsCd}
+		ORDER BY B.CATE_TYPE, A.CATE_NO, B.DISP_ORD
+	</select>
 </mapper>

+ 49 - 6
src/main/webapp/WEB-INF/views/business/BrandForm.html

@@ -135,9 +135,15 @@
 					<tr>	
 						<th>공급업체<i class="required" title="필수"></i></th>
 						<td>
-							<select name="supplyCompCd" required="required" data-valid-name="공급업체">
+
+<!-- 							<select name="supplyCompCd" required="required" data-valid-name="공급업체">
 								<option value="">[선택]</option>
 							</select>
+ -->							
+							<input type="text" class="w100" name="searchTxt" id="searchTxt" maxlength="20" />
+							<button type="button" class="btn icn" id="btnSearchSupplyComp"><i class="fa fa-search"></i></button>
+							<input type="text" class="w100" name="supplyCompNm" readonly="readonly"/>
+							<input type="hidden" class="w100" name="supplyCompCd" />
 						</td>
 						<th>유통구분<i class="required" title="필수"></i></th>
 						<td>
@@ -339,7 +345,9 @@
 		$("#detailForm input[name=brandGrpNm]").val(event.data.brandGrpNm);
 		$("#detailForm input[name=erpBrandCd]").val(event.data.erpBrandCd);
 		$("#detailForm select[name=distributionGb]").val(event.data.distributionGb);
-		fnGetSupplyCompCdList(event.data.supplyCompCd, event.data.delvFeeCd);
+		$("#detailForm input[name=supplyCompCd]").val(event.data.supplyCompCd);
+		$("#detailForm input[name=supplyCompNm]").val(event.data.supplyCompNm);
+		//fnGetSupplyCompCdList(event.data.supplyCompCd, event.data.delvFeeCd);
 		
 		// 출고처 정보
 		$.getJSON('/renderer/delvloc/list/' + event.data.supplyCompCd
@@ -354,6 +362,9 @@
 			}
 		);
 		
+		// 배송비 정책
+		cfnCreateCombo('/renderer/delvFee/list/' + event.data.supplyCompCd, $('#detailForm select[name=delvFeeCd]'), "[선택]", event.data.delvFeeCd);
+		
 		$("#detailForm input[name=delvFee]").val(Number(event.data.delvFee).addComma());
 		$("#detailForm input[name=minOrdAmt]").val(Number(event.data.minOrdAmt).addComma());
 		$("#detailForm input[name=sellFeeRate]").val(event.data.sellFeeRate);
@@ -415,7 +426,7 @@
 	$('#detailForm select[name=brandGb]').on('change', function() {
 		// 구매포인트적립율 설정
 		fnSetPntRate($(this).val());
-		
+/*		
 		$.getJSON('/renderer/supply/company/list/' + $(this).val()
 			, function(result, status) {
 				$('#detailForm select[name=supplyCompCd]').empty().append('<option value="">[선택]</option>');
@@ -425,10 +436,11 @@
 				});
 				$('#detailForm select[name=supplyCompCd]').trigger('change');
 			});
+*/			
 	});
 	
 	// 공급업체 변경 시
-	$('#detailForm select[name=supplyCompCd]').on('change', function() {
+/*	$('#detailForm select[name=supplyCompCd]').on('change', function() {
 		if (gagajf.isNull($(this).val())) {
 			$('#detailForm select[name=delvLocCd]').empty().append('<option value="">[선택]</option>');
 			return;
@@ -463,9 +475,9 @@
 			
 		});
 	});
-	
+*/	
 	// 해당공급업체 조회
-	var fnGetSupplyCompCdList = function(supplyCompCd, delvFeeCd){
+/*	var fnGetSupplyCompCdList = function(supplyCompCd, delvFeeCd){
 		$.getJSON('/renderer/supply/company/list/' + $('#detailForm select[name=brandGb]').val()
 			, function(result, status) {
 				$('#detailForm select[name=supplyCompCd]').empty().append('<option value="">[선택]</option>');
@@ -478,7 +490,37 @@
 		
 		cfnCreateCombo('/renderer/delvFee/list/' + supplyCompCd, $('#detailForm select[name=delvFeeCd]'), "[선택]", delvFeeCd);
 	}
+*/	
+	// 공급업체 선택시
+	$('#btnSearchSupplyComp').on('click', function() {
+/*
+		if (gagajf.isNull($("#detailForm input[name=searchTxt]").val())){
+			mcxDialog.alert('공급업체 검색어를 입력하세요.');
+			return false;
+		}
+*/		
+		cfnOpenCompanyListPopup('fnSetSupplyCompInfo', 'S', $("#detailForm input[name=searchTxt]").val());
+		
+	});
 	
+	// 공급업체 조회 팝업에서 호출
+	var fnSetSupplyCompInfo = function(result) {
+		$("#detailForm input[name=supplyCompCd]").val(result[0].supplyCompCd);
+		$("#detailForm input[name=supplyCompNm]").val(result[0].supplyCompNm);
+		
+		// 출고처 정보
+		$.getJSON('/renderer/delvloc/list/' + result[0].supplyCompCd
+			, function(delvLocList, status) {
+				$('#detailForm select[name=delvLocCd]').empty().append('<option value="">[선택]</option>');
+				$.each(delvLocList, function(idx, item) {
+					var optionHtml = '<option value="' + item.cd + '">[' + item.cd + '] '+ item.cdNm + '</option>\n';
+					$('#detailForm select[name=delvLocCd]').append(optionHtml);
+				});
+			}
+		);
+		
+		cfnCreateCombo('/renderer/delvFee/list/' + result[0].supplyCompCd, $('#detailForm select[name=delvFeeCd]'), "[선택]");
+	}
 	
 	// 브랜드담당MD 목록
 	var fnGetBrandMdList = function(brandCd) {
@@ -645,6 +687,7 @@
 		$("#detailForm select[name=brandGb]").trigger('change');
 		$("#detailForm select[name=brandGb]").removeAttr("disabled");
 		$('#detailForm select[name=delvLocCd]').empty().append('<option value="">[선택]</option>');
+		$('#detailForm select[name=delvFeeCd]').empty().append('<option value="">[선택]</option>');
 		
 		$("#detailForm input[type=checkbox]").removeClass("checked");
 		$("#detailForm input[type=checkbox]").parent("label").removeClass("checked");

+ 143 - 25
src/main/webapp/WEB-INF/views/display/GoodsCategoryForm.html

@@ -215,30 +215,29 @@
 				</tr>
 				<th:block th:each="num, index  : ${#numbers.sequence(1,4)}">
 					<tr>
-						<input type="hidden" name="selLvl" th:id="selLvl_+${num}"/>
 						<td>
-							<select name="cateGb" th:id="selCate1_+${num}" th:idx="${num}" th:onchange="|fnChangeSelect($(this).val(), ${num}, 1);|">
+							<select th:id="selCate+${num}+1" th:onchange="|fnChangeSelect($(this).val(), ${num}, 1);|">
 								<option value="">[선택]</option>
 								<option th:if="${cateGbList}" th:each="oneData, status : ${cateGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 						<td>
-							<select name="cate1No" th:id="selCate2_+${num}" th:onchange="|fnChangeSelect($(this).val(), ${num}, 2);|">
+							<select name="cateCd1Arr" th:id="selCate+${num}+2" th:onchange="|fnChangeSelect($(this).val(), ${num}, 2);|">
 								<option value="">[선택]</option>
 							</select>
 						</td>
 						<td>
-							<select name="cate2No" th:id="selCate3_+${num}" th:onchange="|fnChangeSelect($(this).val(), ${num}, 3);|">
+							<select name="cateCd2Arr" th:id="selCate+${num}+3" th:onchange="|fnChangeSelect($(this).val(), ${num}, 3);|">
 								<option value="">[선택]</option>
 							</select>
 						</td>
 						<td>
-							<select name="cate3No" th:id="selCate4_+${num}" th:onchange="|fnChangeSelect($(this).val(), ${num}, 4);|">
+							<select name="cateCd3Arr" th:id="selCate+${num}+4" th:onchange="|fnChangeSelect($(this).val(), ${num}, 4);|">
 								<option value="">[선택]</option>
 							</select>
 						</td>
 						<td>
-							<select name="cate4No" th:id="selCate5_+${num}" th:onchange="|fnChangeSelect($(this).val(), ${num}, 5);|">
+							<select name="cateCd4Arr" th:id="selCate+${num}+5" th:onchange="|fnChangeSelect($(this).val(), ${num}, 5);|">
 								<option value="">[선택]</option>
 							</select>
 							<input type="hidden" th:id='cateCd+${num}' name='cateCdArr' value='' />
@@ -249,20 +248,49 @@
 					</tr>
 				</th:block>
 			</table>
+			<ul class="panelBar">
+				<li class="center">
+					<button type="button" class="btn btn-default btn-lg" id="btnCateInit">초기화</button>
+					<button type="button" class="btn btn-success btn-lg" id="btnCateSave">전시저장</button>
+					<input type="hidden" id='goodsCds' name='goodsCds' value='' />
+					<input type="hidden" name='selLvl' value='' />
+					<input type="hidden" name='cateIndex' value='' />
+				</li>
+			</ul>
 		</form>
 	</div>
 
+	<!-- 카테고리 리스트 영역 -->
+	<div class="panelStyle">
+		<form id="deleteForm" name="deleteForm" action="#" th:action="@{'/display/goods/category/delete'}">
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-danger btn-lg" id="btnCateDelete">전시삭제</button>
+					<input type="hidden" name='goodsCd' value='' />
+				</li>
+			</ul>
+			<div id="gridCategoryList" style="width: 100%; height: 500px;" class="ag-theme-balham"></div>
+		</form>
+	</div>
+	<!-- //카테고리 리스트 영역 -->
+
 
 	<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
 	<script th:inline="javascript">
 		/*<![CDATA[*/
 		var goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
+		var cateGbList = gagajf.convertToArray([[${cateGbList}]]);
 		var columnDefs = [];
 		columnDefs = [
 			{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 			{headerName: 'No', width: 60, cellClass: 'text-center',
 				valueGetter: function(params) { return cfnGridNumner('goodsSearchForm',params.node.rowIndex, 'A');}
 			},
+			{headerName: "카테고리", field: "fullCateNm", width: 140, cellClass: 'text-center'
+				,cellRenderer: function(params) {
+					return '<a href="javascript:void(0);">'+params.value+'</a>';
+				}
+			},
 			{headerName: "이미지", field: "sysImgNm", width: 100, height: 60, cellClass: 'text-center'
 				,cellRenderer: function(params) {
 					return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
@@ -297,16 +325,40 @@
             }*/
 		];
 
+		var columCategoryDefs = [
+			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+			{headerName: "자동전시카테고리코드", field: "cateCd", width: 150, cellClass: 'text-center'},
+			{headerName: "자동전시카테고리", field: "fullCateNm", width: 400, cellClass: 'text-left'}
+		];
+
 		// Get GridOptions
 		var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+		var gridCategoryOptions = gagaAgGrid.getGridOptions(columCategoryDefs);
 
 		// 중복 선택 가능
 		gridOptions.rowSelection = 'multiple';
 		gridOptions.suppressRowClickSelection = true;
 		gridOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
-
 		gridOptions.stopEditingWhenGridLosesFocus = true;
 
+		gridCategoryOptions.rowSelection = 'multiple';
+		gridCategoryOptions.suppressRowClickSelection = true;
+
+		gridOptions.onCellClicked = function(event) {
+			if(event.colDef.field == "fullCateNm"){
+				$('#deleteForm input[name=goodsCd]').val(event.data.goodsCd);
+				fnDisplayCategorySearch();
+				$(window).scrollTop($(window).height());
+			}
+		}
+
+		// 상품별 전시카테고리 조회
+		var fnDisplayCategorySearch = function(){
+			var goodsCd = $('#deleteForm input[name=goodsCd]').val();
+			var actionUrl = "/display/goods/category/view/list?goodsCd=" + goodsCd;
+			gagaAgGrid.fetch(actionUrl, gridCategoryOptions);
+		}
+
 		// 조회
 		$('#btnSearch').on('click', function() {
 			if(gagajf.isNull($("#goodsSearchForm select[name=supplyCompCd]").val())
@@ -348,9 +400,6 @@
 
 		// 카테고리 selectBox 변경
 		var fnChangeSelect = function(val, cateIndex, selLvl){
-			console.log('val:::'+val);
-			console.log('cateIndex:::'+cateIndex);
-			console.log('selLvl:::'+selLvl);
 			$("#cateCd"+cateIndex).val('');
 			$("#cateGb"+cateIndex).val('');
 			$("#leafYn"+cateIndex).val('');
@@ -365,8 +414,8 @@
 				} else {
 					//selLvl = 1;
 					var html = '<option value="">[선택]</option>';
-					for(var i=1; i<5; i++){
-						$("#selCate"+i+'_'+cateIndex).html(html);
+					for(var i=2; i<6; i++){
+						$("#selCate"+cateIndex+''+i).html(html);
 					}
 					return;
 				}
@@ -374,14 +423,15 @@
 				$("#cateCd"+cateIndex).val(val.split(',')[0]);
 				$("#leafYn"+cateIndex).val(val.split(',')[1]);
 			}
-			$("#goodsCateForm input[name=selLvl]").val(selLvl);
+			$("#goodsCateForm input[name=selLvl]").val(selLvl+1);
 			$("#goodsCateForm input[name=cateIndex]").val(cateIndex);
 
-			var cateGb = $('#selCate1_'+cateIndex).val();
-			var cate1No = $('#selCate2_'+cateIndex).val().split(',')[0];
-			var cate2No = $('#selCate3_'+cateIndex).val().split(',')[0];
-			var cate3No = $('#selCate4_'+cateIndex).val().split(',')[0];
-			var cate4No = $('#selCate5_'+cateIndex).val().split(',')[0];
+			var cateGb = $('#selCate'+cateIndex+'1').val();
+			var cate1No = $('#selCate'+cateIndex+'2').val().split(',')[0];
+			var cate2No = $('#selCate'+cateIndex+'3').val().split(',')[0];
+			var cate3No = $('#selCate'+cateIndex+'4').val().split(',')[0];
+			var cate4No = $('#selCate'+cateIndex+'5').val().split(',')[0];
+
 			$("#cateGb"+cateIndex).val(cateGb);
 			if(selLvl==5 || (val=='' && selLvl==4)){
 				return;
@@ -401,26 +451,28 @@
 		}
 
 		var fnChangeCate = function(data){
-			console.log('hereeeeeeeeeeeee');
-			/*
-			var selLvl = $("#saveForm input[name=selLvl]").val();
-			var cateIndex = $("#saveForm input[name=cateIndex]").val();
+			var selLvl = $("#goodsCateForm input[name=selLvl]").val();
+			var cateIndex = $("#goodsCateForm input[name=cateIndex]").val();
 			var html = '<option value="">[선택]</option>';
-			for(var i=1; i<6; i++){
+
+			for(var i=0; i<6; i++){
+				i = i+1;
 				if(i>selLvl){
 					$("#selCate"+cateIndex+''+i).html(html);
 				}
 			}
+
 			for(var i=0; i<data.length; i++){
 				var cd = '';
 				var nm = '';
 				var leafYn = '';
+
 				if(data[i].useYn=='Y'){
 					if(selLvl=='1'){
 						cd = data[i].cateGb;
 						nm = gagaAgGrid.lookupValue(cateGbList, cd);
 					}else{
-						cd = data[i].cateCd;
+						cd = data[i].cateNo;
 						nm = data[i].cateNm;
 						leafYn = ','+data[i].leafYn;
 						$("#cateType"+cateIndex).val(data[i].cateType);
@@ -429,13 +481,79 @@
 				}
 			}
 			$("#selCate"+cateIndex+''+selLvl).html(html);
-			*/
 		}
 
+		// 카테고리 저장
+		$("#btnCateSave").on('click', function() {
+			var data = gridOptions.api.getSelectedRows();
+			if(data.length == 0){
+				mcxDialog.alert('상품을 선택하세요.');
+				return false;
+			}
+
+			var msgArr = ['', '첫 번째', '두 번째', '세 번째', '네 번째'];
+			var cateCdBool = false;
+
+			for(var i=1; i<5; i++){
+				if($("#cateCd"+i).val()!=''){
+					cateCdBool = true;
+					if($("#leafYn"+i).val()!='Y'){
+						mcxDialog.alert(msgArr[i]+' 행의 leaf카테고리를 선택하세요.');
+						return;
+					}
+				}else if($("#cateGb"+i).val()!=''){
+					mcxDialog.alert(msgArr[i]+' 행의 leaf카테고리를 선택하세요.');
+					return;
+				}
+			}
+			if(!cateCdBool){
+				mcxDialog.alert('전시할 카테고리를 선택하세요.');
+				return;
+			}
+			var goodsCdS = '';
+			data.forEach(function(row){
+				if (goodsCdS!=''){
+					goodsCdS += ','
+				}
+				goodsCdS += row.goodsCd;
+			});
+			$("#goodsCds").val(goodsCdS);
+
+			mcxDialog.confirm('저장하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function(){
+					gagajf.ajaxFormSubmit($('#goodsCateForm').prop('action'), "#goodsCateForm", fnGoodsCateSaveCallBack);
+				}
+			});
+		});
+
+		var fnGoodsCateSaveCallBack = function(){
+			console.log('save success@');
+			$('#btnCateInit').click();
+		};
+
+		// 검색조건 초기화
+		$('#btnCateInit').on('click', function() {
+			$("#goodsCateForm")[0].reset();
+			var html = '<option value="">[선택]</option>';
+			for(var i=2; i<5; i++){
+				for(var j=1; j<5; j++){
+					$("#selCate"+j+''+i).html(html);
+				}
+			}
+			for(var i=1; i<5; i++){
+				$("#cateCd"+i).val('');
+				$("#cateGb"+i).val('');
+				$("#leafYn"+i).val('');
+			}
+		});
+
 		$(document).ready(function() {
 			cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '기간', 'X');
 			// Create a agGrid
 			gagaAgGrid.createGrid('gridList', gridOptions);
+			gagaAgGrid.createGrid('gridCategoryList', gridCategoryOptions);
 		});
 
 		/*]]>*/

+ 2 - 2
src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -1079,10 +1079,10 @@
 	// 브랜드 조회 선택시
 	$('#btnSearchBrand').on('click', function() {
 
-		if (gagajf.isNull($("#searchForm input[name=searchTxt]").val())){
+		/* if (gagajf.isNull($("#searchForm input[name=searchTxt]").val())){
 			mcxDialog.alert('브랜드 검색어를 입력하세요.');
 			return false;
-		}
+		} */
 		
 		cfnOpenBrandListPopup('fnSetBrandInfo', 'S', $("#searchForm input[name=searchTxt]").val());