Przeglądaj źródła

Merge remote-tracking branch 'origin/develop' into xodud1202

xodud1202 5 lat temu
rodzic
commit
72b5df5210

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

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

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

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