Ver código fonte

Merge branch 'develop' into bin2107

bin2107 5 anos atrás
pai
commit
10f8953c0f

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

@@ -28,6 +28,15 @@ import java.util.Collection;
 @Repository
 public interface TsaCustomerDao {
 
+	/**
+	 * 활동회원 건수
+	 * @param customerSearch - 검색조건
+	 * @return int
+	 * @author jsshin
+	 * @since 2021. 2. 01
+	 */
+	int getCustomerActiveListCount(CustomerSearch customerSearch);
+
 	/**
 	 * 활동회원 목록
 	 * @param customerSearch - 검색조건
@@ -180,6 +189,15 @@ public interface TsaCustomerDao {
 	 */
 	Collection<CustContactHst> getCustomerContactList(Integer custNo);
 
+	/**
+	 * 탈퇴회원 목록 건수
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2021. 02. 01
+	 */
+	int getCustomerSecedeListCount(CustomerSearch customerSearch);
+
 	/**
 	 * 탈퇴회원 목록
 	 * @param customerSearch - 검색조건
@@ -189,6 +207,15 @@ public interface TsaCustomerDao {
 	 */
 	Collection<Customer> getCustomerSecedeList(CustomerSearch customerSearch);
 
+	/**
+	 * 휴면회원 목록 건수
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2021. 02. 01
+	 */
+	int getCustomerDormantListCount(CustomerSearch customerSearch);
+
 	/**
 	 * 휴면회원 목록
 	 * @param customerSearch - 검색조건
@@ -201,4 +228,5 @@ public interface TsaCustomerDao {
 	void createException();
 
 
+
 }

+ 33 - 0
src/main/java/com/style24/admin/biz/service/TsaCustomerService.java

@@ -41,6 +41,17 @@ public class TsaCustomerService {
 	@Autowired
 	private TscCustomerService coreCustomerService;
 
+	/**
+	 * 활동회원 건수
+	 * @param customerSearch - 검색조건
+	 * @return int
+	 * @author jsshin
+	 * @since 2021. 2. 01
+	 */
+	public int getCustomerActiveListCount(CustomerSearch customerSearch) {
+		return  customerDao.getCustomerActiveListCount(customerSearch);
+	}
+
 	/**
 	 * 활동회원 목록
 	 * @param customerSearch - 검색조건
@@ -298,6 +309,17 @@ public class TsaCustomerService {
 		coreCustomerService.createCustomerContactHistory(custContactHst);
 	}
 
+	/**
+	 * 탈퇴회원 목록 건수
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2021. 02. 01
+	 */
+	public int getCustomerSecedeListCount(CustomerSearch customerSearch) {
+		return customerDao.getCustomerSecedeListCount(customerSearch);
+	}
+
 	/**
 	 * 탈퇴회원 목록
 	 * @param customerSearch - 검색조건
@@ -309,6 +331,17 @@ public class TsaCustomerService {
 		return customerDao.getCustomerSecedeList(customerSearch);
 	}
 
+	/**
+	 * 휴면회원 목록 건수
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2021. 02. 01
+	 */
+	public int getCustomerDormantListCount(CustomerSearch customerSearch) {
+		return customerDao.getCustomerDormantListCount(customerSearch);
+	}
+
 	/**
 	 * 휴면회원 목록
 	 * @param customerSearch - 검색조건

+ 30 - 6
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -12,6 +12,7 @@ import com.style24.admin.biz.service.TsaSystemService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.session.TscSession;
 import com.style24.core.support.util.CryptoUtils;
+import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.CustContactHst;
 import com.style24.persistence.domain.CustGrade;
@@ -309,9 +310,17 @@ public class TsaCustomerController extends TsaBaseController {
 	 */
 	@PostMapping("/active/list")
 	@ResponseBody
-	public Collection<Customer> getCustomerActiveList(@RequestBody CustomerSearch customerSearch) {
+	public GagaMap getCustomerActiveList(@RequestBody CustomerSearch customerSearch) {
+		GagaMap result = new GagaMap();
+		customerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		log.info("customerSearch.toString() {}", customerSearch.toString());
+		customerSearch.setPageable(new TscPageRequest(customerSearch.getPageNo()-1, customerSearch.getPageSize()));
+		customerSearch.getPageable().setTotalCount(customerService.getCustomerActiveListCount(customerSearch));
 		TscSession.setAttribute("maskingYn", TsaSession.getInfo().getMaskingYn());
-		return customerService.getCustomerActiveList(customerSearch);
+
+		result.set("pageing", customerSearch);
+		result.set("custList", customerService.getCustomerActiveList(customerSearch));
+		return result;
 	}
 
 	/**
@@ -902,9 +911,17 @@ public class TsaCustomerController extends TsaBaseController {
 	 */
 	@PostMapping("/secede/list")
 	@ResponseBody
-	public Collection<Customer> getCustomerSecedeList(@RequestBody CustomerSearch customerSearch) {
+	public GagaMap getCustomerSecedeList(@RequestBody CustomerSearch customerSearch) {
+		GagaMap result = new GagaMap();
+		customerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		customerSearch.setPageable(new TscPageRequest(customerSearch.getPageNo() - 1, customerSearch.getPageSize()));
+		customerSearch.getPageable().setTotalCount(customerService.getCustomerSecedeListCount(customerSearch));
+
 		TscSession.setAttribute("maskingYn", TsaSession.getInfo().getMaskingYn());
-		return customerService.getCustomerSecedeList(customerSearch);
+		result.set("pageing", customerSearch);
+		result.set("custList", customerService.getCustomerSecedeList(customerSearch));
+
+		return result;
 	}
 
 	/**
@@ -934,9 +951,16 @@ public class TsaCustomerController extends TsaBaseController {
 	 */
 	@PostMapping("/dormant/list")
 	@ResponseBody
-	public Collection<Customer>getCustomerDormantList(@RequestBody CustomerSearch customerSearch) {
+	public GagaMap getCustomerDormantList(@RequestBody CustomerSearch customerSearch) {
+		GagaMap result = new GagaMap();
+		customerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		customerSearch.setPageable(new TscPageRequest(customerSearch.getPageNo() - 1, customerSearch.getPageSize()));
+		customerSearch.getPageable().setTotalCount(customerService.getCustomerDormantListCount(customerSearch));
 		TscSession.setAttribute("maskingYn", TsaSession.getInfo().getMaskingYn());
-		return customerService.getCustomerDormantList(customerSearch);
+
+		result.set("pageing", customerSearch);
+		result.set("custList", customerService.getCustomerDormantList(customerSearch));
+		return result;
 	}
 
 

+ 6 - 0
src/main/java/com/style24/persistence/domain/CustomerSearch.java

@@ -1,6 +1,7 @@
 package com.style24.persistence.domain;
 
 import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -33,4 +34,9 @@ public class CustomerSearch extends TscBaseDomain {
 	private String email;
 	private String custId;
 
+	private TscPageRequest pageable;
+	private int pageNo = 1;
+	private int pageSize = 50;
+	private int pageUnit = 10;
+
 }

+ 168 - 13
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -2,9 +2,85 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.style24.admin.biz.dao.TsaCustomerDao">
 
+	<!-- 페이징을 위한 select절 상단 -->
+	<sql id="selectForPagingHeader">
+		SELECT *
+		FROM (
+	</sql>
+
+	<!-- 페이징을 위한 select절 하단 -->
+	<sql id="selectForPagingFooter">
+		) ORIGINAL
+		WHERE NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+	</sql>
+
+	<!-- 활동회원목록 -->
+	<select id="getCustomerActiveListCount" parameterType="CustomerSearch" resultType="int">
+		/* TsaCustomer.getCustomerActiveListCount */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_CUSTOMER
+		WHERE  CUST_STAT = 'G104_10'
+		<if test="searchGb == 'custNo'">
+		AND    CUST_NO = #{searchTxt}
+		</if>
+		<if test="searchGb == 'custNm'">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="searchGb == 'email'">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="searchGb == 'custId'">
+		AND    LOWER(CUST_ID) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="siteCd != null and siteCd != ''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+		<if test="cellPhnno != null and cellPhnno != ''">
+		AND    CELL_PHNNO = #{cellPhnno}
+		</if>
+		<if test="custGb != null and custGb != ''">
+		AND    CUST_GB = #{custGb}
+		</if>
+		<if test="custGrade != null and custGrade != ''">
+		AND    CUST_GRADE = #{custGrade}
+		</if>
+		<if test="managedRsn != null and managedRsn != ''">
+		AND    MANAGED_RSN = #{managedRsn}
+		</if>
+		<if test="smsAgreeYn != null and smsAgreeYn != ''">
+		AND   SMS_AGREE_YN = #{smsAgreeYn}
+		</if>
+		<if test="emailAgreeYn != null and emailAgreeYn != ''">
+		AND   EMAIL_AGREE_YN = #{emailAgreeYn}
+		</if>
+		<if test="appAgreeYn != null and appAgreeYn != ''">
+		AND   APP_AGREE_YN = #{appAgreeYn}
+		</if>
+		<if test="stDate != null and edDate != '' and stDate != null and edDate != ''">
+		     <if test="searchDateGb == 'joinDt'">
+		AND   JOIN_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND   JOIN_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		     </if>
+		     <if test="searchDateGb == 'loginLdt'">
+		AND   LOGIN_LDT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND   LOGIN_LDT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		     </if>
+		</if>
+		<if test="custNm != null and custNm != ''">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{custNm}),'%')
+		</if>
+		<if test="email != null and email != ''">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{eamil}),'%')
+		</if>
+		<if test="custId != null and custId != ''">
+		AND    CUST_ID = #{custId}
+		</if>
+	</select>
+
 	<!-- 활동회원목록 -->
 	<select id="getCustomerActiveList" parameterType="CustomerSearch" resultType="Customer">
 		/* TsaCustomer.getCustomerActiveList */
+		<include refid="selectForPagingHeader"/>
 		SELECT CUST_NO
 		     , CUST_ID
 		     , CUST_NM
@@ -51,10 +127,16 @@
 		     , SECEDE_RSN
 		     , SECEDE_DTL_RSN
 		     , DATE_FORMAT(SECEDE_DT, '%Y%m%d%H%i%S') AS SECEDE_DT
-		     , FN_GET_USER_NM(REG_NO)              AS REG_NM
-		     , DATE_FORMAT(REG_DT, '%Y%m%d%H%i%S') AS REG_DT
-		     , FN_GET_USER_NM(UPD_NO)              AS UPD_NM
-		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		     , FN_GET_USER_NM(REG_NO)                 AS REG_NM
+		     , DATE_FORMAT(REG_DT, '%Y%m%d%H%i%S')    AS REG_DT
+		     , FN_GET_USER_NM(UPD_NO)                 AS UPD_NM
+		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S')    AS UPD_DT
+		     <if test="searchDateGb == 'joinDt'">
+		     , RANK() OVER(ORDER BY JOIN_DT DESC)     AS NUMB
+		     </if>
+		     <if test="searchDateGb == 'loginLdt'">
+		     , RANK() OVER(ORDER BY LOGIN_LDT DESC)   AS NUMB
+		     </if>
 		FROM   TB_CUSTOMER
 		WHERE  CUST_STAT = 'G104_10'
 		<if test="searchGb == 'custNo'">
@@ -112,6 +194,7 @@
 		<if test="custId != null and custId != ''">
 		AND    CUST_ID = #{custId}
 		</if>
+		<include refid="selectForPagingFooter"/>
 	</select>
 
 	<!--회원정보 수정-->
@@ -657,8 +740,43 @@
 	</select>
 
 	<!-- 탈퇴회원목록 -->
+	<select id="getCustomerSecedeListCount" parameterType="CustomerSearch" resultType="int">
+		/* TsaCustomer.getCustomerSecedeListCount */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_SECEDE_CUST
+		WHERE  CUST_STAT = 'G104_30'
+		<if test="searchTxt != null and searchTxt != ''">
+		    <if test="searchGb == 'custNo'">
+		AND    CUST_NO = #{searchTxt}
+		    </if>
+		    <if test="searchGb == 'custNm'">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		    <if test="searchGb == 'email'">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		    <if test="searchGb == 'custNo'">
+		AND    LOWER(CUST_NO) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		</if>
+		<if test="siteCd != null and siteCd != ''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+		<if test="cellPhnno != null and cellPhnno != ''">
+		AND    CELL_PHNNO = #{cellPhnno}
+		</if>
+		<if test="secedeRsn != null and secedeRsn != ''">
+		AND    SECEDE_RSN = #{secedeRsn}
+		</if>
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		AND    SECEDE_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND    SECEDE_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		</if>
+	</select>
+
 	<select id="getCustomerSecedeList" parameterType="CustomerSearch" resultType="Customer">
 		/* TsaCustomer.getSecedeCustomerList */
+		<include refid="selectForPagingHeader"/>
 		SELECT CUST_NO
 		     , CUST_ID
 		     , CUST_NM
@@ -705,10 +823,11 @@
 		     , SECEDE_RSN
 		     , SECEDE_DTL_RSN
 		     , DATE_FORMAT(SECEDE_DT, '%Y%m%d%H%i%S') AS SECEDE_DT
-		     , FN_GET_USER_NM(REG_NO)              AS REG_NM
-		     , DATE_FORMAT(REG_DT, '%Y%m%d%H%i%S') AS REG_DT
-		     , FN_GET_USER_NM(UPD_NO)              AS UPD_NM
-		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		     , FN_GET_USER_NM(REG_NO)                 AS REG_NM
+		     , DATE_FORMAT(REG_DT, '%Y%m%d%H%i%S')    AS REG_DT
+		     , FN_GET_USER_NM(UPD_NO)                 AS UPD_NM
+		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S')    AS UPD_DT
+		     , RANK() OVER(ORDER BY SECEDE_DT DESC)   AS NUMB
 		FROM   TB_SECEDE_CUST
 		WHERE  CUST_STAT = 'G104_30'
 		<if test="searchTxt != null and searchTxt != ''">
@@ -738,11 +857,45 @@
 		AND    SECEDE_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
 		AND    SECEDE_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
 		</if>
+		<include refid="selectForPagingFooter"/>
+	</select>
+
+	<!-- 휴면회원목록 -->
+	<select id="getCustomerDormantListCount" parameterType="CustomerSearch" resultType="int">
+		/* TsaCustomer.getCustomerDormantListCount */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_DORMANT_CUST
+		WHERE  CUST_STAT = 'G104_20'
+		<if test="searchTxt != null and searchTxt != ''">
+		    <if test="searchGb == 'custNo'">
+		AND    CUST_NO = #{searchTxt}
+		    </if>
+		    <if test="searchGb == 'custNm'">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		    <if test="searchGb == 'email'">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		    <if test="searchGb == 'custNo'">
+		AND    LOWER(CUST_NO) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		    </if>
+		</if>
+		<if test="siteCd != null and siteCd != ''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+		<if test="cellPhnno != null and cellPhnno != ''">
+		AND    CELL_PHNNO = #{cellPhnno}
+		</if>
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		AND    DORMANT_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND    DORMANT_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		</if>
 	</select>
 
 	<!-- 휴면회원목록 -->
 	<select id="getCustomerDormantList" parameterType="CustomerSearch" resultType="Customer">
 		/* TsaCustomer.getDormantCustomerList */
+		<include refid="selectForPagingHeader"/>
 		SELECT CUST_NO
 		     , CUST_ID
 		     , CUST_NM
@@ -788,12 +941,13 @@
 		     , DATE_FORMAT(MANAGED_DT, '%Y%m%d%H%i%S') AS MANAGED_DT
 		     , SECEDE_RSN
 		     , SECEDE_DTL_RSN
-		     , DATE_FORMAT(SECEDE_DT, '%Y%m%d%H%i%S') AS SECEDE_DT
-		     , FN_GET_USER_NM(REG_NO)              AS REG_NM
-		     , DATE_FORMAT(REG_DT, '%Y%m%d%H%i%S') AS REG_DT
-		     , FN_GET_USER_NM(UPD_NO)              AS UPD_NM
-		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		     , DATE_FORMAT(SECEDE_DT, '%Y%m%d%H%i%S')  AS SECEDE_DT
+		     , FN_GET_USER_NM(REG_NO)                  AS REG_NM
+		     , DATE_FORMAT(REG_DT, '%Y%m%d%H%i%S')     AS REG_DT
+		     , FN_GET_USER_NM(UPD_NO)                  AS UPD_NM
+		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S')     AS UPD_DT
 		     , DATE_FORMAT(DORMANT_DT, '%Y%m%d%H%i%S') AS DORMANT_DT
+		     , RANK() OVER(ORDER BY DORMANT_DT DESC)   AS NUMB
 		FROM   TB_DORMANT_CUST
 		WHERE  CUST_STAT = 'G104_20'
 		<if test="searchTxt != null and searchTxt != ''">
@@ -820,6 +974,7 @@
 		AND    DORMANT_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
 		AND    DORMANT_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
 		</if>
+		<include refid="selectForPagingFooter"/>
 	</select>
 
 	<insert id="createException">

+ 37 - 39
src/main/webapp/WEB-INF/views/customer/CellphoneChangePopupForm.html

@@ -14,7 +14,7 @@
  * 1.0  2021.01.25   jsshin     최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" data-width="800">
+<div class="modelessPopup" data-width="800">
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -24,45 +24,43 @@
 		<!-- //TITLE -->
 		<!-- CONTENT -->
 		<div class="panelContent">
-			<div class="panelStyle">
-				<form id="cellPhoneForm" name="cellPhoneForm">
-					<input type="hidden" id="custNo" name="custNo">
-					<table class="frmStyle">
-						<colgroup>
-							<col style="width:1%"/>
-							<col style="width:40%"/>
-						</colgroup>
-						<tbody>
-						<tr>
-							<span class="infoTxt cBlue"><i class="fa fa-info-circle"></i>인증번호 확인 후 번호변경가능 </span>
-							<span class="infoTxt cBlue"><i class="fa fa-info-circle"></i>변경 할 휴대폰번호 입력 후 전송</span> <br/>
-							<span class="infoTxt cBlue"><i class="fa fa-info-circle"></i>인증번호는 6자리 입니다.</span><br/>
-							<th>기존휴대전화번호<em class="star"></em></th>
-							<td>
-								<input type="text" class="w150" name="orgCellPhone" maxlength="13" readonly="readonly"/>
-							</td>
-							<th>변경할휴대전화번호<em class="star"></em></th>
-							<td>
-								<input type="text" class="w150" name="cellPhnno" required="required" maxlength="13" data-valid-name="휴대전화번호" />
-							</td>
-						</tr>
-						<tr id="trCertNo" style="display: none">
-							<th>인증번호</th>
-							<td>
-								<input type="text" class="w200" name="certNo" placeholder="인증번호 입력" style="display:none;">
-							</td>
-						</tr>
-						</tbody>
-					</table>
-				</form>
-			</div>
-			<ul class="panelBar">
-				<li class="right">
-					<button type="button" id="btnSendCustCrtfdNo" class="btn btn-success btn-lg" >인증번호발송</button>
-					<button type="button" id="btnCustCertNo" class="btn btn-success btn-lg" style="display: none">확인(번호변경)</button>
-				</li>
-			</ul>
+			<form id="cellPhoneForm" name="cellPhoneForm">
+				<input type="hidden" id="custNo" name="custNo">
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:1%"/>
+						<col style="width:40%"/>
+					</colgroup>
+					<tbody>
+					<tr>
+						<span class="infoTxt cBlue"><i class="fa fa-info-circle"></i>인증번호 확인 후 번호변경가능 </span>
+						<span class="infoTxt cBlue"><i class="fa fa-info-circle"></i>변경 할 휴대폰번호 입력 후 전송</span> <br/>
+						<span class="infoTxt cBlue"><i class="fa fa-info-circle"></i>인증번호는 6자리 입니다.</span><br/>
+						<th>기존휴대전화번호<em class="star"></em></th>
+						<td>
+							<input type="text" class="w150" name="orgCellPhone" maxlength="13" readonly="readonly"/>
+						</td>
+						<th>변경할휴대전화번호<em class="star"></em></th>
+						<td>
+							<input type="text" class="w150" name="cellPhnno" required="required" maxlength="13" data-valid-name="휴대전화번호" />
+						</td>
+					</tr>
+					<tr id="trCertNo" style="display: none">
+						<th>인증번호</th>
+						<td>
+							<input type="text" class="w200" name="certNo" placeholder="인증번호 입력" style="display:none;">
+						</td>
+					</tr>
+					</tbody>
+				</table>
+			</form>
 		</div>
+		<ul class="panelBar">
+			<li class="right">
+				<button type="button" id="btnSendCustCrtfdNo" class="btn btn-success btn-lg" >인증번호발송</button>
+				<button type="button" id="btnCustCertNo" class="btn btn-success btn-lg" style="display: none">확인(번호변경)</button>
+			</li>
+		</ul>
 		<!-- //CONTENT -->
 	</div>
 </div>

+ 127 - 97
src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html

@@ -26,109 +26,128 @@
 	<!-- //메뉴 설명 -->
 
 	<!-- 검색조건 영역 -->
-	<div class="panelStyle">
-		<form id="searchForm" name="searchForm" action="#" th:action="@{'/customer/active/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="custNm">회원명 </option>
-							<option value="email">이메일</option>
-							<option value="custId">아이디</option>
-						</select>
-						<input type="text" class="w200" name="searchTxt" id="searchTxt"/>
-					</td>
+	<div class="panelContent">
+		<form id="custActiveForm" name="custActiveForm" action="#" th:action="@{'/customer/active/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+		<div class="panelStyle">
+				<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="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">
-						<label class="chkBox">
-							<input type="checkbox" name='emailAgreeYn' value='Y'/> 메일 수신여부
-						</label>
-						<label class="chkBox">
-							<input type="checkbox" name='smsAgreeYn' value='Y'/> SMS 수신여부
-						</label>
-					</td>
-				</tr>
-				<tr>
-					<th class="dashR">회원구분</th>
-					<td class="dashR">
-						<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>
-					</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">
+							<label class="chkBox">
+								<input type="checkbox" name='emailAgreeYn' value='Y'/> 메일 수신여부
+							</label>
+							<label class="chkBox">
+								<input type="checkbox" name='smsAgreeYn' value='Y'/> SMS 수신여부
+							</label>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">회원구분</th>
+						<td class="dashR">
+							<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>
+						</td>
 
-					<th class="dashR">회원등급</th>
-					<td class="dashR">
-						<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>
-					</td>
+						<th class="dashR">회원등급</th>
+						<td class="dashR">
+							<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>
+						</td>
 
-					<th class="dashR">관리대상</th>
-					<td class="dashR">
-						<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>
-					</td>
-				</tr>
-				<tr>
-					<th class="dashR">휴대폰번호</th>
-					<td class="dashR" colspan="5">
-						<input type="text" class="w200" name="cellPhnno" id="cellPhnno"/>
-					</td>
-				</tr>
-				<tr>
-					<th class="dashR">조회일자</th>
-					<td class="dashR" colspan="5" >
-						<select name="searchDateGb">
-							<option value="joinDt">가입일자</option>
-							<option value="loginLdt">로그인일자</option>
-						</select>
-						<span id="terms"></span>
-					</td>
-				</tr>
-				</tbody>
-			</table>
+						<th class="dashR">관리대상</th>
+						<td class="dashR">
+							<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>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">휴대폰번호</th>
+						<td class="dashR" colspan="5">
+							<input type="text" class="w200" name="cellPhnno" id="cellPhnno"/>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">조회일자</th>
+						<td class="dashR" colspan="5" >
+							<select name="searchDateGb">
+								<option value="joinDt">가입일자</option>
+								<option value="loginLdt">로그인일자</option>
+							</select>
+							<span id="terms"></span>
+						</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="$('#custActiveForm')[0].reset();">초기화</button>
+					</li>
+				</ul>
+		</div>
+		<!-- //검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<ul class="panelBar">
+				<li class="right">
+					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
+					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+					<select id="pageSize" name="pageSize">
+						<option value="50" selected="selected">50개씩 보기</option>
+						<option value="100">100개씩 보기</option>
+						<option value="500">500개씩 보기</option>
+						<option value="1000">1000개씩 보기</option>
+					</select>
+					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+				</li>
+			</ul>
+			<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
 			<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>
+					<div class="tablePaging" id="custListPagination"></div>
 				</li>
 			</ul>
+		</div>
 		</form>
 	</div>
-	<!-- //검색조건 영역 -->
-
-	<!-- 리스트 영역 -->
-	<div class="panelStyle">
-		<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
-	</div>
-	<!-- //리스트 영역 -->
 </div>
-
+<script type="text/javascript" th:src="@{'/ux/plugins/gaga/gaga.paging.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	/*<![CDATA[*/
 
@@ -205,22 +224,22 @@
 	});
 
 	//엔터키 조회
-	$('#searchForm input[name=cellPhnno], #searchForm input[name=searchNm]').on('keypress' ,function (event) {
+	$('#custActiveForm input[name=cellPhnno], #custActiveForm input[name=searchNm]').on('keypress' ,function (event) {
 		if (event.which === 13) {
 			fnSearch();
 		}
 	});
 
 	// 휴대폰 자동 하이픈
-	$('#searchForm input[name=cellPhnno]').on('input keyup keydown paste change', function () {
+	$('#custActiveForm 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]');	// 검색내용
+		const $searchGb = $('#custActiveForm select[name=searchGb]');	// 검색구분
+		const $searchTxt = $('#custActiveForm input[name=searchTxt]');	// 검색내용
 		let isSearchVaild = true;
 		let validationMessage;
 
@@ -261,9 +280,20 @@
 		if (!validation) {
 			return;
 		}
-		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+		//gagaAgGrid.fetch($('#custActiveForm').prop('action'), gridOptions, '#custActiveForm');
+		gagaPaging.init('custActiveForm', fnSearchCallBack, 'custListPagination', $('#custActiveForm select[name=pageSize]').val());
+		gagaPaging.load($('#custActiveForm input[name=pageNo]').val());
 	};
 
+	var fnSearchCallBack = function (result) {
+		$('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+		$('#custActiveForm input[name=pageNo]').val(result.pageing.pageable.pageNo.addComma());
+		$('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+		$('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+
+		gridOptions.api.setRowData(result.custList);
+		gagaPaging.createPagination(result.pageing.pageable);
+	};
 
 	$(document).ready(function() {
 		// 공통 달력 생성

+ 92 - 61
src/main/webapp/WEB-INF/views/customer/CustomerDormantListForm.html

@@ -26,67 +26,86 @@
 	<!-- //메뉴 설명 -->
 
 	<!-- 검색조건 영역 -->
-	<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="custNm">회원명 </option>
-							<option value="email">이메일</option>
-							<option value="custId">아이디</option>
+	<div class="panelContent">
+		<form id="custDormantForm" name="custDormantForm" action="#" th:action="@{'/customer/dormant/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+			<div class="panelStyle">
+				<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="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="$('#custDormantForm')[0].reset();">초기화</button>
+					</li>
+				</ul>
+			</div>
+			<!-- //검색조건 영역 -->
+			<!-- 리스트 영역 -->
+			<div class="panelStyle">
+				<ul class="panelBar">
+					<li class="right">
+						검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
+						쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+						<select id="pageSize" name="pageSize">
+							<option value="50" selected="selected">50개씩 보기</option>
+							<option value="100">100개씩 보기</option>
+							<option value="500">500개씩 보기</option>
+							<option value="1000">1000개씩 보기</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>
+						<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+					</li>
+				</ul>
+				<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
+				<ul class="panelBar">
+					<li class="center">
+						<div class="tablePaging" id="custListPagination"></div>
+					</li>
+				</ul>
+			</div>
+			<!-- //리스트 영역 -->
 		</form>
 	</div>
-	<!-- //검색조건 영역 -->
-
-	<!-- 리스트 영역 -->
-	<div class="panelStyle">
-		<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
-	</div>
-	<!-- //리스트 영역 -->
 </div>
 
+<script type="text/javascript" th:src="@{'/ux/plugins/gaga/gaga.paging.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	/*<![CDATA[*/
 	// 사이트목록
@@ -126,22 +145,22 @@
 	});
 
 	//엔터키 조회
-	$('#searchForm input[name=cellPhnno], #searchForm input[name=searchNm]').on('keypress', function (event) {
+	$('#custDormantForm input[name=cellPhnno], #custDormantForm input[name=searchNm]').on('keypress', function (event) {
 		if (event.which === 13) {
 			fnSearch();
 		}
 	});
 
 	// 휴대폰 자동 하이픈
-	$('#searchForm input[name=cellPhnno]').on('input keyup keydown paste change', function () {
+	$('#custDormantForm 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]');	// 검색내용
+		const $searchGb = $('#custDormantForm select[name=searchGb]');	// 검색구분
+		const $searchTxt = $('#custDormantForm input[name=searchTxt]');	// 검색내용
 		let isSearchVaild = true;
 		let validationMessage;
 
@@ -181,7 +200,19 @@
 		if (!validation) {
 			return;
 		}
-		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+		//gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+		gagaPaging.init('custDormantForm', fnSearchCallBack, 'custListPagination', $('#custDormantForm select[name=pageSize]').val());
+		gagaPaging.load($('#custDormantForm input[name=pageNo]').val());
+	};
+
+	var fnSearchCallBack = function (result) {
+		$('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+		$('#custDormantForm input[name=pageNo]').val(result.pageing.pageable.pageNo.addComma());
+		$('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+		$('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+
+		gridOptions.api.setRowData(result.custList);
+		gagaPaging.createPagination(result.pageing.pageable);
 	};
 
 	$(document).ready(function() {

+ 39 - 7
src/main/webapp/WEB-INF/views/customer/CustomerSecedeListForm.html

@@ -27,7 +27,7 @@
 
 	<!-- 검색조건 영역 -->
 	<div class="panelStyle">
-		<form id="searchForm" name="searchForm" action="#" th:action="@{'/customer/secede/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+		<form id="custSecedeForm" name="custSecedeForm" action="#" th:action="@{'/customer/secede/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
 			<table class="frmStyle" aria-describedby="검색조건">
 				<colgroup>
 					<col style="width:10%;"/>
@@ -82,7 +82,7 @@
 			<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>
+					<button type="button" class="btn btn-gray btn-lg" onclick="$('#custSecedeForm')[0].reset();">초기화</button>
 				</li>
 			</ul>
 		</form>
@@ -91,11 +91,30 @@
 
 	<!-- 리스트 영역 -->
 	<div class="panelStyle">
+		<ul class="panelBar">
+			<li class="right">
+				검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
+				쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+				<select id="pageSize" name="pageSize">
+					<option value="50" selected="selected">50개씩 보기</option>
+					<option value="100">100개씩 보기</option>
+					<option value="500">500개씩 보기</option>
+					<option value="1000">1000개씩 보기</option>
+				</select>
+				<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+			</li>
+		</ul>
 		<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
+		<ul class="panelBar">
+			<li class="center">
+				<div class="tablePaging" id="custListPagination"></div>
+			</li>
+		</ul>
 	</div>
 	<!-- //리스트 영역 -->
 </div>
 
+<script type="text/javascript" th:src="@{'/ux/plugins/gaga/gaga.paging.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	/*<![CDATA[*/
 	// 사이트목록
@@ -135,22 +154,22 @@
 	});
 
 	//엔터키 조회
-	$('#searchForm input[name=cellPhnno], #searchForm input[name=searchNm]').on('keypress', function (event) {
+	$('#custSecedeForm input[name=cellPhnno], #custSecedeForm input[name=searchNm]').on('keypress', function (event) {
 		if (event.which === 13) {
 			fnSearch();
 		}
 	});
 
 	// 휴대폰 자동 하이픈
-	$('#searchForm input[name=cellPhnno]').on('input keyup keydown paste change', function () {
+	$('#custSecedeForm 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]');	// 검색내용
+		const $searchGb = $('#custSecedeForm select[name=searchGb]');	// 검색구분
+		const $searchTxt = $('#custSecedeForm input[name=searchTxt]');	// 검색내용
 		let isSearchVaild = true;
 		let validationMessage;
 
@@ -190,7 +209,20 @@
 		if (!validation) {
 			return;
 		}
-		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+		//gagaAgGrid.fetch($('#custSecedeForm').prop('action'), gridOptions, '#custSecedeForm');
+
+		gagaPaging.init('custSecedeForm', fnSearchCallBack, 'custListPagination', $('#custSecedeForm select[name=pageSize]').val());
+		gagaPaging.load($('#custSecedeForm input[name=pageNo]').val());
+	};
+
+	var fnSearchCallBack = function (result) {
+		$('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+		$('#custSecedeForm input[name=pageNo]').val(result.pageing.pageable.pageNo.addComma());
+		$('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+		$('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+
+		gridOptions.api.setRowData(result.custList);
+		gagaPaging.createPagination(result.pageing.pageable);
 	};
 
 	$(document).ready(function() {

+ 43 - 45
src/main/webapp/WEB-INF/views/customer/EmailPopupForm.html

@@ -14,7 +14,7 @@
  * 1.0  2021.01.21   jsshin     최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" data-width="800">
+<div class="modelessPopup" data-width="800">
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -24,51 +24,49 @@
 		<!-- //TITLE -->
 		<!-- CONTENT -->
 		<div class="panelContent">
-			<div class="panelStyle">
-				<form id="emailForm" name="emailForm">
-					<input type="hidden" name="sendEmail" th:value="${sendEmail}"/>
-					<input type="hidden" name="email"/>
-					<table class="frmStyle">
-						<colgroup>
-							<col style="width:1%"/>
-							<col style="width:40%"/>
-						</colgroup>
-						<tbody>
-						<tr >
-							<th>보내는사람</th>
-							<td>
-								<span name="sendEmail" th:text="${sendEmail}"></span>
-							</td>
-						</tr>
-						<tr>
-							<th>받는사람</th>
-							<td>
-								<span name="email"></span>
-							</td>
-						</tr>
-						<tr>
-							<th>제목<em class="star"></em></th>
-							<td>
-								<input type="text" class="w150" name="title" value="" required="required" data-valid-name="제목"/>
-							</td>
-						</tr>
-						<tr>
-							<th>내용<em class="star"></em></th>
-							<td>
-								<textarea class="textareaR4" style="resize: none;" name ="content" ></textarea>
-							</td>
-						</tr>
-						</tbody>
-					</table>
-				</form>
-			</div>
-			<ul class="panelBar">
-				<li class="right">
-					<button type="button" class="btn btn-success btn-lg" id="btnSendEmail">발송</button>
-					<button type="button" class="btn btn-gray btn-lg" onclick="uifnPopupClose('popupEmailForm')">취소</button>
-				</li>
-			</ul>
+			<form id="emailForm" name="emailForm">
+				<input type="hidden" name="sendEmail" th:value="${sendEmail}"/>
+				<input type="hidden" name="email"/>
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:1%"/>
+						<col style="width:40%"/>
+					</colgroup>
+					<tbody>
+					<tr >
+						<th>보내는사람</th>
+						<td>
+							<span name="sendEmail" th:text="${sendEmail}"></span>
+						</td>
+					</tr>
+					<tr>
+						<th>받는사람</th>
+						<td>
+							<span name="email"></span>
+						</td>
+					</tr>
+					<tr>
+						<th>제목<em class="star"></em></th>
+						<td>
+							<input type="text" class="w150" name="title" value="" required="required" data-valid-name="제목"/>
+						</td>
+					</tr>
+					<tr>
+						<th>내용<em class="star"></em></th>
+						<td>
+							<textarea class="textareaR4" style="resize: none;" name ="content" ></textarea>
+						</td>
+					</tr>
+					</tbody>
+				</table>
+			</form>
 		</div>
+		<ul class="panelBar">
+			<li class="right">
+				<button type="button" class="btn btn-success btn-lg" id="btnSendEmail">발송</button>
+				<button type="button" class="btn btn-gray btn-lg" onclick="uifnPopupClose('popupEmailForm')">취소</button>
+			</li>
+		</ul>
 		<!-- //CONTENT -->
 	</div>
 </div>

+ 36 - 38
src/main/webapp/WEB-INF/views/customer/LmsPopupForm.html

@@ -14,7 +14,7 @@
  * 1.0  2021.01.21   jsshin     최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" data-width="800">
+<div class="modelessPopup" data-width="800">
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -24,44 +24,42 @@
 		<!-- //TITLE -->
 		<!-- CONTENT -->
 		<div class="panelContent">
-			<div class="panelStyle">
-				<form id="lmsForm" name="lmsForm">
-					<table class="frmStyle">
-						<colgroup>
-							<col style="width:1%"/>
-							<col style="width:40%"/>
-						</colgroup>
-						<tbody>
-						<tr >
-							<th>수신자번호<em class="required" title="필수"></em></th>
-							<td>
-								<input type="text" class="w150" name="cellPhnno" data-valid-name="수신번호"  required="required"  maxlength="13"/>
-							</td>
-						</tr>
-						<tr>
-							<th>발신자번호<em class="required" title="필수"></em></th>
-							<td>
-								<input type="text" class="w150" name="callBack" th:value="${callBack}" maxlength="11" readonly="readonly"/>
-							</td>
-						</tr>
-						<tr>
-							<th>메시지<em class="required" title="필수"></em></th>
-							<td>
-								<textarea class="textareaR4"  style="resize: none;" name ="content" ></textarea>
-								<span name="count">0</span> / 2000 byte
-							</td>
-						</tr>
-						</tbody>
-					</table>
-				</form>
-			</div>
-			<ul class="panelBar">
-				<li class="right">
-					<button type="button" class="btn btn-success btn-lg" id="btnSendSms">발송</button>
-					<button type="button" class="btn btn-gray btn-lg" onclick="uifnPopupClose('popupLmsForm')">취소</button>
-				</li>
-			</ul>
+			<form id="lmsForm" name="lmsForm">
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:1%"/>
+						<col style="width:40%"/>
+					</colgroup>
+					<tbody>
+					<tr >
+						<th>수신자번호<em class="required" title="필수"></em></th>
+						<td>
+							<input type="text" class="w150" name="cellPhnno" data-valid-name="수신번호"  required="required"  maxlength="13"/>
+						</td>
+					</tr>
+					<tr>
+						<th>발신자번호<em class="required" title="필수"></em></th>
+						<td>
+							<input type="text" class="w150" name="callBack" th:value="${callBack}" maxlength="11" readonly="readonly"/>
+						</td>
+					</tr>
+					<tr>
+						<th>메시지<em class="required" title="필수"></em></th>
+						<td>
+							<textarea class="textareaR4"  style="resize: none;" name ="content" ></textarea>
+							<span name="count">0</span> / 2000 byte
+						</td>
+					</tr>
+					</tbody>
+				</table>
+			</form>
 		</div>
+		<ul class="panelBar">
+			<li class="right">
+				<button type="button" class="btn btn-success btn-lg" id="btnSendSms">발송</button>
+				<button type="button" class="btn btn-gray btn-lg" onclick="uifnPopupClose('popupLmsForm')">취소</button>
+			</li>
+		</ul>
 		<!-- //CONTENT -->
 	</div>
 </div>