Forráskód Böngészése

상품 대표 색상 탭 추가

eskim 5 éve
szülő
commit
0b9291bc24

+ 10 - 0
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java

@@ -197,6 +197,16 @@ public interface TsaGoodsDao {
 	 */
 	Collection<GoodsCompose> getGoodsDetailComposeList(Goods goods);
 
+	/**
+	 * 같은 품번 상품목록
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 03
+	 */
+	Collection<Goods> getGoodsNumGoodsList(Goods goods);
+
 	/**
 	 * 상품 기본 정보 이력 생성
 	 *

+ 14 - 1
style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -345,7 +345,8 @@ public class TsaGoodsService {
 		Goods resultGoods = goodsDao.getGoods(goods);
 
 		// 상품 상세
-		return this.getGoodsDesc(resultGoods);
+		this.getGoodsDesc(resultGoods);
+		return resultGoods;
 	}
 
 	/**
@@ -455,6 +456,18 @@ public class TsaGoodsService {
 		return goodsDao.getGoodsDetailComposeList(goods);
 	}
 
+	/**
+	 * 같은 품번 상품목록
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 03
+	 */
+	public Collection<Goods> getGoodsNumGoodsList(Goods goods) {
+		return goodsDao.getGoodsNumGoodsList(goods);
+	}
+
 
 	/**
 	 * 상품 수정 항목 일괄변경

+ 14 - 1
style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -544,7 +544,6 @@ public class TsaGoodsController extends TsaBaseController {
 	/**
 	 * 상품 상세 화면
 	 *
-	 * @param mode - 모드(U:수정)
 	 * @param goodsCode - 상품코드
 	 * @return
 	 * @author eskim
@@ -686,6 +685,20 @@ public class TsaGoodsController extends TsaBaseController {
 		return goodsService.getGoodsDetailComposeList(goods);
 	}
 
+	/**
+	 * 같은 품번 상품목록
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 03
+	 */
+	@GetMapping("/detail/goodsNum/list")
+	@ResponseBody
+	public Collection<Goods> getGoodsNumGoodsList(Goods goods) {
+		return goodsService.getGoodsNumGoodsList(goods);
+	}
+
 	/**
 	 * 상품 상세 저장
 	 *

+ 1 - 0
style24.admin/src/main/java/com/style24/persistence/domain/Goods.java

@@ -26,6 +26,7 @@ public class Goods extends TscBaseDomain {
 	private String goodsSnm;		//상품검색명
 	private String goodsSnm1;		//상품검색명1(사용자등록용)
 	private String colorCd;		//색상코드
+	private String mainColorYn;		//대표색상여부
 	private String styleYear;		//스타일연도
 	private String seasonCd;		//시즌코드(공통코드G006)
 	private String sexGb;		//성별구분(공통코드G007)

+ 1 - 0
style24.admin/src/main/java/com/style24/persistence/domain/GoodsHst.java

@@ -23,6 +23,7 @@ public class GoodsHst extends TscBaseDomain {
 	private String goodsSnm;		//상품검색명
 	private String goodsSnm1;		//상품검색명1(사용자등록용)
 	private String colorCd;		//색상코드
+	private String mainColorYn;		//대표색상여부
 	private String styleYear;		//스타일연도
 	private String seasonCd;		//시즌코드(공통코드G006)
 	private String sexGb;		//성별구분(공통코드G007)

+ 20 - 0
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -697,6 +697,7 @@
 		     , G.SEX_GB
 		     , G.GOODS_NUM
 		     , G.COLOR_CD
+		     , G.MAIN_COLOR_YN
 		     , G.GOODS_TYPE
 		     , G.LIST_PRICE
 		     , G.CURR_PRICE
@@ -813,6 +814,7 @@
 		      , GOODS_SNM
 		      , GOODS_SNM1
 		      , COLOR_CD
+		      , MAIN_COLOR_YN
 		      , STYLE_YEAR
 		      , SEASON_CD
 		      , SEX_GB
@@ -865,6 +867,7 @@
 		     , GOODS_SNM           
 		     , GOODS_SNM1          
 		     , COLOR_CD            
+		     , MAIN_COLOR_YN
 		     , STYLE_YEAR          
 		     , SEASON_CD           
 		     , SEX_GB              
@@ -1526,6 +1529,23 @@
 		      </if>
 	</update>
 	
+	<!-- 같은 품번 상품목록  -->
+	<select id="getGoodsNumGoodsList" parameterType="Goods" resultType="Goods">
+		/* TsaGoods.getGoodsNumGoodsList */
+		SELECT G.GOODS_CD
+		     , G.GOODS_NM
+		     , G.COLOR_CD
+		     , G.MAIN_COLOR_YN
+		     , G.GOODS_NUM
+		     , G.GOODS_STAT
+		     , GI.IMG_PATH1
+		     , GI.IMG_PATH6
+		     , GI.IMG_TYPE
+		FROM TB_GOODS G
+		LEFT OUTER JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		WHERE GOODS_NUM = (SELECT GOODS_NUM FROM TB_GOODS TG WHERE GOODS_CD = #{goodsCd})
+	</select>
+	
 	<!-- 상품코드 생성 -->
 	<insert id="createGoodsSequence" parameterType="Goods">
 		/* TsaGoods.createGoodsSequence */

+ 82 - 17
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -396,27 +396,17 @@
 							<!-- //TAB4 CONTENTS AREA -->
 						</li>
 						<!-- //TAB4 : 고시정보 -->
-						<!-- TAB5 : 코디정보 -->
+						<!-- TAB5 : 대표색상정보 -->
 						<li class="tab" id="goodstab5">
 							<!-- TAB6 CONTENTS AREA -->
 							<div class="panelStyle">
 								<!-- 내용 삽입 -->
-								<ul class="panelBar">
-									<li class="left">
-										<button type="button" class="btn btn-danger btn-lg" id="btnCodiGoodsDelete">삭제</button>
-									</li>
-									<li class="right">
-										<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF003');">양식다운로드</button>
-										<button type="button" class="btn btn-success btn-lg" id="btnCodiGoodsExcel">엑셀조회</button>
-										<button type="button" class="btn btn-base btn-lg" onclick="fnOpenCodiGoodsPopup()">상품조회</button>
-									</li>
-								</ul>
-								<div id="gridGoodsCodiList" style="height: 480px;" class="ag-theme-balham lh60"></div>
+								<div id="gridGoodsNumList" style="height: 480px;" class="ag-theme-balham lh60"></div>
 								<!-- 내용 삽입 -->
 							</div>
 							<!-- //TAB6 CONTENTS AREA -->
 						</li>
-						<!-- //TAB5 : 코디정보 -->
+						<!-- //TAB5 : 대표색상정보 -->
 						<!-- TAB6 : 구성상품 -->
 						<li class="tab" id="goodstab6">
 							<!-- TAB6 CONTENTS AREA -->
@@ -467,7 +457,7 @@
 			</div>	<!--  class=panelContent -->
 		</div>	<!--  class=panelStyle -->
 	</div> <!--  class=modalPopup -->
-<script type="text/javascript" src="/ux/plugins/summernote/summernote.js"></script>
+<script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020102902"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
 
@@ -478,6 +468,7 @@
 	var authBrandList = [[${authBrandList}]];
 	var useYnList = gagajf.convertToArray([[${useYnList}]]);
 	var goodsTypeList = gagajf.convertToArray([[${goodsTypeList}]]);
+	var colorList = gagajf.convertToArray([[${colorList}]]);
 	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
 	// Get a SmartEditor options
 	//var seOptions = gagaSe.getEditorOptions();
@@ -593,6 +584,47 @@
 		{headerName: "수정자", field: "updNm", width: 100, cellClass: 'text-center'}
 	];
 	
+	// specify the columns - 같은 품번 상품
+	var columnGoodsNumDefs = [
+		{headerName: "CRUD", field: "crud", width: 75, minWidth: 75, hide: true},
+		//{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
+		{headerName: "이미지", field: "imgPath1", width: 100, height: 60, cellClass: 'text-center'
+			,cellRenderer: function(params) {
+				if (params.data.imgType == "G030_A"){
+					if(!gagajf.isNull(params.data.imgPath6)){
+						return '<img width="60" src="'+ params.data.imgPath1 + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
+					}else{
+						return '<img width="60" src="'+ params.value + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
+					}	
+						
+				}else{
+					if(!gagajf.isNull(params.data.imgPath6)){
+						return '<img width="60" src="'+ uploadGoodsUrl+params.data.imgPath6 + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
+					}else{
+						return '<img width="60" src="'+ uploadGoodsUrl+params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
+					}
+				}
+			}
+		},
+		{headerName: "상품코드", field: "goodsCd" , width: 130, cellClass: 'text-center'},
+		{headerName: "상품코드명", field: "goodsNm" , width: 200, cellClass: 'text-left'},
+		{headerName: "색상", field: "colorCd" , width: 100, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(colorList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(colorList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(colorList, params.newValue); }
+		},
+		{headerName: "대표색상여부", field: "mainColorYn", width: 120, cellClass: 'text-center',editable: true,
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(useYnList), required: true },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(useYnList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(useYnList, params.newValue); }
+		},
+		{headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
+		}
+	];
 	
 
 	// Get GridOptions
@@ -600,14 +632,19 @@
 	gridGoodsHstoryOptions.enableBrowserTooltips = true;
 	var gridGoodsComposeOptions = gagaAgGrid.getGridOptions(columnGoodsComposeDefs);
 	gridGoodsComposeOptions.enableBrowserTooltips = true;
+	var gridGoodsNumOptions = gagaAgGrid.getGridOptions(columnGoodsNumDefs);
+	gridGoodsNumOptions.enableBrowserTooltips = true;
+	
 	// 드래그
 	gridGoodsComposeOptions.suppressRowClickSelection = true;
 	gridGoodsComposeOptions.rowDragManaged = true;
 	//gridGoodsComposeOptions.rowDeselection = true;
 	//gridGoodsComposeOptions.enableMultiRowDragging = true;
 	//gridGoodsComposeOptions.rowSelection = 'multiple';
+	gridGoodsNumOptions.suppressRowClickSelection = true;
 	
 	gridGoodsComposeOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
+	gridGoodsNumOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
 	
 	//기준여부 표시
 	gridGoodsComposeOptions.getRowStyle = function(params) {
@@ -615,7 +652,7 @@
 			return { background: '#1ab394' };
 		}
 	}
-
+	
 	// 상품상세 조회
 	var fnGoodsDeailSearch = function() {
 
@@ -850,7 +887,8 @@
 			fnGoodsDetailSizeStockSearch(params);
 			//정보고시
 			fnGoodsDetailNotiInfoSearch(params);
-			
+			//대표색상
+			fnGoodsDetailGoodsNumSearch(params);
 			
 			//구성상품
 			if ("G056_S" == result.goodsType || "G056_D" == result.goodsType){
@@ -892,6 +930,11 @@
 		gagaAgGrid.fetch("/goods/detail/compose/list?goodsCd=" + params.goodsCd , gridGoodsComposeOptions);
 	}	
 	
+	//같은 품번 상품
+	var fnGoodsDetailGoodsNumSearch = function(params) {
+		gagaAgGrid.fetch("/goods/detail/goodsNum/list?goodsCd=" + params.goodsCd , gridGoodsNumOptions);
+	}
+	
 	//이력
 	var fnGoodsDetailHstSearch = function() {
 		gagaAgGrid.fetch("/goods/detail/hst/list?goodsCd=" + $('#goodsDetailForm input[name=goodsCd]').val() , gridGoodsHstoryOptions);
@@ -1139,8 +1182,10 @@
 					}
 					idx++;
 				});
-	
 			}
+			
+			
+			
 		}
 
 		if(optCheck) {
@@ -1447,7 +1492,26 @@
 		if(optCheck) {
 			return false;
 		}
+		
+		// 대표 색상 
+		var goosNumAllData = gagaAgGrid.getAllRowData(gridGoodsNumOptions);
+		var mainColorCnt = 0;
+
+		$.each(goosNumAllData, function(index, item) {
+			if (item.mainColorYn == "Y"){
+				mainColorCnt++;
+			}
+		});
+		if (mainColorCnt <= 0 || mainColorCnt > 1){
+			optCheck = true;
+			mcxDialog.alertC("대표 색상 여부를 확인해 주세요.");
+			return false;
+		}
 
+		if(optCheck) {
+			return false;
+		}
+		
 		var dcRate = 0;
 		var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
 		var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
@@ -1869,6 +1933,7 @@
 
 		gagaAgGrid.createGrid('gridGoodsHstoryList', gridGoodsHstoryOptions);
 		gagaAgGrid.createGrid('gridGoodsComposeList', gridGoodsComposeOptions);
+		gagaAgGrid.createGrid('gridGoodsNumList', gridGoodsNumOptions);
 
 		fnGoodsDeailSearch();