소스 검색

이태영 - 20210114 공급업체 공통 팝업 수정

xodud1202 5 년 전
부모
커밋
270eae8f13

+ 18 - 28
src/main/java/com/style24/admin/biz/web/TsaBusinessController.java

@@ -1,18 +1,6 @@
 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.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.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
-
+import com.gagaframework.web.rest.server.GagaResponse;
 import com.style24.admin.biz.service.TsaBusinessService;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
@@ -20,20 +8,16 @@ import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.biz.service.TscEnvsetService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.Aflink;
-import com.style24.persistence.domain.Brand;
-import com.style24.persistence.domain.BrandMd;
-import com.style24.persistence.domain.DeliveryLoc;
-import com.style24.persistence.domain.DelvFeePolicy;
-import com.style24.persistence.domain.SellStore;
-import com.style24.persistence.domain.ShipCompany;
-import com.style24.persistence.domain.SiteBrand;
-import com.style24.persistence.domain.StockSyncBase;
-import com.style24.persistence.domain.SupplyCompany;
-
+import com.style24.persistence.domain.*;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
 
-import com.gagaframework.web.rest.server.GagaResponse;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 
 /**
  * 영업관리 Controller
@@ -93,8 +77,14 @@ public class TsaBusinessController extends TsaBaseController {
 	 */
 	@PostMapping("/supply/company/list")
 	@ResponseBody
-	public Collection<SupplyCompany> getCompanyList(@RequestBody SupplyCompany supplyComp) {
-		return businessService.getSupplyCompanyList(supplyComp);
+	public List<SupplyCompany> getCompanyList(@RequestBody SupplyCompany supplyComp) {
+		List<SupplyCompany> result = (ArrayList<SupplyCompany>) businessService.getSupplyCompanyList(supplyComp);
+
+		for (SupplyCompany supplyCompany : result) {
+			log.info("CHECK supplyCompNm >> " + supplyCompany.getSupplyCompNm());
+		}
+
+		return result;
 	}
 
 	/**
@@ -628,7 +618,7 @@ public class TsaBusinessController extends TsaBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		mav.addObject("params", company);
-		mav.setViewName("business/SupplyCompanySearchForm");
+		mav.setViewName("business/SupplyCompanyPopupForm");
 		return mav;
 	}
 }

+ 14 - 0
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -114,6 +114,20 @@ public class TsaMarketingController extends TsaBaseController {
 		return mav;
 	}
 
+	/**
+	 * 사은품 프로모션 등록 팝업창
+	 * @param param
+	 * @return ModelAndView
+	 * @author xodud1202
+	 * @since 2020. 12. 23
+	 */
+	@ResponseBody
+	@GetMapping("/freeGoodsPromotion/save")
+	public GagaResponse freeGoodsPromotionSave(FreeGoodsPromotion param) {
+
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
 
 	/* // xodud1202 진행 */
 

+ 2 - 1
src/main/java/com/style24/persistence/domain/FreeGoodsSectionVal.java

@@ -24,7 +24,8 @@ public class FreeGoodsSectionVal {
 	private int limitQty;				// 한정 수량
 	private int leftQty;				// 잔여 수량
 	private String sectionGb;			// 사은품 조건 구분(G810_10|수량, G810_11|금액)
-	private String sectionVal;			// 구간 설정 값 | 구간 할인 시작 (수량이상, 금액이상)
+	private String sectionVal;				// 구간 설정 값 | 구간 할인 시작 (수량이상, 금액이상)
+	private String productCd;			// 사은품 코드
 	private String itemCd;				// 사은품ID
 	private String itemOptCd1;			// ??
 	private String itemOptCd2;			// ??

+ 4 - 0
src/main/webapp/WEB-INF/views/business/SupplyCompanySearchForm.html → src/main/webapp/WEB-INF/views/business/SupplyCompanyPopupForm.html

@@ -26,6 +26,7 @@
 		<!-- 검색 조건 -->
 		<div class="panelContent">
 			<form id="searchCompanyListForm" name="searchCompanyListForm" action="#" th:action="@{'/business/supply/company/list'}" onsubmit="$('#btnSearchCompanyList').trigger('click'); return false;">
+				<input type="hidden" name="searchGb" value="NAME" />		<!-- 공급업체 목록 검색 조건은 업체명으로만 -->
 
 				<table class="frmStyle" aria-describedby="검색조건">
 					<colgroup>
@@ -119,6 +120,9 @@
 		$(document).ready(function() {
 			// Create a agGrid
 			gagaAgGrid.createGrid('gridComapanyPopupList', gridOptionsCompanyPopupList);
+
+			//  조회
+			$('#btnSearchCompanyList').trigger('click');
 		});
 		/*]]>*/
 	</script>

+ 0 - 1
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionForm.html

@@ -137,7 +137,6 @@
 
 	// 초기화 클릭시
 	$('#btnInit').on('click', function() {
-
 		$('#searchForm')[0].reset();
 		//$("#searchForm input[type=radio]").removeClass("checked");
 		$("#searchForm input[type=checkbox]").removeClass("checked");

+ 56 - 28
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html

@@ -68,8 +68,8 @@
 					<tr>
 						<th>적용 몰 구분<em class="required" title="필수"></em></th>
 						<td colspan="3">
-							<label class="chkBox"><input type="checkbox" name="mallCds" value="G011_10"/>자사몰</label>
-							<label class="chkBox" id="G011_20"><input type="checkbox" name="mallCds" value="G011_20"/>제휴몰</label>
+							<label class="chkBox"><input type="checkbox" id="selfYn" name="selfYn" value="Y"/>자사몰</label>
+							<label class="chkBox" id="G011_20"><input type="checkbox" id="extmallYn" name="extmallYn" value="Y"/>제휴몰</label>
 							<button type="button" class="btn btnRight btn-success btn-lg" id="btnExtmallPopup">선택</button><span id="extmallCntArea"> 선택 : <span id="extmallCnt">00</span>개</span>
 						</td>
 					</tr>
@@ -201,7 +201,7 @@
 										<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="saleAmt">구매금액</label><input type="text" class="w300" id="saleAmt" name="sectionVal"/> <br/>
 										<span>사은품 목록</span>
 										<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddFreeGoods1">+ 사은품 선택</button>
 										<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteFreeGoods1">선택삭제</button>
@@ -214,7 +214,7 @@
 								<th>사은품 조건2<br/>(최대 2개)</th>
 								<td>
 									<div>
-										<label for="saleAmt2">구매금액</label><input type="text" class="w300" id="saleAmt2" /> <br/>
+										<label for="saleAmt2">구매금액</label><input type="text" class="w300" id="saleAmt2"  name="sectionVal2"/> <br/>
 										<span>사은품 목록</span>
 										<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddFreeGoods2">+ 사은품 선택</button>
 										<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteFreeGoods2">선택삭제</button>
@@ -269,6 +269,7 @@
 </div>
 
 <script th:inline="javascript">
+	let formId = "freeGoodsPromotionForm";
 	let FGAddGoodsStatList = gagajf.convertToArray([[${goodsStatList}]]);		// 상품 상태 리스트
 	// 공급업체 리스트 설정
 	let columnFGCompanyList = [
@@ -347,7 +348,7 @@
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: "사은품 코드", field: "productNo", width: 120, cellClass: 'text-center'},
 		{headerName: "사은품명", field: "goodsNm", width: 150, cellClass: 'text-center'},
-		{headerName: "포인트액", field: "pointAmt" , width: 100, cellClass: 'text-center'
+		{headerName: "포인트액", field: "usePoint" , width: 100, cellClass: 'text-center'
 			,editable: true
 			,valueFormatter: function(params) {
 				if(params.value && params.value > 0) {
@@ -358,7 +359,7 @@
 			},
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
-		{headerName: "지급수량", field: "sendQty" , width: 100, cellClass: 'text-center'
+		{headerName: "지급수량", field: "itemQty" , width: 100, cellClass: 'text-center'
 			,editable: true
 			,valueFormatter: function(params) {
 				if(params.value && params.value > 0) {
@@ -388,45 +389,38 @@
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: "사은품 코드", field: "productNo", width: 120, cellClass: 'text-center'},
 		{headerName: "사은품명", field: "goodsNm", width: 150, cellClass: 'text-center'},
-		{headerName: "포인트액", field: "pointAmt" , width: 100, cellClass: 'text-center'
+		{headerName: "포인트액", field: "usePoint" , width: 100, cellClass: 'text-center'
 			,editable: true
 			,valueFormatter: function(params) {
 				if(params.value && params.value > 0) {
 					return params.value.addComma();
 				} else {
-					return '0';
+					return 0;
 				}
-			}
-			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			},
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
-		{headerName: "지급수량", field: "sendQty" , width: 100, cellClass: 'text-center'
+		{headerName: "지급수량", field: "itemQty" , width: 100, cellClass: 'text-center'
 			,editable: true
 			,valueFormatter: function(params) {
 				if(params.value && params.value > 0) {
 					return params.value.addComma();
 				} else {
-					return '1';
+					return 1;
 				}
 			},
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
 		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
 			,editable: true
-			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
-					return params.value.addComma();
-				} else {
-					return '0';
-				}
-			},
-			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
 		{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
 			,valueFormatter: function(params) {
 				if(params.value && params.value > 0) {
 					return params.value.addComma();
 				} else {
-					return '0';
+					return 0;
 				}
 			}
 		}
@@ -493,7 +487,7 @@
 	function fnSetSendGridListVal(gridListOption, key, inputId) {
 		let list = gagaAgGrid.getAllRowData(gridListOption);
 		let cds = [];
-		alert("aa / " + key);
+
 		for(let k = 0 ; k < list.length ; k++) {
 			cds.push(eval("list[k]." + key));
 		}
@@ -537,7 +531,7 @@
 	}
 
 	// 저장 버튼 클릭시
-	$('#freeGoodsPromotionForm #btnFreegoodsPromotionSave').on('click', function() {
+	$('#btnFreegoodsPromotionSave').on('click', function() {
 		// 각 ag-grid list 수량
 		let supplyCompCnt = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList).length;
 		let brandCnt = gagaAgGrid.getAllRowData(gridOptionsFGBrandList).length;
@@ -573,7 +567,12 @@
 
 		// 사은품조건1 필수 체크
 		if(freeGoods1Cnt < 1) {
-			mcxDialog.alert("사은품 조건1의 사은품을 등록해주세요.");
+			mcxDialog.alert("사은품 조건을 입력하세요.");
+			return false;
+		}
+
+		if($("#freeGoodsPromotionForm #saleAmt").val() != "" && $("#freeGoodsPromotionForm #saleAmt").val() < 1) {
+			mcxDialog.alert("사은품 조건1의 구매금액 조건을 설정해주세요.");
 			return false;
 		}
 
@@ -585,19 +584,48 @@
 
 		// 사은품조건2의 수량 체크
 		if(freeGoods2Cnt > 5) {
-			mcxDialog.alert("사은품 조건2의 사은품은 최대 2개까지 등록가능합니다.");
+			mcxDialog.alert("사은품 조건2의 사은품은 최대 5개까지 등록가능합니다.");
 			return false;
 		}
 
 		// 각 리스트 데이터 세팅
+		let freeGoods1Datas;
 		if(supplyCompCnt > 0) { fnSetSendGridListVal(gridOptionsFGCompanyList, "supplyCompCd", "supplyCompCds"); }		// 공급업체 설정 데이터
 		if(brandCnt > 0) { fnSetSendGridListVal(gridOptionsFGBrandList, "brandCd", "brandCds"); }						// 브랜드 설정 데이터
 		if(applyGoodsCnt > 0) { fnSetSendGridListVal(gridOptionsFGApplyGoodsList, "goodsCd", "applyGoodsCds"); }		// 적용 상품 설정 데이터
 		if(exceptGoodsCnt > 0) { fnSetSendGridListVal(gridOptionsFGExceptGoodsList, "goodsCd", "exceptGoodsCds"); }		// 제외 상품 설정 데이터
-		if(freeGoods1Cnt > 0) { fnSetSendGridListVal(gridOptionsFreeGoods1List, "productNo", "freeGoods1Cds"); }			// 사은품 조건 1
+		if(freeGoods1Cnt > 0) {
+			let gridListValue = gagaAgGrid.getAllRowData(gridOptionsFreeGoods1List);	// 기존 리스트
+			freeGoods1Datas = JSON.stringify(gridListValue);
+			//$("#freeGoodsPromotionForm #freeGoods1Cds").val(jsonData);
+		}
+		//if(freeGoods1Cnt > 0) { fnSetSendGridListVal(gridOptionsFreeGoods1List, "productNo", "freeGoods1Cds"); }			// 사은품 조건 1
 		if(freeGoods2Cnt > 0) { fnSetSendGridListVal(gridOptionsFreeGoods1List, "productNo", "freeGoods2Cds"); }			// 사은품 조건 2
+
+
+		// var params =  $(formId).serialize();
+		var data = {  freegiftNm : $("#freeGoodsPromotionForm input[name=freegiftNm]").val()
+					, freegiftStdt : $("#freeGoodsPromotionForm input[name=freegiftStdt]").val()
+					, freegiftEddt : $("#freeGoodsPromotionForm input[name=freegiftEddt]").val()
+					, selfYn : $("#freeGoodsPromotionForm input[name=selfYn]").val()
+					, extmallYn : $("#freeGoodsPromotionForm input[name=extmallYn]").val()
+					, extmallIds : $("#freeGoodsPromotionForm input[name=extmallIds]").val()
+					, supplyCompCds : $("#freeGoodsPromotionForm input[name=supplyCompCds]").val()
+					, brandCds : $("#freeGoodsPromotionForm input[name=brandCds]").val()
+					, applyGoodsCds : $("#freeGoodsPromotionForm input[name=applyGoodsCds]").val()
+					, exceptGoodsCds : $("#freeGoodsPromotionForm input[name=exceptGoodsCds]").val()
+					, freeGoods1 : freeGoods1Datas
+					, freeGoods2 : $("#freeGoodsPromotionForm input[name=freeGoods2Cds]").val()
+		};
+
+		var jsonData = JSON.stringify(data);
+		gagajf.ajaxJsonSubmit('/goods/search/excelupload/save', jsonData, fnGoodsExcelUploadCallBack);
 	});
 
+	var fnFreeGoodsPromotionSaveFin = function(result) {
+
+	}
+
 	// 공급업체 설정 / 업체 추가 콜백함수
 	var fnSetPopupComapnyInfo = function(result) {
 		fnSetListInfo(result, gridOptionsFGCompanyList, "supplyCompCd");
@@ -636,7 +664,7 @@
 				if(result[i].extmallId == extmallIds[j]) {	addChk = false;	}
 			}
 
-			if(addChk) {	extmallIds.push(result[i].extmallId)	};
+			if(addChk) {	extmallIds.push(result[i].extmallId)	}
 		}
 
 		var jsonData = JSON.stringify(extmallIds);
@@ -650,7 +678,7 @@
 	});
 	// 공급업체 설정 업체 추가 버튼 클릭시
 	$('#freeGoodsPromotionForm #btnAddCompany').on('click', function() {
-		cfnOpenCompanyListPopup("fnSetPopupComapnyInfo");
+		cfnOpenCompanyListPopup("fnSetPopupComapnyInfo", "M");
 	});
 	// 브랜드 추가 버튼 클릭시 (복수 브랜드때 수정 필요)
 	$('#freeGoodsPromotionForm #btnAddBrand').on('click', function() {

+ 39 - 13
src/main/webapp/ux/js/admin.popup.js

@@ -689,20 +689,19 @@ var cfnOpenFrontGoodsPopup = function(goodsCd, siteCd) {
  * @access : public
  * @desc   : 브랜드 목록 팝업
  * <pre>
- *     cfnOpenBrandListPopup();
- *     or
  *     cfnOpenBrandListPopup('fnResult');
  *     or
- *     cfnOpenBrandListPopup('fnResult', 'TBJ');
+ *     cfnOpenBrandListPopup('fnResult', 'S');
+ *     or
+ *     cfnOpenBrandListPopup('fnResult', 'S', 'TBJ');
  * </pre>
  * @since  : 2020/12/15
  * @author : eskim
  */
 var cfnOpenBrandListPopup = function(callbackfn, multiGb, searchTxt) {
-	var actionUrl = '/business/brand/search/form';
-	if (typeof(callbackfn) != 'undefined') actionUrl += "?callbackFn=" + callbackfn;
-	if (typeof(searchTxt) != 'undefined') actionUrl += "&searchTxt=" + encodeURIComponent(searchTxt);
+	var actionUrl = '/business/brand/search/form?callbackFn=' + callbackfn;
 	if (typeof(multiGb) != 'undefined' && multiGb != null && multiGb == "M") actionUrl += "&multiGb=" + multiGb; else actionUrl += "&multiGb=S";
+	if (typeof(searchTxt) != 'undefined') actionUrl += "&searchTxt=" + encodeURIComponent(searchTxt);
 	cfnOpenModalPopup(actionUrl, "popupBrandList");
 }
 
@@ -711,7 +710,7 @@ var cfnOpenBrandListPopup = function(callbackfn, multiGb, searchTxt) {
  * @access : public
  * @desc   : 프로모션 등록 팝업
  * <pre>
- *     cfnOpenFreeGoodsPromotionSetPopup();
+ *     cfnOpenFreeGoodsPromotionSetPopup('C');
  * </pre>
  * @since  : 2020/12/21
  * @author : xodud1202
@@ -728,16 +727,43 @@ var cfnOpenFreeGoodsPromotionSetPopup = function(gbn) {
  * @access : public
  * @desc   : 공급업체 조회 팝업
  * <pre>
- *     cfnOpenCompanyListPopup('callbackfn');
+ *     cfnOpenCompanyListPopup('fnResult');										// callBack 함수만 나타내고, 싱글 선택 팝업
+ *     or
+ *     cfnOpenCompanyListPopup('fnResult', 'S');								// 1번 파라미터 : callBack 함수, 2번 파라미터 : S면 싱글 선택 팝업, M이면 멀티 선택 팝업
+ *     or
+ *     cfnOpenCompanyListPopup('fnResult', 'S', 'TBJ');							// 1번 파라미터 : callBack 함수, 2번 파라미터 : 선택구분, 3번 파라미터 : 팝업 default 검색어
+ *     or
+ *     cfnOpenCompanyListPopup('fnResult', 'S', 'TBJ', 'inputId');				// 마지막 문자열은 멀티구분 S이고, 결과가 하나일때 supplyCompCd값을 넣어줄 html tag id, S가 아니고, inputId가 존재하지 않으면 무조건 팝업이 열림.
  * </pre>
  * @since  : 2020/12/23
  * @author : xodud1202
  */
-var cfnOpenCompanyListPopup = function(callbackfn) {
-	var actionUrl = "/business/comapny/search/form";
-	if (typeof(callbackfn) != 'undefined') actionUrl += "?callbackFn=" + callbackfn;
-	uifnPopupClose('popupCompanyList');
-	cfnOpenModalPopup(actionUrl, 'popupCompanyList');
+var cfnOpenCompanyListPopup = function(callbackfn, multiGb, searchTxt, inputId) {
+	var actionUrl = "/business/comapny/search/form?callbackFn=" + callbackfn;
+	if (typeof(multiGb) != 'undefined' && multiGb != null && multiGb == "M") actionUrl += "&multiGb=" + multiGb; else actionUrl += "&multiGb=S";
+	if (typeof(searchTxt) != 'undefined') actionUrl += "&searchTxt=" + encodeURIComponent(searchTxt);
+
+	if(multiGb == "S") {
+		if(searchTxt && searchTxt != "" && inputId && inputId != "") {
+			var data = {  searchTxt : searchTxt, searchGb : "NAME"	};
+			var jsonData = JSON.stringify(data);
+
+			gagajf.ajaxJsonSubmit('/business/supply/company/list', jsonData, function(result) {
+				if(result && result.length == 1) {
+					$("#" + inputId).val(result[0].supplyCompCd);
+				} else {
+					uifnPopupClose('popupCompanyList');
+					cfnOpenModalPopup(actionUrl, 'popupCompanyList');
+				}
+			});
+		} else {
+			uifnPopupClose('popupCompanyList');
+			cfnOpenModalPopup(actionUrl, 'popupCompanyList');
+		}
+	} else {
+		uifnPopupClose('popupCompanyList');
+		cfnOpenModalPopup(actionUrl, 'popupCompanyList');
+	}
 }
 
 /**