Просмотр исходного кода

Merge branch 'develop' into eskim

eskim 5 лет назад
Родитель
Сommit
eb3ef2b53f

+ 18 - 0
src/main/java/com/style24/admin/biz/dao/TsaCustomerDao.java

@@ -25,4 +25,22 @@ public interface TsaCustomerDao {
 	 * @since 2020. 01. 12
 	 */
 	Collection<Customer> getCustomerActiveList(CustomerSearch customerSearch);
+
+	/**
+	 * 탈퇴회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 01. 14
+	 */
+	Collection<Customer> getCustomerSecedeList(CustomerSearch customerSearch);
+
+	/**
+	 * 휴면회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 01. 14
+	 */
+	Collection<Customer> getCustomerDormantList(CustomerSearch customerSearch);
 }

+ 31 - 1
src/main/java/com/style24/admin/biz/service/TsaCustomerService.java

@@ -22,8 +22,38 @@ public class TsaCustomerService {
 	@Autowired
 	private TsaCustomerDao customerDao;
 
-
+	/**
+	 * 활동회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 01. 12
+	 */
 	public Collection<Customer> getCustomerActiveList(CustomerSearch customerSearch) {
 		return customerDao.getCustomerActiveList(customerSearch);
 	}
+
+	/**
+	 * 탈퇴회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 01. 14
+	 */
+	public Collection<Customer> getCustomerSecedeList(CustomerSearch customerSearch) {
+		return customerDao.getCustomerSecedeList(customerSearch);
+	}
+
+	/**
+	 * 휴면회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 01. 14
+	 */
+	public Collection<Customer> getCustomerDormantList(CustomerSearch customerSearch) {
+		return customerDao.getCustomerDormantList(customerSearch);
+	}
+
+
 }

+ 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;
 	}
 }

+ 65 - 1
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -273,7 +273,7 @@ public class TsaCustomerController extends TsaBaseController {
 	 * @param customerSearch - 검색조건
 	 * @return Collection<Customer>
 	 * @author jsshin
-	 * @since 2020. 12. 24
+	 * @since 2020. 01. 12
 	 */
 	@PostMapping("/active/list")
 	@ResponseBody
@@ -281,5 +281,69 @@ public class TsaCustomerController extends TsaBaseController {
 		return customerService.getCustomerActiveList(customerSearch);
 	}
 
+	/**
+	 * 탈퇴회원
+	 * @return ModelAndView
+	 * @author jsshin
+	 * @since 2020. 01. 14
+	 */
+	@GetMapping("/secede/list/form")
+	public ModelAndView customerSecedeListForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 사이트 목록
+		mav.addObject("siteList", rendererService.getCommonCodeList("G000", "Y"));
+
+		// 탈퇴 구분
+		mav.addObject("secedeGbList", rendererService.getCommonCodeList("G111", "Y"));
+
+		mav.setViewName("customer/CustomerSecedeListForm");
+
+		return mav;
+	}
+
+	/**
+	 * 탈퇴회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 01. 14
+	 */
+	@PostMapping("/secede/list")
+	@ResponseBody
+	public Collection<Customer> getCustomerSecedeList(@RequestBody CustomerSearch customerSearch) {
+		return customerService.getCustomerSecedeList(customerSearch);
+	}
+
+	/**
+	 * 휴면회원
+	 * @return ModelAndView
+	 * @author jsshin
+	 * @since 2020. 01. 14
+	 */
+	@GetMapping("/dormant/list/form")
+	public ModelAndView customerDormantListForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 사이트 목록
+		mav.addObject("siteList", rendererService.getCommonCodeList("G000", "Y"));
+
+		mav.setViewName("customer/CustomerDormantListForm");
+
+		return mav;
+	}
+
+	/**
+	 * 휴면회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 01. 14
+	 */
+	@PostMapping("/dormant/list")
+	@ResponseBody
+	public Collection<Customer>getCustomerDormantList(@RequestBody CustomerSearch customerSearch) {
+		return customerService.getCustomerDormantList(customerSearch);
+	}
 
 }

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

@@ -132,6 +132,21 @@ public class TsaMarketingController extends TsaBaseController {
 		return mav;
 	}
 
+	/**
+	 * 사은품 프로모션 등록
+	 * @param param
+	 * @return ModelAndView
+	 * @author xodud1202
+	 * @since 2021. 01. 14
+	 */
+	@ResponseBody
+	@GetMapping("/freeGoodsPromotion/save")
+	public GagaResponse freeGoodsPromotionSave(FreeGoodsPromotion param) {
+
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
+
 	/* // xodud1202 진행 */
 
 	/* JSM 진행 */

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

@@ -20,7 +20,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;			// ??

+ 2 - 0
src/main/java/com/style24/persistence/domain/Order.java

@@ -26,9 +26,11 @@ public class Order extends TscBaseDomain {
 	private String ordNm;
 	private String ordTelno;
 	private String siteCd;
+	private String siteCdNm;
 	private int npayOrdNo;
 	private String frontGb;
 	private String frontGbNm;
+	private String extmallNm;
 
 	// 주문상세
 	private int ordDtlNo;

+ 10 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -105,4 +105,14 @@
 		</if>
 	</select>
 
+	<!-- 탈퇴회원목록 -->
+	<select id="getCustomerSecedeList" parameterType="CustomerSearch" resultType="Customer">
+		SELECT '1111'
+	</select>
+
+	<!-- 휴면회원목록 -->
+	<select id="getCustomerDormantList" parameterType="CustomerSearch" resultType="Customer">
+		SELECT '1111'
+	</select>
+
 </mapper>

+ 6 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsaOrder.xml

@@ -390,6 +390,7 @@
 	<select id="getOrderInfoList" parameterType="Order" resultType="Order">
 		/* order.getOrderInfoList */
 		SELECT O.SITE_CD
+		     , FN_GET_CODE_NM('G000', O.SITE_CD) AS SITE_CD_NM
 		     , O.MALL_GB
 		     , FN_GET_CODE_NM('G011', O.MALL_GB) AS MALL_GB_NM
 		     , O.FRONT_GB
@@ -397,8 +398,11 @@
 		            THEN 'PC'
 		            ELSE 'MOBILE'
 		             END FRONT_GB_NM
-		     , OD.EXTMALL_ID 
-		     , DATE_FORMAT(O.ORD_DT,'%Y%m%d%H%i%S') AS ORD_DT
+		     , OD.EXTMALL_ID
+		     , (SELECT X.EXTMALL_NM
+		        FROM   TB_EXTMALL X
+		        WHERE  X.EXTMALL_ID = OD.EXTMALL_ID) AS EXTMALL_NM 
+		     , O.ORD_DT
 		     , O.ORD_NM
 		     , O.CUST_NO
 		     , O.ORD_NO

+ 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>

+ 36 - 23
src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html

@@ -54,7 +54,7 @@
 
 					<th class="dashR">사이트</th>
 					<td class="dashR">
-						<select name="siteCd"> <!-- 회원구분(공통코드G100) -->
+						<select name="siteCd">
 							<option value="">전체</option>
 							<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
 						</select>
@@ -72,7 +72,7 @@
 				<tr>
 					<th class="dashR">회원구분</th>
 					<td class="dashR">
-						<select name="custGb"> <!-- 회원구분(공통코드G100) -->
+						<select name="custGb">
 							<option value="">전체</option>
 							<option th:if="${custGbList}" th:each="oneData, status : ${custGbList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
 						</select>
@@ -80,7 +80,7 @@
 
 					<th class="dashR">회원등급</th>
 					<td class="dashR">
-						<select name="custGrade"> <!-- 회원등급(공통코드G110) -->
+						<select name="custGrade">
 							<option value="">전체</option>
 							<option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
 						</select>
@@ -88,7 +88,7 @@
 
 					<th class="dashR">관리대상</th>
 					<td class="dashR">
-						<select name="managedRsn"> <!-- 관리대상지정사유(공통코드G120) -->
+						<select name="managedRsn">
 							<option value="">전체</option>
 							<option th:if="${managedRsnList}" th:each="oneData, status : ${managedRsnList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
 						</select>
@@ -125,7 +125,7 @@
 
 	<!-- 리스트 영역 -->
 	<div class="panelStyle">
-		<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham lh60"></div>
+		<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
 	</div>
 	<!-- //리스트 영역 -->
 </div>
@@ -181,10 +181,6 @@
 			headerName: "성별", field:'sexGb', width:50, cellClass: 'text-center',
 			valueGetter: function (params) { return gagaAgGrid.lookupValue(genderGb, params.data.sexGb); }
 		},
-		{
-			headerName: "생년월일", field:'birthYmd', width:90, cellClass: 'text-center', hide:true,
-			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.birthYmd); }
-		},
 		{headerName: "기본주소", field:'homeBaseAddr', width:350, cellClass: 'text-center'},
 		{headerName: "상세주소", field:'homeDtlAddr', width:250, cellClass: 'text-center'},
 		{headerName: "수신동의(SMS)", field:'smsAgreeYn', width:110, cellClass: 'text-center'},
@@ -194,9 +190,6 @@
 	// Get GridOptions
 	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
 
-	// 이미지가 있을 경우 높이 지정
-	gridOptions.rowHeight = 60;
-
 	// 셀 클릭 이벤트
 	gridOptions.onCellClicked = function(event) {
 		 if (event.colDef.field == 'custNm') {
@@ -207,42 +200,50 @@
 
 	// 조회
 	$('#btnSearch').on('click', function() {
-		// 유효성 체크
-		let validation = fnValidationCheck();
-		if (!validation) {
-			return;
+		fnSearch();
+	});
+
+	//엔터키 조회
+	$('#searchForm input[name=cellPhnno], #searchForm input[name=searchNm]').on('keypress' ,function (event) {
+		if (event.which === 13) {
+			fnSearch();
 		}
-		// Fetch data
-		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
 	});
-	
+
+	// 휴대폰 자동 하이픈
+	$('#searchForm input[name=cellPhnno]').on('input keyup keydown paste change', function () {
+		cfnCellPhonnHypen(this);
+	});
+
+	// 유효성 확인
 	var fnValidationCheck = function () {
 		// 입력 값 체크
 		const $searchGb = $('#searchForm select[name=searchGb]');	// 검색구분
-		const $searchNm = $('#searchForm input[name=searchNm]');	// 검색내용
+		const $searchTxt = $('#searchForm input[name=searchTxt]');	// 검색내용
 		let isSearchVaild = true;
 		let validationMessage;
 
 		// 검색구분: O / 검색내용: X
 		if (!gagajf.isNull($searchGb.val())) {
-			if (gagajf.isNull($searchNm.val())) {
+			if (gagajf.isNull($searchTxt.val())) {
 				validationMessage = '내용을 입력해주세요';
 				isSearchVaild = false;
 			}
 		}
 
 		// 검색구분: X / 검색내용: O
-		if (!gagajf.isNull($searchNm.val())) {
+		if (!gagajf.isNull($searchTxt.val())) {
 			if (gagajf.isNull($searchGb.val())) {
 				validationMessage = '검색구분을 선택해주세요';
 				isSearchVaild = false;
 			}
+
 		}
 		if (!isSearchVaild) {
 			mcxDialog.alertC(validationMessage, {
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					$searchNm.focus();
+					$searchTxt.focus();
 				}
 			});
 		}
@@ -251,6 +252,17 @@
 
 	}
 
+	// 검색
+	var fnSearch = function() {
+		// 유효성 체크
+		let validation = fnValidationCheck();
+		if (!validation) {
+			return;
+		}
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+	};
+
+
 	$(document).ready(function() {
 		// 공통 달력 생성
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true);
@@ -259,6 +271,7 @@
 		// Create a agGrid
 		gagaAgGrid.createGrid('gridList', gridOptions);
 	});
+
 	/*]]>*/
 </script>
 

+ 200 - 0
src/main/webapp/WEB-INF/views/customer/CustomerDormantListForm.html

@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : CustomerDormantListForm.html
+ * @desc    : 휴면회원목록 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.01.14   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<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="@{'/customer/dormant/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+			<table class="frmStyle" aria-describedby="검색조건">
+				<colgroup>
+					<col style="width:10%;"/>
+					<col style="width:20%;"/>
+					<col style="width:10%;"/>
+					<col style="width:15%;"/>
+					<col style="width:10%;"/>
+					<col style="width:20%;"/>
+					<col/>
+				</colgroup>
+				<tbody>
+				<tr>
+					<th class="dashR">검색구분</th>
+					<td class="dashR">
+						<select name="searchGb">
+							<option value="">선택</option>
+							<option value="custNo">회원번호 </option>
+							<option value="custNm">회원명 </option>
+							<option value="email">이메일</option>
+							<option value="custId">아이디</option>
+						</select>
+						<input type="text" class="w200" name="searchTxt" id="searchTxt"/>
+					</td>
+					<th class="dashR">사이트</th>
+					<td class="dashR">
+						<select name="siteCd">
+							<option value="">전체</option>
+							<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+						</select>
+					</td>
+					<th class="dashR">휴대폰번호(숫자만)</th>
+					<td class="dashR">
+						<input type="text" class="w200" name="cellPhnno" id="cellPhnno" maxlength="13"/>
+					</td>
+				</tr>
+				<tr>
+					<th class="dashR">휴면일</th>
+					<td class="dashR" colspan="5" id="terms">
+					</td>
+				</tr>
+				</tbody>
+			</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">
+		<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
+	</div>
+	<!-- //리스트 영역 -->
+</div>
+
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	// 사이트목록
+	const siteList = gagajf.convertToArray([[${siteList}]]);
+
+	// specify the columns
+	const columnDefs = [
+		{
+			headerName: "사이트", field:'siteCd', width:100, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(siteList, params.data.siteCd); }
+		},
+		{headerName: "회원ID", field:'custId', width:120, cellClass: 'text-center'},
+		{headerName: "회원명", field:'custNm', width:100, cellClass: 'text-center'},
+		{headerName: "핸드폰", field:'cellPhnno', width:140, cellClass: 'text-center'},
+		{
+			headerName: "생년월일", field:'birthYmd', width:90, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.birthYmd); }
+		},
+		{
+			headerName: "휴면일자", field:'dormantDt', width:120, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.dormantDt); }
+		},
+		{headerName: "이메일", field:'email', width:220, cellClass: 'text-center'}
+	];
+
+	// Get GridOptions
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 셀 클릭 이벤트
+	gridOptions.onCellClicked = function(event) {
+
+	}
+
+	// 조회
+	$('#btnSearch').on('click', function() {
+		fnSearch();
+	});
+
+	//엔터키 조회
+	$('#searchForm input[name=cellPhnno], #searchForm input[name=searchNm]').on('keypress', function (event) {
+		if (event.which === 13) {
+			fnSearch();
+		}
+	});
+
+	// 휴대폰 자동 하이픈
+	$('#searchForm input[name=cellPhnno]').on('input keyup keydown paste change', function () {
+		cfnCellPhonnHypen(this);
+	});
+
+	// 유효성 확인
+	var fnValidationCheck = function () {
+		// 입력 값 체크
+		const $searchGb = $('#searchForm select[name=searchGb]');	// 검색구분
+		const $searchTxt = $('#searchForm input[name=searchTxt]');	// 검색내용
+		let isSearchVaild = true;
+		let validationMessage;
+
+		// 검색구분: O / 검색내용: X
+		if (!gagajf.isNull($searchGb.val())) {
+			if (gagajf.isNull($searchTxt.val())) {
+				validationMessage = '내용을 입력해주세요';
+				isSearchVaild = false;
+			}
+		}
+
+		// 검색구분: X / 검색내용: O
+		if (!gagajf.isNull($searchTxt.val())) {
+			if (gagajf.isNull($searchGb.val())) {
+				validationMessage = '검색구분을 선택해주세요';
+				isSearchVaild = false;
+			}
+
+		}
+		if (!isSearchVaild) {
+			mcxDialog.alertC(validationMessage, {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$searchTxt.focus();
+				}
+			});
+		}
+
+		return isSearchVaild;
+
+	}
+
+	// 검색
+	var fnSearch = function() {
+		// 유효성 체크
+		let validation = fnValidationCheck();
+		if (!validation) {
+			return;
+		}
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+	};
+
+	$(document).ready(function() {
+		// 공통 달력 생성
+		cfnCreateCalendar('#terms', 'stDate', 'edDate', true);
+		$('.btnToday').trigger('click');
+
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+
+	/*]]>*/
+</script>
+
+</html>

+ 209 - 0
src/main/webapp/WEB-INF/views/customer/CustomerSecedeListForm.html

@@ -0,0 +1,209 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : CustomerSecedeListForm.html
+ * @desc    : 탈퇴회원목록 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.01.14   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<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="@{'/customer/secede/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+			<table class="frmStyle" aria-describedby="검색조건">
+				<colgroup>
+					<col style="width:10%;"/>
+					<col style="width:20%;"/>
+					<col style="width:10%;"/>
+					<col style="width:15%;"/>
+					<col style="width:10%;"/>
+					<col style="width:20%;"/>
+					<col/>
+				</colgroup>
+				<tbody>
+				<tr>
+					<th class="dashR">검색구분</th>
+					<td class="dashR">
+						<select name="searchGb">
+							<option value="">선택</option>
+							<option value="custNo">회원번호 </option>
+							<option value="custNm">회원명 </option>
+							<option value="email">이메일</option>
+							<option value="custId">아이디</option>
+						</select>
+						<input type="text" class="w200" name="searchTxt" id="searchTxt"/>
+					</td>
+					<th class="dashR">사이트</th>
+					<td class="dashR">
+						<select name="siteCd">
+							<option value="">전체</option>
+							<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+						</select>
+					</td>
+				</tr>
+				<tr>
+					<th class="dashR">탈퇴사유</th>
+					<td class="dashR">
+						<select name="secedeGb" class="w200">
+							<option value="">전체</option>
+							<option th:if="${secedeGbList}" th:each="oneData, status : ${secedeGbList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+						</select>
+					</td>
+					<th class="dashR">휴대폰번호(숫자만)</th>
+					<td class="dashR">
+						<input type="text" class="w200" name="cellPhnno" id="cellPhnno" maxlength="13"/>
+					</td>
+				</tr>
+				<tr>
+					<th class="dashR">탈퇴일</th>
+					<td class="dashR" colspan="3" id="terms">
+					</td>
+				</tr>
+				</tbody>
+			</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">
+		<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
+	</div>
+	<!-- //리스트 영역 -->
+</div>
+
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	// 사이트목록
+	const siteList = gagajf.convertToArray([[${siteList}]]);
+
+	// specify the columns
+	const columnDefs = [
+		{
+			headerName: "사이트", field:'siteCd', width:100, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(siteList, params.data.siteCd); }
+		},
+		{headerName: "회원ID", field:'custId', width:120, cellClass: 'text-center'},
+		{headerName: "회원명", field:'custNm', width:100, cellClass: 'text-center'},
+		{headerName: "핸드폰", field:'cellPhnno', width:140, cellClass: 'text-center'},
+		{
+			headerName: "생년월일", field:'birthYmd', width:90, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.birthYmd); }
+		},
+		{
+			headerName: "탈퇴일자", field:'secedeDt', width:120, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.secedeDt); }
+		},
+		{headerName: "이메일", field:'email', width:220, cellClass: 'text-center'}
+	];
+
+	// Get GridOptions
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 셀 클릭 이벤트
+	gridOptions.onCellClicked = function(event) {
+
+	}
+
+	// 조회
+	$('#btnSearch').on('click', function() {
+		fnSearch();
+	});
+
+	//엔터키 조회
+	$('#searchForm input[name=cellPhnno], #searchForm input[name=searchNm]').on('keypress', function (event) {
+		if (event.which === 13) {
+			fnSearch();
+		}
+	});
+
+	// 휴대폰 자동 하이픈
+	$('#searchForm input[name=cellPhnno]').on('input keyup keydown paste change', function () {
+		cfnCellPhonnHypen(this);
+	});
+
+	// 유효성 확인
+	var fnValidationCheck = function () {
+		// 입력 값 체크
+		const $searchGb = $('#searchForm select[name=searchGb]');	// 검색구분
+		const $searchTxt = $('#searchForm input[name=searchTxt]');	// 검색내용
+		let isSearchVaild = true;
+		let validationMessage;
+
+		// 검색구분: O / 검색내용: X
+		if (!gagajf.isNull($searchGb.val())) {
+			if (gagajf.isNull($searchTxt.val())) {
+				validationMessage = '내용을 입력해주세요';
+				isSearchVaild = false;
+			}
+		}
+
+		// 검색구분: X / 검색내용: O
+		if (!gagajf.isNull($searchTxt.val())) {
+			if (gagajf.isNull($searchGb.val())) {
+				validationMessage = '검색구분을 선택해주세요';
+				isSearchVaild = false;
+			}
+
+		}
+		if (!isSearchVaild) {
+			mcxDialog.alertC(validationMessage, {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$searchTxt.focus();
+				}
+			});
+		}
+
+		return isSearchVaild;
+
+	}
+
+	// 검색
+	var fnSearch = function() {
+		// 유효성 체크
+		let validation = fnValidationCheck();
+		if (!validation) {
+			return;
+		}
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+	};
+
+	$(document).ready(function() {
+		// 공통 달력 생성
+		cfnCreateCalendar('#terms', 'stDate', 'edDate', true);
+		$('.btnToday').trigger('click');
+
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+
+	/*]]>*/
+</script>
+
+</html>

+ 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() {

+ 82 - 13
src/main/webapp/WEB-INF/views/order/OrderDetailForm.html

@@ -28,7 +28,61 @@
 				<input type="hidden" name="orderEmail"/>
 				
 				<h4>기본정보</h4>
-				<div id="gridOrderInfo" style="width:100%; height:100px;" class="ag-theme-balham"></div>
+				<!-- <div id="gridOrderInfo" style="width:100%; height:100px;" class="ag-theme-balham"></div> -->
+
+				<!-- TABLE -->
+				<table class="tableStyle">
+					<colgroup>
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+					</colgroup>
+					<thead>
+						<tr>
+							<th>사이트</th>
+							<th>몰구분</th>
+							<th>웹구분</th>
+							<th>외부몰</th>
+							<th>주문일시</th>
+							<th>주문자</th>
+							<th>고객번호</th>
+							<th>주문번호</th>
+							<th>이메일</th>
+							<th>핸드폰번호</th>
+							<th>회원구분</th>
+							<th>관리대상</th>
+							<th>등급</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td th:text="${orderInfo[0].siteCdNm}"></td>
+							<td th:text="${orderInfo[0].mallGbNm}"></td>
+							<td th:text="${orderInfo[0].frontGbNm}"></td>
+							<td th:text="${orderInfo[0].extmallNm}"></td>
+							<td th:text="${orderInfo[0].ordDt}"></td>
+							<td th:text="${orderInfo[0].ordNm}"></td>
+							<td th:text="${orderInfo[0].custNo}"></td>
+							<td th:text="${orderInfo[0].ordNo}"></td>
+							<td th:text="${orderInfo[0].ordEmail}"></td>
+							<td th:text="${orderInfo[0].ordPhnno}"></td>
+							<td th:text="${orderInfo[0].custGbNm}"></td>
+							<td th:text="${orderInfo[0].managedRsnNm}"></td>
+							<td th:text="${orderInfo[0].custGradeNm}"></td>
+						</tr>
+					</tbody>
+				</table>
+				<!-- //TABLE -->
 									
 				<h4>주문상품정보</h4>
 				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnExchange" style="margin-left:10px;" >교환요청</button>
@@ -163,6 +217,10 @@ var orderAgGrid = {
 	}
 }
 
+// 그리드 추가
+//gagaAgGrid.createGrid('gridList', gridOptions);
+//gagaAgGrid.hideStatusBar('gridList');
+
 // 1.주문기본정보 그리드 바인딩
 var columnDefsOrderInfo = [
 	{
@@ -219,7 +277,7 @@ var columnDefsOrderInfo = [
 	{headerName: "관리대상"	, field: "managedRsnNm"	, width: 80		, cellClass: 'text-center'},
 	{headerName: "등급"		, field: "custGradeNm"	, width: 80		, cellClass: 'text-center'}
 ];
-var gridOptionsOrderInfo = orderAgGrid.getGridOptions(columnDefsOrderInfo);
+var gridOptionsOrderInfo = gagaAgGrid.getGridOptions(columnDefsOrderInfo);
 
 // 2.상품별 상세정보
 var columnDefsGoodsInfo = [
@@ -515,7 +573,7 @@ var columnDefsGoodsInfo = [
 		]
 	}
 ];
-var gridOptionsGoodsInfo = orderAgGrid.getGridOptions(columnDefsGoodsInfo);
+var gridOptionsGoodsInfo = gagaAgGrid.getGridOptions(columnDefsGoodsInfo);
 
 // 2.5 주문사은품정보
 var columnDefsOrderFreeGiftInfo = [
@@ -541,7 +599,7 @@ var columnDefsOrderFreeGiftInfo = [
 	{headerName: "옵션코드2"		, field: "optCd2"			, width: 100, cellClass: 'text-center'},
 	{headerName: "삭제여부"		, field: "delYn"			, width: 100, cellClass: 'text-center'}
 ];
-var gridOptionsOrderFreeGiftInfo = orderAgGrid.getGridOptions(columnDefsOrderFreeGiftInfo);
+var gridOptionsOrderFreeGiftInfo = gagaAgGrid.getGridOptions(columnDefsOrderFreeGiftInfo);
 
 // 3.배송정보
 var columnDefsDeliveryInfo = [
@@ -562,7 +620,7 @@ var columnDefsDeliveryInfo = [
 	{headerName: "주소(상세)"		, field: "recipDtlAddr"		, width: 200, cellClass: 'text-left', editable: true},
 	{headerName: "배송메모"		, field: "delvMemo"			, width: 280, cellClass: 'text-left', editable: true}
 ];
-var gridOptionsDeliveryInfo = orderAgGrid.getGridOptions(columnDefsDeliveryInfo);
+var gridOptionsDeliveryInfo = gagaAgGrid.getGridOptions(columnDefsDeliveryInfo);
 
 // 4.결제정보
 var columnDefsPaymentInfo = [
@@ -610,7 +668,7 @@ var columnDefsPaymentInfo = [
 	},
 	{headerName: "계좌만료일"	, field: "vaDeadline"	, width: 150	, cellClass: 'text-center'}
 ];
-var gridOptionsPaymentInfo = orderAgGrid.getGridOptions(columnDefsPaymentInfo);
+var gridOptionsPaymentInfo = gagaAgGrid.getGridOptions(columnDefsPaymentInfo);
 
 // 5.배송비
 var columnDefsDeliveryFeeInfo = [
@@ -635,7 +693,7 @@ var columnDefsDeliveryFeeInfo = [
 		}
 	}
 ];
-var gridOptionsDeliveryFeeInfo = orderAgGrid.getGridOptions(columnDefsDeliveryFeeInfo);
+var gridOptionsDeliveryFeeInfo = gagaAgGrid.getGridOptions(columnDefsDeliveryFeeInfo);
 
 // 6. 반품/교환 정보
 var columnDefsOrderChangeInfo = [
@@ -717,7 +775,7 @@ var columnDefsOrderChangeInfo = [
 	},
 	{headerName: "회수송장번호", field: "wdInvoiceNo", width: 90, cellClass: 'text-center'}
 ];
-var gridOptionsOrderChangeInfo = orderAgGrid.getGridOptions(columnDefsOrderChangeInfo);
+var gridOptionsOrderChangeInfo = gagaAgGrid.getGridOptions(columnDefsOrderChangeInfo);
 
 // 7.환불정보
 var columnDefsRefundInfo = [
@@ -745,7 +803,7 @@ var columnDefsRefundInfo = [
 	},
 	{headerName: "환불처리자"		, field: "updNm"		, width: 120		, cellClass: 'text-center'}
 ];
-var gridOptionsRefundInfo = orderAgGrid.getGridOptions(columnDefsRefundInfo);
+var gridOptionsRefundInfo = gagaAgGrid.getGridOptions(columnDefsRefundInfo);
 
 // 8.상담내역
 var columnDefsOrderCounselInfo = [
@@ -781,7 +839,7 @@ var columnDefsOrderCounselInfo = [
 	{headerName: "답변자"			, field: "ansNm"	, width: 80		, cellClass: 'text-center'},
 	{headerName: "삭제여부"		, field: "delYn"	, width: 80		, cellClass: 'text-center'}
 ];
-var gridOptionsOrderCounselInfo = orderAgGrid.getGridOptions(columnDefsOrderCounselInfo);
+var gridOptionsOrderCounselInfo = gagaAgGrid.getGridOptions(columnDefsOrderCounselInfo);
 
 // 9.주문메모
 var columnDefsOrderMemoInfo = [
@@ -821,7 +879,7 @@ var columnDefsOrderMemoInfo = [
 		}
 	},
 ];
-var gridOptionsOrderMemoInfo = orderAgGrid.getGridOptions(columnDefsOrderMemoInfo);
+var gridOptionsOrderMemoInfo = gagaAgGrid.getGridOptions(columnDefsOrderMemoInfo);
 </script>
 
 <script>
@@ -871,7 +929,7 @@ var fnOrderDetailClose = function(){
 $(document).ready(function () {
 	
 	// 1. 그리드 그리기
-	gagaAgGrid.createGrid('gridOrderInfo'					, gridOptionsOrderInfo);			// 기본정보
+	//gagaAgGrid.createGrid('gridOrderInfo'					, gridOptionsOrderInfo);			// 기본정보
 	gagaAgGrid.createGrid('gridOrderGoodsInfo'				, gridOptionsGoodsInfo);			// 상품정보
 	gagaAgGrid.createGrid('gridOrderFreeGiftInfo'			, gridOptionsOrderFreeGiftInfo);	// 사은품정보
 	gagaAgGrid.createGrid('gridDeliveryAddrInfo'			, gridOptionsDeliveryInfo);			// 배송정보
@@ -883,7 +941,7 @@ $(document).ready(function () {
 	gagaAgGrid.createGrid('gridOrderMemoInfo'				, gridOptionsOrderMemoInfo);		// 관리자메모
 	
 	// 2. 그리드 데이터 바인딩
-	gridOptionsOrderInfo.api.setRowData(orderInfo);									// 기본정보
+	//gridOptionsOrderInfo.api.setRowData(orderInfo);								// 기본정보
 	gridOptionsGoodsInfo.api.setRowData(orderGoodsInfo);							// 상품정보
 	gridOptionsOrderFreeGiftInfo.api.setRowData(orderFreeGiftInfo);					// 사은품품정보
 	gridOptionsDeliveryInfo.api.setRowData(orderDeliveryAddrInfo);					// 배송정보
@@ -894,6 +952,17 @@ $(document).ready(function () {
 	gridOptionsOrderCounselInfo.api.setRowData(orderCounselInfo);					// 상담내역
 	gridOptionsOrderMemoInfo.api.setRowData(orderAdminMemoInfo);					// 관리자메모
 	
+	// 2.1 TOTAL ROWS 없애기
+	gagaAgGrid.hideStatusBar('gridOrderGoodsInfo');
+	gagaAgGrid.hideStatusBar('gridOrderFreeGiftInfo');
+	gagaAgGrid.hideStatusBar('gridDeliveryAddrInfo');
+	gagaAgGrid.hideStatusBar('gridPaymentInfo');
+	gagaAgGrid.hideStatusBar('gridDeliveryFeeInfo');
+	gagaAgGrid.hideStatusBar('gridOrderChangeInfo');
+	gagaAgGrid.hideStatusBar('gridOrderRefundInfo');
+	gagaAgGrid.hideStatusBar('gridOrderCounselInfo');
+	gagaAgGrid.hideStatusBar('gridOrderMemoInfo');
+	
 	// 3. 그리드 높이 설정
 	fnSetGridHeightInit();
 	

+ 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');
+	}
 }
 
 /**