Przeglądaj źródła

이태영 - 20210110 사은품 조회 팝업 만드는 중

xodud1202 5 lat temu
rodzic
commit
07953e16f2

+ 15 - 0
style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -2433,6 +2433,21 @@ public class TsaGoodsController extends TsaBaseController {
 		return mav;
 	}
 
+	/**
+	 * 사은품조회 팝업
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 01. 10
+	 */
+	@GetMapping("/freeGoods/popup/list/form")
+	@ResponseBody
+	public ModelAndView freeGoodsPopupListForm(GoodsSearch goodsSearch) {
+		ModelAndView mav = new ModelAndView();
+
+		mav.setViewName("goods/GoodsPopupListForm");
+		return mav;
+	}
+
 	/**
 	 * 사은품 목록
 	 * @param adKeywordSq

+ 128 - 0
style24.admin/src/main/webapp/WEB-INF/views/goods/FreeGoodsSearchForm.html

@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : SupplyCompanySearchForm.html
+ * @desc    : 공급업체 목록 페이지
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.12.23   xodud1202   최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="500" id="popupCompanyList">
+	<div class="panelStyle">
+		<!-- TITLE -->
+		<div class="panelTitle">
+			<strong>사은품 목록</strong>
+			<button type="button" class="close" onclick="uifnPopupClose('popupFreeGoodsList');"><em class="fa fa-times"></em></button>
+		</div>
+		<!-- //TITLE -->
+
+		<!-- 검색 조건 -->
+		<div class="panelContent">
+			<form id="searchCompanyListForm" name="searchCompanyListForm" action="#" th:action="@{'/business/supply/company/list'}" onsubmit="$('#btnSearchCompanyList').trigger('click'); return false;">
+
+				<table class="frmStyle" aria-describedby="검색조건">
+					<colgroup>
+						<col style="width:15%;"/>
+						<col/>
+					</colgroup>
+					<tbody>
+					<tr>
+						<th>공급업체명</th>
+						<td>
+							<input type="text" name="searchTxt" th:value="${params.searchTxt}" maxlength="20" onkeypress="if (event.keyCode == 13) { $('#btnSearchCompanyList').trigger('click'); }"/>
+						</td>
+					</tr>
+					</tbody>
+				</table>
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-base btn-lg" id="btnSearchCompanyList">조회</button>
+					</li>
+				</ul>
+			</form>
+		</div>
+		<!-- //검색 조건 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelContent">
+			<div id="gridComapanyPopupList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+
+		<!-- 버튼 배치 영역 -->
+		<ul class="panelBar">
+			<li class="right">
+				<button type="button" class="btn btn-info btn-lg" id="btnConfirmCompany">확인</button>
+			</li>
+		</ul>
+	</div>
+
+	<script th:inline="javascript">
+		/*<![CDATA[*/
+		let columnCompanyPopupDefList = [
+			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+			{headerName: "공급업체번호", field: "supplyCompCd", width: 120, cellClass: 'text-center'},
+			{headerName: "공급업체국문명", field: "supplyCompNm", width: 150, cellClass: 'text-center'},
+			{headerName: "입점상태", field: "supplyStatNm", width: 150, cellClass: 'text-center'}
+		];
+
+		let gridOptionsCompanyPopupList = gagaAgGrid.getGridOptions(columnCompanyPopupDefList);
+		gridOptionsCompanyPopupList.rowSelection = "multiple";
+
+		// Row double click
+		gridOptionsCompanyPopupList.onRowDoubleClicked = function(event) {
+			$('#btnConfirmCompany').trigger('click');
+		}
+
+		// 조회
+		$('#btnSearchCompanyList').on('click', function() {
+			// Fetch data
+			gagaAgGrid.fetch($('#searchCompanyListForm').prop('action'), gridOptionsCompanyPopupList, '#searchCompanyListForm');
+		});
+
+		// 확인
+		$('#btnConfirmCompany').on('click', function() {
+			var selectedData = gagaAgGrid.selectedRowData(gridOptionsCompanyPopupList);
+
+			if (selectedData.length == 0) {
+				mcxDialog.alert('선택된 공급업체가 없습니다.');
+				return false;
+			}
+
+			var callbackFn = [[${params.callbackFn}]];
+
+			var jsonData = JSON.stringify(selectedData);
+
+			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('popupCompanyList');
+			}
+		});
+
+		$(document).ready(function() {
+			// Create a agGrid
+			gagaAgGrid.createGrid('gridComapanyPopupList', gridOptionsCompanyPopupList);
+		});
+		/*]]>*/
+	</script>
+
+</div>
+
+</html>

+ 52 - 17
style24.admin/src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html

@@ -105,7 +105,6 @@
 										<div class="padding10 inner-tb-solid">
 											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddCompany">업체 추가</button>
 											<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteCompany">선택삭제</button>
-											<span>선택 : <span id="companyCnt">00</span>개</span>
 											<br/>
 											<div id="gridFGPromotionCompanyList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 										</div>
@@ -115,7 +114,6 @@
 										<div class="padding10 inner-tb-solid">
 											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddBrand">브랜드 추가</button>
 											<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteBrand">선택삭제</button>
-											<span>선택 : <span id="brandCnt">00</span>개</span>
 											<br/>
 											<!-- 브랜드 선택 팝업(단수 선택 팝업... 복수를 새로 만들어야하는지 ? 아니면 변수처리해야하는지 ? -->
 											<div id="gridFGBrandList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
@@ -129,7 +127,6 @@
 									<div class="padding10">
 										<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddApplyGoods">상품 추가</button>
 										<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteApplyGoods">선택삭제</button>
-										<span>선택 : <span id="applyGoodsCnt">00</span>개</span>
 										<br/>
 										<div id="gridFGApplyGoodsList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 									</div>
@@ -162,7 +159,6 @@
 									<div class="padding10">
 										<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddExceptGoods">상품 추가</button>
 										<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteExtGoods">선택삭제</button>
-										<span>선택 : <span id="exceptGoodsCnt">00</span>개</span>
 										<br/>
 										<div id="gridFGExceptGoodsList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 									</div>
@@ -297,8 +293,24 @@
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(FGAddGoodsStatList, params.value); },
 			valueParser: function (params) { return gagaAgGrid.lookupKey(FGAddGoodsStatList, params.newValue); }
 		},
-		{headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center', valueFormatter: function(params) {return params.value.addComma();}},
-		{headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center', valueFormatter: function(params) {return params.value.addComma();}}
+		{headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
+		},
+		{headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
+		}
 	];
 	// 제외상품 리스트 설정
 	let columnExceptGoodsList = [
@@ -311,8 +323,24 @@
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(FGAddGoodsStatList, params.value); },
 			valueParser: function (params) { return gagaAgGrid.lookupKey(FGAddGoodsStatList, params.newValue); }
 		},
-		{headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center',valueFormatter: function(params) {return params.value.addComma();}},
-		{headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center',valueFormatter: function(params) {return params.value.addComma();}}
+		{headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
+		},
+		{headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
+		}
 	];
 	// 사은품 조건1 리스트 설정 (사은품 상품 만들어지면 만들어야함)
 	let columnFreeGoods1List = [
@@ -478,6 +506,7 @@
 		let resultList = [];											// 최종 상품 리스트
 		let gridListValue = gagaAgGrid.getAllRowData(gridListOption);	// 기존 리스트
 
+
 		// 기존 리스트 데이터 for
 		for(let i = 0 ; i < result.length ; i++) {
 			let addChk = true;					// 받아온 모든 데이터
@@ -492,15 +521,21 @@
 			}
 
 			// 추가된 데이터 중 중복되지 않은 데이터 리스트에 추가
-			if(addChk) {	resultList.push(eval("result[i]" + key));	}
-			//if(addChk) {	gagaAgGrid.addRowData(gridListOption, result[i], key);	}
+			if(addChk) {	resultList.push(result[i]);	}
+		}
+
+		// 사은품 추가는 5개까지만
+		if(key == "productCode") {
+			let totalCnt = resultList.length + gridListValue.length;
+			if(totalCnt > 5) {
+				mcxDialog.alert("사은품은 최대 5개까지만 등록하실 수 있습니다.");
+				return false;
+			}
 		}
-		let totalCnt = resultList.length + gridListValue.length;
-		if(resultList.length > 5) {
-			mcxDialog.alert("사은품은 최대 5개까지만 등록하실 수 있습니다.");
-			return false;
-		} else {
 
+		// 추가된 정보 그리드에 추가
+		for(let i = 0 ; i < resultList.length ; i++) {
+			gagaAgGrid.addRowData(gridListOption, resultList[i], key);
 		}
 	}
 
@@ -634,11 +669,11 @@
 	});
 	// 사은품 조건1 상품 추가 버튼 클릭시
 	$('#freeGoodsPromotionForm #btnAddFreeGoods1').on('click', function() {
-		cfnOpenGoodsPopup("fnSetPopupFreeGoods1Info");
+		cfnOpenFreeGoodsPopup("fnSetPopupFreeGoods1Info");
 	});
 	// 사은품 조건2 상품 추가 버튼 클릭시
 	$('#freeGoodsPromotionForm #btnAddFreeGoods2').on('click', function() {
-		cfnOpenGoodsPopup("fnSetPopupFreeGoods2Info");
+		cfnOpenFreeGoodsPopup("fnSetPopupFreeGoods2Info");
 	});
 
 	// 공급업체 설정 선택삭제 버튼 클릭시

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

@@ -307,6 +307,24 @@ var cfnOpenGoodsPopup = function(callbackfun) {
 	cfnOpenModalPopup(actionUrl,'popupGoods');
 }
 
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : 상품조회 팝업
+ * <pre>
+ *     cfnOpenFreeGoodsPopup('goosCallbackFun');
+ * </pre>
+ * @param  : callbackfun - 콜백함수
+ * @since  : 2021/01/10
+ * @author : xodud1202
+ */
+var cfnOpenFreeGoodsPopup = function(callbackfun) {
+	var actionUrl = "/goods/freeGoods/popup/list/form";
+	if (typeof(callbackfun) != 'undefined') actionUrl += "?callBackFun=" + callbackfun;
+
+	cfnOpenModalPopup(actionUrl,'popupFreeGoodsList');
+}
+
 /**
  * @type   : function
  * @access : public