|
|
@@ -0,0 +1,1471 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html lang="ko"
|
|
|
+ xmlns:th="http://www.thymeleaf.org">
|
|
|
+<!--
|
|
|
+ *******************************************************************************
|
|
|
+ * @source : CustomerDetailForm.html
|
|
|
+ * @desc : 회원 상세 팝업 Page
|
|
|
+ *============================================================================
|
|
|
+ * STYLE24
|
|
|
+ * Copyright(C) 2020 TSIT, All rights reserved.
|
|
|
+ *============================================================================
|
|
|
+ * VER DATE AUTHOR DESCRIPTION
|
|
|
+ * === =========== ========== =============================================
|
|
|
+ * 1.0 2020.01.18 jsshin 최초 작성
|
|
|
+ *******************************************************************************
|
|
|
+ -->
|
|
|
+<div class="modalPopup" id="popupCustomerDetail">
|
|
|
+ <div class="panelStyle">
|
|
|
+ <!-- TITLE -->
|
|
|
+ <div class="panelTitle">
|
|
|
+ <strong>회원상세</strong>
|
|
|
+ <button type="button" class="close" onclick="uifnPopupClose('popupCustomerDetail');"><em class="fa fa-times"></em></button>
|
|
|
+ </div>
|
|
|
+ <!-- //TITLE -->
|
|
|
+
|
|
|
+ <!-- CONTENT -->
|
|
|
+ <div class="panelContent">
|
|
|
+ <table class="frmStyle" aria-describedby="회원정보">
|
|
|
+ <colgroup>
|
|
|
+ <col style="width:10%;"/>
|
|
|
+ <col style="width:15%;"/>
|
|
|
+ <col style="width:10%;"/>
|
|
|
+ <col style="width:15%;"/>
|
|
|
+ <col style="width:10%;"/>
|
|
|
+ <col style="width:15%;"/>
|
|
|
+ </colgroup>
|
|
|
+ <tbody>
|
|
|
+ <th>이름</th>
|
|
|
+ <td>
|
|
|
+ <span name="custNm"></span>
|
|
|
+ <span name="managedRsnNm" class="infoTxt cRed" style="font-size:15px;"></span>
|
|
|
+ </td>
|
|
|
+ <th>아이디</th>
|
|
|
+ <td><span name="custId"></span>
|
|
|
+ <th:block th:if="${sessionInfo.userId == 'jsshin'}">
|
|
|
+ <button type="button" class="btn btnRight btn-success btn-lg" id="btnLogin">Login</button>
|
|
|
+ </th:block>
|
|
|
+ </td>
|
|
|
+ <!--<th>등급</th>-->
|
|
|
+ <!--<td><span name="custGradeNm"></span></td>-->
|
|
|
+ <th>가입사이트</th>
|
|
|
+ <td><span name="siteNm"></span></td>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- TABS SPACE -->
|
|
|
+ <div class="tabs">
|
|
|
+ <!-- TABS NAVI -->
|
|
|
+ <ul class="tabsNav">
|
|
|
+ <li class="on"><a href="#tab1" onclick="fnSearchCustInfo();">기본정보</a></li>
|
|
|
+ <li><a href="#tab2" onclick="fnSearchOrder();">주문내역</a></li>
|
|
|
+ <li><a href="#tab3" onclick="fnSearchCounsel();">1:1문의내역</a></li>
|
|
|
+ <li><a href="#tab4" onclick="fnSearchGoodsQna();">상품문의내역</a></li>
|
|
|
+ <li><a href="#tab5" onclick="fnSearchCoupon();">쿠폰내역</a></li>
|
|
|
+ <li><a href="#tab6" onclick="fnSearchPoint();">포인트내역</a></li>
|
|
|
+ <li><a href="#tab7" onclick="fnSearchReview();">상품평내역</a></li>
|
|
|
+ <li><a href="#tab8" onclick="fnSearchChangeGrade();">회원등급변경이력</a></li>
|
|
|
+ <li><a href="#tab9" onclick="fnSearchDelivery();">배송지정보</a></li>
|
|
|
+ <li><a href="#tab10" onclick="fnSearchContact();">회원접촉이력</a></li>
|
|
|
+ </ul>
|
|
|
+ <!-- //TABS NAVI -->
|
|
|
+ <!-- TABS CONTENTS -->
|
|
|
+ <ul class="tabsCont">
|
|
|
+ <!-- TAB1 : 회원정보 -->
|
|
|
+ <li class="tab on" id="tab1">
|
|
|
+ <form id="custInfo">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <input type="hidden" name="custNm"/>
|
|
|
+ <input type="hidden" name="homeTelno" data-valid-name="전화번호"/>
|
|
|
+ <input type="hidden" name="cellPhnno" data-valid-name="휴대전화"/>
|
|
|
+ <input type="hidden" name="email" data-valid-name="이메일"/>
|
|
|
+ <input type="hidden" name="orgCustGrade"/>
|
|
|
+ <input type="hidden" name="orgManagedRsn"/>
|
|
|
+ <input type="hidden" name="changeManagedYn" value="N">
|
|
|
+ <input type="hidden" name="changeGradeYn" value="N">
|
|
|
+ <input type="hidden" name="crtfdNoYn" value="N">
|
|
|
+ <!-- TAB1 CONTENTS AREA -->
|
|
|
+ <div class="tabContArea">
|
|
|
+ <h4>기본정보</h4>
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col style="width:10%;"/>
|
|
|
+ <col style="width:40%;"/>
|
|
|
+ <col style="width:10%;"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">회원구분<i class="star"></i></th>
|
|
|
+ <td class="dashR">
|
|
|
+ <select name="custGb">
|
|
|
+ <option th:if="${custGbList}" th:each="oneData, status : ${custGbList}" th:value="${oneData.cd}"
|
|
|
+ th:text="|${oneData.cdNm}|"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th class="dashR">회원등급<i class="star"></i></th>
|
|
|
+ <td class="dashR">
|
|
|
+ <select name="custGrade">
|
|
|
+ <option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}"
|
|
|
+ th:text="|${oneData.cdNm}|"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <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.cdNm}|"></option>
|
|
|
+ </select>
|
|
|
+ <span class="infoTxt cRed" style="font-size:15px;" name="managedRsnDp"></span>
|
|
|
+ </td>
|
|
|
+ <th class="dashR">관리대상 지정 날짜</th>
|
|
|
+ <td class="dashR" name="managedDt">
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">관리대상 지정 사유</th>
|
|
|
+ <td class="dashR" colspan="3">
|
|
|
+ <input type="text" class="w600" name="managedDtlRsn" id="managedDtlRsn"/>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">비밀번호</th>
|
|
|
+ <td class="dashR" colspan="3">
|
|
|
+ *******
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnCustPasswordReset">초기화</button>
|
|
|
+ <span class="infoTxt cBlue"><i class="fa fa-info-circle"></i>회원에게 임시비밀번호를 발송합니다. (이메일, 알림톡)</span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">생년월일</th>
|
|
|
+ <td class="dashR">
|
|
|
+ <input type="text" name="birthYmd" id="birthYmd" class="schDate w100" data-valid-name="생년월일"/>
|
|
|
+ </td>
|
|
|
+ <th class="dashR">성별</th>
|
|
|
+ <td class="dashR" name="sexGb"></td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">자택주소</th>
|
|
|
+ <td class="dashR" colspan="3">
|
|
|
+ <input type="text" name="homePostNo" class="w100" readonly="readonly"/>
|
|
|
+ <button type="button" class="btn btn-info btn-lg" onclick="fnOpenDaumAddr('custInfo');">우편번호찾기</button>
|
|
|
+ <br/>
|
|
|
+ <input type="text" name="homeBaseAddr" class="w300" readonly="readonly"/>
|
|
|
+ <input type="text" name="homeDtlAddr" class="w300"/>
|
|
|
+ </td>
|
|
|
+
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">휴대전화번호<i class="star"></i></th>
|
|
|
+ <td class="dashR">
|
|
|
+ <select name="cellPhnno1">
|
|
|
+ <option value="">선택</option>
|
|
|
+ <option th:if="${nationalHpNumberList}" th:each="oneData, status : ${nationalHpNumberList}"
|
|
|
+ th:value="${oneData.cd}" th:text="|${oneData.cd}|"></option>
|
|
|
+ </select> -
|
|
|
+ <input type="text" class="w50" name="cellPhnno2" id="cellPhnno2" maxlength="4" required="required"
|
|
|
+ data-valid-type="numeric" data-valid-name="휴대전화번호"/> -
|
|
|
+ <input type="text" class="w50" name="cellPhnno3" id="cellPhnno3" maxlength="4" required="required"
|
|
|
+ data-valid-type="numeric" data-valid-name="휴대전화번호"/>
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnCustSendLms">LMS전송</button>
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnCustCrtfd">번호변경</button>
|
|
|
+ <input type="text" class="w200" name="crtfdNo" placeholder="인증번호 입력" style="display: none;">
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnSendCustCrtfdNo" style="display: none;">전송</button>
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnCustCrtfdNo" style="display: none;">확인</button>
|
|
|
+ <span class="infoTxt cBlue" style="display: none;" name="message"></span>
|
|
|
+ <span id="expln" class="infoTxt cBlue"><i class="fa fa-info-circle"></i>인증번호 확인 후 번호변경가능</span>
|
|
|
+ <span id="explnPhone" class="infoTxt cBlue"><i class="fa fa-info-circle"></i>변경 해야 할 휴대폰번호 입력 후 전송</span>
|
|
|
+ </td>
|
|
|
+ <th class="dashR">SMS수신여부<i class="star"></i></th>
|
|
|
+ <td class="dashR">
|
|
|
+ <label class="rdoBtn"><input type="radio" name="smsAgreeYn" value="Y"/>수신</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="smsAgreeYn" value="N"/>미수신</label>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">이메일<i class="star"></i></th>
|
|
|
+ <td class="dashR">
|
|
|
+ <input type="text" class="w300" name="email1"/>
|
|
|
+ @
|
|
|
+ <input type="text" class="w150" name="email2"/>
|
|
|
+ <select name="emailDomain">
|
|
|
+ <option value="">선택하세요</option>
|
|
|
+ <option th:if="${emailDomainList}" th:each="oneData, status : ${emailDomainList}" th:value="${oneData.cd}"
|
|
|
+ th:text="|${oneData.cdNm}|"></option>
|
|
|
+ </select>
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnCustSendEmail">이메일발송</button>
|
|
|
+ </td>
|
|
|
+ <th class="dashR">메일수신여부<i class="star"></i></th>
|
|
|
+ <td class="dashR">
|
|
|
+ <label class="rdoBtn"><input type="radio" name="emailAgreeYn" value="Y"/>수신</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="emailAgreeYn" value="N"/>미수신</label>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">가입일시</th>
|
|
|
+ <td class="dashR" name="joinDt"></td>
|
|
|
+ <th class="dashR">최종로그인일시</th>
|
|
|
+ <td class="dashR" name="loginDt"></td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">내외국인</th>
|
|
|
+ <td class="dashR" name="foreignerYn"></td>
|
|
|
+ <th class="dashR">탈퇴여부</th>
|
|
|
+ <td class="dashR" name="secedeRsnYn"></td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th class="dashR">SNS가입유형</th>
|
|
|
+ <td class="dashR" name="snsType" colspan="3"></td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <div class="aR" style="margin-top:10px;">
|
|
|
+ <button type="button" class="btn btn-success btn-lg" id="btnCustInfoSave">저장</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- //TAB1 CONTENTS AREA -->
|
|
|
+ </form>
|
|
|
+ </li>
|
|
|
+ <!-- //TAB1 : 회원정보 -->
|
|
|
+
|
|
|
+ <!-- TAB2 : 주문내역 -->
|
|
|
+ <li class="tab" id="tab2">
|
|
|
+ <!-- TAB2 CONTENTS AREA -->
|
|
|
+ <form id="custOrder">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <div class="tabContArea">
|
|
|
+ <h4>주문내역</h4>
|
|
|
+ <div id="custOrderList" style="width: 100%; height: 510px;" class="ag-theme-balham"></div>
|
|
|
+ </div>
|
|
|
+ <!-- //TAB2 CONTENTS AREA -->
|
|
|
+ </form>
|
|
|
+ </li>
|
|
|
+ <!-- //TAB2 : 주문내역 -->
|
|
|
+
|
|
|
+ <!-- TAB3 : 1:1문의 내역 -->
|
|
|
+ <li class="tab" id="tab3">
|
|
|
+ <!-- TAB3 CONTENTS AREA -->
|
|
|
+ <form id="custOnetoOne">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <div class="tabContArea">
|
|
|
+ <h4>1:1문의 내역</h4>
|
|
|
+ <div id="custCounselList" style="width: 100%; height: 510px;" class="ag-theme-balham"></div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <!-- //TAB3 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB3 : 1:1문의 내역 -->
|
|
|
+
|
|
|
+ <!-- TAB4 : 상품문의 내역 -->
|
|
|
+ <li class="tab" id="tab4">
|
|
|
+ <!-- TAB3 CONTENTS AREA -->
|
|
|
+ <form id="custGoodsQna">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <div class="tabContArea">
|
|
|
+ <h4>상품문의 내역</h4>
|
|
|
+ <div id="custGoodsQnaList" style="width: 100%; height: 510px;" class="ag-theme-balham"></div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <!-- //TAB4 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB4 : 상품문의 내역 -->
|
|
|
+
|
|
|
+ <!-- TAB5 : 쿠폰 내역 -->
|
|
|
+ <li class="tab" id="tab5">
|
|
|
+ <!-- TAB5 CONTENTS AREA -->
|
|
|
+ <form id="custCoupon">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <div class="tabContArea">
|
|
|
+ <h4>쿠폰 내역</h4>
|
|
|
+ <div id="custCouponList" style="width: 100%; height: 510px;" class="ag-theme-balham"></div>
|
|
|
+ <div class="panelBtnB" style="padding-top: 10px;">
|
|
|
+ <span class="btnLeft">
|
|
|
+ <button type="button" class="btn btn-danger btn-lg"id="btnCustCouponDelete">쿠폰삭제</button>
|
|
|
+ </span>
|
|
|
+ <span class="btnRight"><button type="button" class="btn btn-info btn-lg" id="btnCustCouponCreate">쿠폰발급</button></span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <!-- //TAB5 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB5 : 쿠폰 내역 -->
|
|
|
+
|
|
|
+ <!-- TAB6 : 포인트 내역 -->
|
|
|
+ <li class="tab" id="tab6">
|
|
|
+ <!-- TAB6 CONTENTS AREA -->
|
|
|
+ <form id="custPoint">
|
|
|
+ <div class="tabContArea">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <h4>포인트 내역</h4>
|
|
|
+ <table class="tableStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col style="width:20%;"/>
|
|
|
+ <col style="width:20%;"/>
|
|
|
+ <col style="width:20%;"/>
|
|
|
+ <col style="width:20%;"/>
|
|
|
+ <col style="width:20%;"/>
|
|
|
+ </colgroup>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <th>가용포인트</th>
|
|
|
+ <th>누적 포인트</th>
|
|
|
+ <th>사용포인트</th>
|
|
|
+ <th>적립예정포인트</th>
|
|
|
+ <th>소멸예정포인트(30일)</th>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td name="availPntAmt">0 P</td>
|
|
|
+ <td name="accumPntAmt">0 P</td>
|
|
|
+ <td name="usePntAmt">0 P</td>
|
|
|
+ <td name="expectedPntAmt">0 P</td>
|
|
|
+ <td name="expectedExpirePntAmt">0 P</td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <br/>
|
|
|
+ <div id="custPointList" style="width: 100%; height: 420px;" class="ag-theme-balham"></div>
|
|
|
+ <div class="panelBtnB aR" style="padding-top: 10px;">
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnCustPointCreate">포인트부여</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <!-- //TAB6 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB6 : 포인트 내역 -->
|
|
|
+
|
|
|
+ <!-- TAB7 : 상품평 -->
|
|
|
+ <li class="tab" id="tab7">
|
|
|
+ <!-- TAB7 CONTENTS AREA -->
|
|
|
+ <form id="custReview">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <div class="tabContArea">
|
|
|
+ <h4>상품평 내역</h4>
|
|
|
+ <div id="custReviewList" style="width: 100%; height: 510px;" class="ag-theme-balham"></div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <!-- //tab7 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB7 : 상품평 내역 -->
|
|
|
+
|
|
|
+ <!-- TAB8 : 등급변경이력 -->
|
|
|
+ <li class="tab" id="tab8">
|
|
|
+ <!-- TAB8 CONTENTS AREA -->
|
|
|
+ <form id="custGrade">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <div class="tabContArea">
|
|
|
+ <h4>등급변경이력</h4>
|
|
|
+ <div id="custGradeList" style="width: 100%; height: 510px;" class="ag-theme-balham"></div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <!-- //tab8 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB8 : 등급변경이력 -->
|
|
|
+
|
|
|
+ <!-- TAB9 : 배송지정보 -->
|
|
|
+ <li class="tab" id="tab9">
|
|
|
+ <!-- TAB9 CONTENTS AREA -->
|
|
|
+ <form id="custAddr">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <input type="hidden" name="custDelvAddrSq" value=""/>
|
|
|
+ <input type="hidden" name="recipPhnno" value="">
|
|
|
+ <input type="hidden" name="recipTelno" value="">
|
|
|
+ <div class="tabContArea" style="height: 365px;">
|
|
|
+ <h4>배송지정보</h4>
|
|
|
+ <div id="custAddrList" style="width: 100%; height: 300px;" class="ag-theme-balham"></div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="aR" style="margin-bottom: 10px;">
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnCustAddrNew">신규</button>
|
|
|
+ <button type="button" class="btn btn-success btn-lg" id="btnCustAddrSave">저장</button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col style="width:5%;"/>
|
|
|
+ <col style="width:25%;"/>
|
|
|
+ <col style="width:5%;"/>
|
|
|
+ <col style="width:25%;"/>
|
|
|
+ <col style="width:5%;"/>
|
|
|
+ <col style="width:25%;"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <th>배송지명<i class="star"></i></th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w200" name="delvAddrNm" maxlength="30" required="required" data-valid-name="배송지명"/>
|
|
|
+ <label><input type="checkbox" name="defaultYn" value="Y"/>기본</label>
|
|
|
+ </td>
|
|
|
+
|
|
|
+ <th>이메일</th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w200" name="recipEmail" maxlength="50" data-valid-type="email" data-valid-name="이메일"/>
|
|
|
+ </td>
|
|
|
+
|
|
|
+ <th>삭제여부</th>
|
|
|
+ <td>
|
|
|
+ <label><input type="checkbox" name="delYn" value="Y"/></label>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>수령인<i class="star"></i></th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w200" name="recipNm" maxlength="10" required="required" data-valid-name="수령인"/>
|
|
|
+ </td>
|
|
|
+
|
|
|
+ <th>전화번호</th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w100" name="recipTelno1" maxlength="4" data-valid-type="numeric"
|
|
|
+ data-valid-name="전화번호"/> -
|
|
|
+ <input type="text" class="w100" name="recipTelno2" maxlength="4" data-valid-type="numeric"
|
|
|
+ data-valid-name="전화번호"/> -
|
|
|
+ <input type="text" class="w100" name="recipTelno3" maxlength="4" data-valid-type="numeric"
|
|
|
+ data-valid-name="전화번호"/>
|
|
|
+ </td>
|
|
|
+
|
|
|
+ <th>휴대전화번호<i class="star"></i></th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w100" name="recipPhnno1" maxlength="4" required="required" data-valid-type="numeric"
|
|
|
+ data-valid-name="휴대전화번호"/> -
|
|
|
+ <input type="text" class="w100" name="recipPhnno2" maxlength="4" required="required" data-valid-type="numeric"
|
|
|
+ data-valid-name="휴대전화번호"/> -
|
|
|
+ <input type="text" class="w100" name="recipPhnno3" maxlength="4" required="required" data-valid-type="numeric"
|
|
|
+ data-valid-name="휴대전화번호"/>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>주소<i class="star"></i></th>
|
|
|
+ <td colspan="5">
|
|
|
+ <input type="text" name="recipPostNo" class="w100" maxlength="10" required="required" data-valid-name="주소"/>
|
|
|
+ <button type="button" class="btn btn-info btn-lg" onclick="fnOpenDaumAddr('custAddr');">우편번호찾기</button>
|
|
|
+ <br/>
|
|
|
+ <input type="text" name="recipBaseAddr" class="w300" maxlength="50" required="required" data-valid-name="주소"/>
|
|
|
+ <input type="text" name="recipDtlAddr" class="w300" maxlength="30" required="required" data-valid-name="상세주소"/>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </form>
|
|
|
+ <!-- //TAB9 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+
|
|
|
+ <!-- TAB10 : 회원접촉이력 -->
|
|
|
+ <li class="tab" id="tab10">
|
|
|
+ <!-- TAB10 CONTENTS AREA -->
|
|
|
+ <form id="custContact">
|
|
|
+ <input type="hidden" name="custNo" th:value="${custNo}"/>
|
|
|
+ <div class="tabContArea" style="height: 454px;">
|
|
|
+ <h4>회원접촉이력</h4>
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col style="width:3%;"/>
|
|
|
+ <col style="width:7%;"/>
|
|
|
+ <col style="width:6%;"/>
|
|
|
+ <col style="width:5%;"/>
|
|
|
+ <col style="width:6%;"/>
|
|
|
+ <col style="width:29%;"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <th>접촉유형<i class="star"></i></th>
|
|
|
+ <td>
|
|
|
+ <select class="w150" name="contactType" required="required" data-valid-type="select" data-valid-name="접촉유형">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${contactTypeList}" th:each="oneData, status : ${contactTypeList}" th:value="${oneData.cd}"
|
|
|
+ th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th>접촉방법<i class="star"></i></th>
|
|
|
+ <td>
|
|
|
+ <select class="w150" name="contactMethod" required="required" data-valid-type="select" data-valid-name="접촉방법">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${contactMethodList}" th:each="oneData, status : ${contactMethodList}"
|
|
|
+ th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th>내용<i class="star"></i></th>
|
|
|
+ <td>
|
|
|
+ <textarea class="textareaR2 w600" name="contactContents" required="required" data-valid-name="내용"></textarea>
|
|
|
+ <button type="button" class="btn btn-success btn-lg" id="btnSaveContact">저장</button>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <br/>
|
|
|
+ <div id="custContactList" style="width: 100%; height: 420px;" class="ag-theme-balham"></div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <!-- //TAB10 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB10 : 회원접촉이력 -->
|
|
|
+
|
|
|
+ </ul>
|
|
|
+ <!-- //TABS CONTENTS -->
|
|
|
+ </div>
|
|
|
+ <!-- // TABS SPACE -->
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <!-- //CONTENT -->
|
|
|
+
|
|
|
+ </div>
|
|
|
+</div>
|
|
|
+
|
|
|
+<script th:inline="javascript">
|
|
|
+ /*<![CDATA[*/
|
|
|
+
|
|
|
+ const custNo = [[${custNo}]]; //고객번호
|
|
|
+ const siteList = gagajf.convertToArray([[${siteList}]]); //사이트목록
|
|
|
+ //const custGbList = gagajf.convertToArray([[${custGbList}]]); //회원구분
|
|
|
+ const custGradeList = gagajf.convertToArray([[${custGradeList}]]); //회원등급
|
|
|
+ //const managedRsnList = gagajf.convertToArray([[${managedRsnList}]]); //관리대상
|
|
|
+ const mallGbList = gagajf.convertToArray([[${mallGbList}]]); //몰구분
|
|
|
+ const orderStatList = gagajf.convertToArray([[${orderStatList}]]); //주문상태
|
|
|
+ const orderDtlStatList = gagajf.convertToArray([[${orderDtlStatList}]]); //주문상세상태
|
|
|
+ const cpnType = gagajf.convertToArray([[${cpnType}]]); //쿠폰유형
|
|
|
+ //const dcWayList = gagajf.convertToArray([[${dcWayList}]]); //쿠폰할인방식
|
|
|
+ const pubReasonList = gagajf.convertToArray([[${pubReasonList}]]); //쿠폰발행사유
|
|
|
+ const pntOccurGbList = gagajf.convertToArray([[${pntOccurGbList}]]); //포인트반영구분
|
|
|
+ const pntUploadStatList = gagajf.convertToArray([[${pntUploadStatList}]]); //포인트반영상태
|
|
|
+ const counselClsfList = gagajf.convertToArray([[${counselClsfList}]]); //상담분류
|
|
|
+ const contactTypeList = gagajf.convertToArray([[${contactTypeList}]]); //회원접촉유형
|
|
|
+ const contactMethodList = gagajf.convertToArray([[${contactMethodList}]]); //회원접촉방법
|
|
|
+ const genderGbList = gagajf.convertToArray([[${genderGbList}]]); // 성별
|
|
|
+
|
|
|
+ //구매내역 그리드
|
|
|
+ const columnOrderDefs = [
|
|
|
+ {
|
|
|
+ headerName: "주문번호", field: "ordNo", width: 100, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return '<a href="javascript:void(0);">' + params.value + '</a>';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "주문상세번호", field: "ordDtlNo", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "몰구분", field: "mallGb", width: 100, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(mallGbList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "결제일시", field: "payDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "배송완료일시", field: "delvEddt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "주문자전화번호", field: "orderTelno", width: 120, cellClass: 'text-center'},
|
|
|
+ {headerName: "주문자휴대폰", field: "orderPhnno", width: 130, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "주문상세상태", field: "ordDtlStat", width: 100, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(orderDtlStatList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "수령인", field: "recipNm", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "상품코드", field: "goodsCd", width: 100, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return '<a href="javascript:void(0);">' + params.value + '</a>';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "사이즈", field: "sizeCd", width: 100, cellClass: 'text-center'},
|
|
|
+ {headerName: "상품명", field: "goodsNm", width: 250, cellClass: 'text-left'},
|
|
|
+ {headerName: "주문수량", field: "ordQty", width: 100, cellClass: 'text-center'},
|
|
|
+ {headerName: "판매상품가격", field: "currPrice", width: 100, cellClass: 'text-center'},
|
|
|
+ {headerName: "총 판매 상품가격", field: "totCurrPrice", width: 150, cellClass: 'text-center'}
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 1:1문의 내역 그리드
|
|
|
+ const columnCounselDefs = [
|
|
|
+ {
|
|
|
+ headerName: "상담분류", field: "counselClsf", width: 100, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(counselClsfList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "상담상세분류", field: "counselDclsf", width: 200, cellClass: 'text-center'},
|
|
|
+ {headerName: "주문번호", field: "relOrdNo", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "질문제목", field: "questTitle", width: 300, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return '<a href="javascript:void(0);">' + params.value + '</a>';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "등록일시", field: "questDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "답변일시", field: "ansTransDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "확인ID", field: "ansId", width: 100, cellClass: 'text-center'},
|
|
|
+ {headerName: "확인자", field: "userNm", width: 100, cellClass: 'text-center'}
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 상품문의 내역 그리드
|
|
|
+ const columnGoodsQnaDefs = [
|
|
|
+ {headerName: "상품코드", field: "relGoodsCd", width: 200, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "질문제목", field: "questTitle", width: 300, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return '<a href="javascript:void(0);">' + params.value + '</a>';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "등록일시", field: "questDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "답변일시", field: "ansTransDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "확인ID", field: "ansId", width: 100, cellClass: 'text-center'},
|
|
|
+ {headerName: "확인자", field: "userNm", width: 100, cellClass: 'text-center'}
|
|
|
+ ];
|
|
|
+
|
|
|
+ //쿠폰내역 그리드
|
|
|
+ const columnCouponDefs = [
|
|
|
+ {width: 40, minWidth: 40, cellClass: 'text-center', pinned: 'left', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
|
|
|
+ {headerName: "회원쿠폰SQ", field: "custCpnSq", width: 100, cellClass: 'text-center', hide: true},
|
|
|
+ {headerName: "쿠폰ID", field: "cpnId", width: 100, cellClass: 'text-center'},
|
|
|
+ {headerName: "쿠폰명", field: "cpnNm", width: 300, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "유효기간 시작일시", field: "availStdt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "유효기간 종료일시", field: "availEddt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "주문번호", field: "ordNo", width: 130, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "사용일시", field: "usedDt", width: 100, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "쿠폰발행 사유", field: "pubReason", width: 200, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(pubReasonList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "쿠폰발행 상세사유", field: "pubReasonDtl", width: 300, cellClass: 'text-center'},
|
|
|
+ {headerName: "등록자", field: "regId", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
+ //포인트내역 그리드
|
|
|
+ const columnPointDefs = [
|
|
|
+ {
|
|
|
+ headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "반영일시", field: "pntUploadDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "주문번호", field: "ordNo", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "반영상태", field: "pntUploadStat", width: 100, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) { return gagaAgGrid.lookupValue(pntUploadStatList, params.value); }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "포인트", field: "pntAmt", width: 100, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "포인트사유", field: "occurGb", width: 300, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(pntOccurGbList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "포인트상세사유", field: "occurDtlDesc", width: 300, cellClass: 'text-center'},
|
|
|
+ {headerName: "등록자", field: "regId", width: 100, cellClass: 'text-center'}
|
|
|
+ ];
|
|
|
+
|
|
|
+ //상품평 그리드
|
|
|
+ const columnReviewDefs = [
|
|
|
+ {headerName: "상품코드", field: "goodsCd", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "제목", field: "reviewTitle", width: 300, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return '<a href="javascript:void(0);">' + params.value + '</a>';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "만족도", field: "score", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "작성일시", field: "regDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "지급일시", field: "confirmDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "지급ID", field: "confirmId", width: 130, cellClass: 'text-center'},
|
|
|
+ {headerName: "게시여부", field: "dispYn", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "지급예정포인트", field: "giveDuePnt", width: 120, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "포인트지급상태", field: "pntGiveStat", width: 120, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(pntUploadStatList, params.value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
+ //등급변경 그리드
|
|
|
+ const columnGradeDefs = [
|
|
|
+ {headerName: "적용연월일", field: "applyYmd", width: 150, cellClass: 'text-center'},
|
|
|
+ {headerName: "고객ID", field: "custId", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "이전회원등급", field: "gradeBcd", width: 100, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(custGradeList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "변경회원등급", field: "gradeAcd", width: 100, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(custGradeList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "3개월간 총 주문건수", field: "ordCnt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "3개월간 총 결제금액", field: "realOrdAmt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
+ //주소정보 그리드
|
|
|
+ const columnAddrDefs = [
|
|
|
+ {
|
|
|
+ headerName: "배송지명", field: "delvAddrNm", width: 100, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return '<a href="javascript:void(0);">' + params.value + '</a>';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "수령자", field: "recipNm", width: 100, cellClass: 'text-center'},
|
|
|
+ {headerName: "전화번호", field: "recipTelno", width: 130, cellClass: 'text-center'},
|
|
|
+ {headerName: "휴대전화번호", field: "recipPhnno", width: 130, cellClass: 'text-center'},
|
|
|
+ {headerName: "이메일", field: "recipEmail", width: 150, cellClass: 'text-center'},
|
|
|
+ {headerName: "우편번호", field: "recipPostNo", width: 100, cellClass: 'text-center'},
|
|
|
+ {headerName: "기본주소", field: "recipBaseAddr", width: 300, cellClass: 'text-left'},
|
|
|
+ {headerName: "상세주소", field: "recipDtlAddr", width: 150, cellClass: 'text-left'},
|
|
|
+ {
|
|
|
+ headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "삭제", field: "delYn", width: 50, cellClass: 'text-center'},
|
|
|
+ {headerName: "수정자", field: "updId", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "기본배송지", field: "defaultYn", width: 90, cellClass: 'text-center'}
|
|
|
+ ];
|
|
|
+
|
|
|
+ //회원접촉이력 그리드
|
|
|
+ const columnContactDefs = [
|
|
|
+ {
|
|
|
+ headerName: "접촉유형", field: "contactType", width: 150, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(contactTypeList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: "접촉방법", field: "contactMethod", width: 120, cellClass: 'text-center',
|
|
|
+ valueFormatter: function (params) {
|
|
|
+ return gagaAgGrid.lookupValue(contactMethodList, params.value);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "내용", field: "contactContents", width: 1000, cellClass: 'text-center'},
|
|
|
+ {headerName: "등록자", field: "regId", width: 100, cellClass: 'text-center'},
|
|
|
+ {
|
|
|
+ headerName: "등록일", field: "regDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return gagaAgGrid.toDateTimeFormat(params.value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
+ let gridOrderOptions = gagaAgGrid.getGridOptions(columnOrderDefs); //구매내역 그리드
|
|
|
+ let gridCounselOptions = gagaAgGrid.getGridOptions(columnCounselDefs); //1:1문의내역 그리드
|
|
|
+ let gridGoodsQnaOptions = gagaAgGrid.getGridOptions(columnGoodsQnaDefs);//상품문의내역 그리드
|
|
|
+ let gridCouponOptions = gagaAgGrid.getGridOptions(columnCouponDefs); //쿠폰내역 그리드
|
|
|
+ let gridPointOptions = gagaAgGrid.getGridOptions(columnPointDefs); //포인트내역 그리드
|
|
|
+ let gridReviewOptions = gagaAgGrid.getGridOptions(columnReviewDefs); //상품평 그리드
|
|
|
+ let gridGradeOptions = gagaAgGrid.getGridOptions(columnGradeDefs); //등급변경 그리드
|
|
|
+ let gridAddrOptions = gagaAgGrid.getGridOptions(columnAddrDefs); //주소정보 그리드
|
|
|
+ let gridContactOptions = gagaAgGrid.getGridOptions(columnContactDefs); //회원접촉이력 그리드
|
|
|
+
|
|
|
+ gridCouponOptions.rowSelection = 'multiple';
|
|
|
+
|
|
|
+ // 비밀번호 초기화 버튼
|
|
|
+ $('#btnCustPasswordReset').on('click', function () {
|
|
|
+ //이메일
|
|
|
+ if (!fnCheckValidationEmail('#custInfo'))
|
|
|
+ return false;
|
|
|
+ let jsonData = JSON.stringify($('#custInfo').serializeObject());
|
|
|
+ mcxDialog.confirm("초기화 하시겠습니까?", {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function () {
|
|
|
+ gagajf.ajaxJsonSubmit('/customer/reset/password/save', jsonData, fnSearchCustInfo);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // LMS발송 버튼
|
|
|
+ $('#btnCustSendLms').on('click', function () {
|
|
|
+ let param = {};
|
|
|
+ param.elementCellPhnno = '#custInfo input[name=cellPhnno]';
|
|
|
+ param.elementCustNo = '#custInfo input[name=custNo]';
|
|
|
+ cfnOpenLmsPopup(param);
|
|
|
+ });
|
|
|
+
|
|
|
+ // 인증버튼
|
|
|
+ $('#btnCustCrtfd').on('click', function () {
|
|
|
+ $('#btnSendCustCrtfdNo').show();
|
|
|
+ $('#btnCustCrtfdNo').show();
|
|
|
+ $('#custInfo input[name=crtfdNo]').show();
|
|
|
+ $('#expln').hide();
|
|
|
+ $('#explnPhone').show();
|
|
|
+ });
|
|
|
+
|
|
|
+ // 인증번호 전송
|
|
|
+ $('#btnSendCustCrtfdNo').on('click', function () {
|
|
|
+ //휴대폰번호
|
|
|
+ if (!fnCheckValidationPhnno('#custInfo'))
|
|
|
+ return false;
|
|
|
+
|
|
|
+ mcxDialog.confirm("인증번호를 전송 하시겠습니까?", {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function () {
|
|
|
+ let jsonData = JSON.stringify($('#custInfo').serializeObject());
|
|
|
+ gagajf.ajaxJsonSubmit('/customer/certno/send', jsonData, function () {
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ // 인증확인버튼
|
|
|
+ $('#btnCustCrtfdNo').on('click', function () {
|
|
|
+ let jsonData = JSON.stringify($('#custInfo').serializeObject());
|
|
|
+ gagajf.ajaxJsonSubmit('/customer/certno/confirm', jsonData, fnCertificationResult);
|
|
|
+ });
|
|
|
+
|
|
|
+ // 이메일발송 버튼
|
|
|
+ $('#btnCustSendEmail').on('click', function () {
|
|
|
+ let param = {};
|
|
|
+ param.elementRecipEmail = '#custInfo input[name=email]';
|
|
|
+ param.elementCustNm = '#custInfo input[name=custNm]';
|
|
|
+ param.elementCustNo = '#custInfo input[name=custNo]';
|
|
|
+ cfnOpenEmailPopup(param);
|
|
|
+ });
|
|
|
+
|
|
|
+ // 이메일 도메인 선택 이벤트
|
|
|
+ $('#custInfo select[name=emailDomain]').on('change', function () {
|
|
|
+
|
|
|
+ let domain = $(this).val();
|
|
|
+ let $email2 = $('#custInfo input[name=email2]');
|
|
|
+ if (domain === '99') { //기타(직접입력)
|
|
|
+ $email2.val('');
|
|
|
+ } else if (domain !== '99' && !gagajf.isNull(domain)) {
|
|
|
+ $email2.val(domain);
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // 저장 버튼
|
|
|
+ $('#btnCustInfoSave').on('click', function () {
|
|
|
+
|
|
|
+ //휴대폰번호
|
|
|
+ if (!fnCheckValidationPhnno('#custInfo'))
|
|
|
+ return false;
|
|
|
+ //이메일
|
|
|
+ if (!fnCheckValidationEmail('#custInfo'))
|
|
|
+ return false;
|
|
|
+
|
|
|
+ // 관리대상 변경 여부 및 관리대상 지정 사유
|
|
|
+ let managedRsn = $('#custInfo select[name=managedRsn]').val();
|
|
|
+ let orgManagedRsn = $('#custInfo input[name=orgManagedRsn]').val();
|
|
|
+ let managedDtlRsn = $('#custInfo input[name=managedDtlRsn]').val();
|
|
|
+
|
|
|
+ if (managedRsn !== orgManagedRsn && !gagajf.isNull(managedRsn)) { // 관리대상 값 변경시 체크
|
|
|
+ $('#custInfo input[name=changeManagedYn]').val('Y');
|
|
|
+ } else {
|
|
|
+ $('#custInfo input[name=changeManagedYn]').val('N');
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!gagajf.isNull(managedRsn) && gagajf.isNull(managedDtlRsn)) {
|
|
|
+ mcxDialog.alert("관리대상 지정 사유를 입력해주세요");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 등급 변경 여부 판단
|
|
|
+ let custGrade = $('#custInfo select[name=custGrade]').val();
|
|
|
+ let orgCustGrade = $('#custInfo input[name=orgCustGrade]').val();
|
|
|
+ let $changeGradeYn = $('#custInfo input[name=changeGradeYn]');
|
|
|
+
|
|
|
+ if (custGrade !== orgCustGrade) { // 등급 변경시 값 체크
|
|
|
+ $changeGradeYn.val('Y');
|
|
|
+ } else {
|
|
|
+ $changeGradeYn.val('Y');
|
|
|
+ }
|
|
|
+ mcxDialog.confirm("기본정보를 수정 하시겠습니까?", {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function () {
|
|
|
+ let jsonData = JSON.stringify($('#custInfo').serializeObject());
|
|
|
+ //console.log(jsonData);
|
|
|
+ gagajf.ajaxJsonSubmit('/customer/info/update', jsonData, fnSearchCustInfo);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ // 쿠폰삭제 버튼
|
|
|
+ $('#btnCustCouponDelete').on('click', function () {
|
|
|
+ let removedData = gagaAgGrid.removeRowData(gridCouponOptions);
|
|
|
+
|
|
|
+ if (removedData.length < 1) {
|
|
|
+ mcxDialog.alert("선택된 데이터가 없습니다.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ mcxDialog.confirm("삭제 하시겠습니까?", {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function () {
|
|
|
+ let updatedData = [];
|
|
|
+
|
|
|
+ $.each(removedData, function (idx, item) {
|
|
|
+ let param = {};
|
|
|
+ param.custCpnSq = item.custCpnSq;
|
|
|
+ param.custNo = item.custNo;
|
|
|
+ updatedData.push(param);
|
|
|
+ });
|
|
|
+
|
|
|
+ let jsonData = JSON.stringify(updatedData);
|
|
|
+ gagajf.ajaxJsonSubmit('/marketing/coupon/cust/delete', jsonData, fnSearchCoupon);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ // 포인트부여 버튼
|
|
|
+ $('#btnCustPointCreate').on('click', function () {
|
|
|
+ cfnGrantPointPopup();
|
|
|
+ });
|
|
|
+
|
|
|
+ // 쿠폰발급 버튼
|
|
|
+ $('#btnCustCouponCreate').on('click', function () {
|
|
|
+ cfnCpnPubForCustPopup();
|
|
|
+ });
|
|
|
+
|
|
|
+ // 배송지정보 신규
|
|
|
+ $('#btnCustAddrNew').on('click', function () {
|
|
|
+ $('#custAddr')[0].reset();
|
|
|
+ $('#custAddr input[name=custDelvAddrSq]').val('');
|
|
|
+ $('#custAddr input[name=recipPhnno]').val('');
|
|
|
+ $('#custAddr input[name=recipTelno]').val('');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 배송지정보 저장
|
|
|
+ $('#btnCustAddrSave').on('click', function () {
|
|
|
+
|
|
|
+ if (!gagajf.validation('#custAddr'))
|
|
|
+ return false;
|
|
|
+
|
|
|
+ // 전화번호
|
|
|
+ let recipTelno1 = $('#custAddr input[name=recipTelno1]').val();
|
|
|
+ let recipTelno2 = $('#custAddr input[name=recipTelno2]').val();
|
|
|
+ let recipTelno3 = $('#custAddr input[name=recipTelno3]').val();
|
|
|
+
|
|
|
+ $('#custAddr input[name=recipTelno]').val(recipTelno1 + '-' + recipTelno2 + '-' + recipTelno3);
|
|
|
+
|
|
|
+
|
|
|
+ // 핸드폰번호 필수값 validation 함수에서 null 체크
|
|
|
+ let recipPhnno1 = $('#custAddr input[name=recipPhnno1]').val();
|
|
|
+ let recipPhnno2 = $('#custAddr input[name=recipPhnno2]').val();
|
|
|
+ let recipPhnno3 = $('#custAddr input[name=recipPhnno3]').val();
|
|
|
+ $('#custAddr input[name=recipPhnno]').val(recipPhnno1 + '-' + recipPhnno2 + '-' + recipPhnno3);
|
|
|
+
|
|
|
+ mcxDialog.confirm("저장하시겠습니까?", {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function () {
|
|
|
+ gagajf.removeCommaAtNumberFormattedInput('#custAddr');
|
|
|
+ let jsonData = JSON.stringify($('#custAddr').serializeObject());
|
|
|
+ gagajf.ajaxJsonSubmit('/customer/delivery/addr/save', jsonData, fnSearchDelivery);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // 회원접촉이력 저장
|
|
|
+ $('#btnSaveContact').on('click', function () {
|
|
|
+ if (!gagajf.validation('#custContact')) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ mcxDialog.confirm("저장하시겠습니까?", {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function () {
|
|
|
+ var jsonData = JSON.stringify($('#custContact').serializeObject());
|
|
|
+ gagajf.ajaxJsonSubmit('/customer/contact/create', jsonData, fnSearchContact);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ // 주문내역 셀 클릭 이벤트
|
|
|
+ gridOrderOptions.onCellClicked = function (event) {
|
|
|
+ if (event.colDef.field === 'goodsCd') {
|
|
|
+ let goodsCd = event.data.goodsCd;
|
|
|
+ cfnOpenGoodsDetailPopup('U', goodsCd);
|
|
|
+ }
|
|
|
+ if (event.colDef.field === 'ordNo') {
|
|
|
+ let ordNo = event.data.ordNo;
|
|
|
+ cfnOpenOrderDetailPopup(ordNo);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 1:1문의 내역 셀 클릭 이벤트
|
|
|
+ gridCounselOptions.onCellClicked = function (event) {
|
|
|
+ if (event.colDef.field === 'questTitle') {
|
|
|
+ let counselSq = event.data.counselSq;
|
|
|
+ cfnOpenOneToOneQnaDetailPopup(counselSq);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 상품문의 내역 셀 클릭 이벤트
|
|
|
+ gridGoodsQnaOptions.onCellClicked = function (event) {
|
|
|
+ if (event.colDef.field === 'questTitle') {
|
|
|
+ let counselSq = event.data.counselSq;
|
|
|
+ cfnOpenGoodsQnaDetailPopup(counselSq);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 상품평내역 셀 클릭 이벤트
|
|
|
+ gridReviewOptions.onCellClicked = function (event) {
|
|
|
+ if (event.colDef.field === 'reviewTitle') {
|
|
|
+ let reviewSq = event.data.reviewSq;
|
|
|
+ cfnOpenReviewDetailPopup(reviewSq);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 주소지 셀 클릭 이벤트
|
|
|
+ gridAddrOptions.onCellClicked = function (event) {
|
|
|
+ if (event.colDef.field !== 'delvAddrNm')
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (!gagajf.isNull(event.data)) {
|
|
|
+ $('#custAddr input[name=custDelvAddrSq]').val(event.data.custDelvAddrSq);
|
|
|
+ $('#custAddr input[name=delvAddrNm]').val(event.data.delvAddrNm);
|
|
|
+ $('#custAddr input[name=recipEmail]').val(event.data.recipEmail);
|
|
|
+ $('#custAddr input[name=recipNm]').val(event.data.recipNm);
|
|
|
+
|
|
|
+ if (!gagajf.isNull(event.data.recipPhnno)) {
|
|
|
+ let recipPhnno = event.data.recipPhnno.split("-");
|
|
|
+ $('#custAddr input[name=recipPhnno1]').val(recipPhnno[0]);
|
|
|
+ $('#custAddr input[name=recipPhnno2]').val(recipPhnno[1]);
|
|
|
+ $('#custAddr input[name=recipPhnno3]').val(recipPhnno[2]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!gagajf.isNull(event.data.recipTelno)) {
|
|
|
+ let recipTelno = event.data.recipTelno.split("-");
|
|
|
+ $('#custAddr input[name=recipTelno1]').val(recipTelno[0]);
|
|
|
+ $('#custAddr input[name=recipTelno2]').val(recipTelno[1]);
|
|
|
+ $('#custAddr input[name=recipTelno3]').val(recipTelno[2]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $('#custAddr input[name=recipPostNo]').val(event.data.recipPostNo);
|
|
|
+ $('#custAddr input[name=recipBaseAddr]').val(event.data.recipBaseAddr);
|
|
|
+ $('#custAddr input[name=recipDtlAddr]').val(event.data.recipDtlAddr);
|
|
|
+
|
|
|
+ let defaultYn = event.data.defaultYn === 'Y' ? true : false;
|
|
|
+ let delYn = event.data.delYn === 'Y' ? true : false;
|
|
|
+
|
|
|
+ $('#custAddr input:checkbox[name=defaultYn]').prop('checked', defaultYn);
|
|
|
+ $('#custAddr input:checkbox[name=delYn]').prop('checked', delYn);
|
|
|
+
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 회원정보 조회
|
|
|
+ var fnSearchCustInfo = function () {
|
|
|
+ $.get('/customer/info/' + custNo
|
|
|
+ , function (data) {
|
|
|
+ if (!gagajf.isNull(data)) {
|
|
|
+ $('span[name=custNm]').text(data.maskingCustNm);
|
|
|
+ $('span[name=custId]').text(data.maskingCustId);
|
|
|
+ $('span[name=siteNm]').text(gagaAgGrid.lookupValue(siteList, data.siteCd));
|
|
|
+ $('span[name=custNo]').text(data.custNo);
|
|
|
+ $('span[name=custGradeNm]').text(data.custGradeNm);
|
|
|
+ $('#custInfo select[name=custGrade]').val(data.custGrade);
|
|
|
+ $('#custInfo select[name=custGb]').val(data.custGb);
|
|
|
+ $('#custInfo select[name=managedRsn]').val(data.managedRsn);
|
|
|
+ $('#custInfo input[name=orgManagedRsn]').val(data.managedRsn);
|
|
|
+ $('#custInfo input[name=managedDtlRsn]').val(data.managedDtlRsn);
|
|
|
+ $('#custInfo td[name=managedDt]').text(gagaAgGrid.toDateTimeFormat(data.managedDt));
|
|
|
+ $('#custInfo td[name=joinDt]').text(gagaAgGrid.toDateTimeFormat(data.joinDt));
|
|
|
+
|
|
|
+ if (gagajf.isNull(data.loginDt)) {
|
|
|
+ $('#custInfo td[name=loginDt]').text("로그인 이력이 없습니다.");
|
|
|
+ } else {
|
|
|
+ $('#custInfo td[name=loginDt]').text(gagaAgGrid.toDateTimeFormat(data.loginDt));
|
|
|
+ }
|
|
|
+ $('#custInfo td[name=foreignerYn]').text(data.foreignerYn == 'Y' ? '외국인' : '내국인');
|
|
|
+ let secedeRsnYn = gagajf.isNull(data.secedeRsn) ? '아니요' : '예';
|
|
|
+ if (data.custStat == '10') {
|
|
|
+ secedeRsnYn = secedeRsnYn + '<button type="button" class="btn btn-danger btn-lg" style="margin-left: 5px;" onClick="fnCustomerSecede();">회원탈퇴</button>';
|
|
|
+ }
|
|
|
+ $('#custInfo td[name=secedeRsnYn]').html(secedeRsnYn);
|
|
|
+ let snsType = '';
|
|
|
+ if (!gagajf.isNull(data.nvJoinId)) {
|
|
|
+ snsType = 'NAVER'
|
|
|
+ }
|
|
|
+ if (!gagajf.isNull(data.kkJoinId)) {
|
|
|
+ if (!gagajf.isNull(snsType)) {
|
|
|
+ snsType += ','
|
|
|
+ }
|
|
|
+ snsType += 'KAKAO';
|
|
|
+ }
|
|
|
+ if (!gagajf.isNull(data.ysJoinId)) {
|
|
|
+ if (!gagajf.isNull(snsType)) {
|
|
|
+ snsType += ','
|
|
|
+ }
|
|
|
+ snsType += 'YES24';
|
|
|
+ }
|
|
|
+ $('#custInfo td[name=snsType]').text(snsType);
|
|
|
+ $('#custInfo input[name=homePostNo]').val(data.homePostNo);
|
|
|
+ $('#custInfo input[name=homeBaseAddr]').val(data.homeBaseAddr);
|
|
|
+ $('#custInfo input[name=homeDtlAddr]').val(data.homeDtlAddr);
|
|
|
+ $('#custInfo input[name=cellPhnno]').val(data.cellPhnno);
|
|
|
+ $('#custInfo input[name=custNm]').val(data.custNm);
|
|
|
+ $('#custInfo input[name=email]').val(data.email);
|
|
|
+ $('#custInfo input[name=orgCustGrade]').val(data.custGrade);
|
|
|
+ $('#custInfo td[name=sexGb]').text(gagaAgGrid.lookupValue(genderGbList, data.sexGb));
|
|
|
+
|
|
|
+ const $managedRsnNm = $('span[name=managedRsnNm]');
|
|
|
+ const $managedRsnDp = $('span[name=managedRsnDp]');
|
|
|
+
|
|
|
+ $managedRsnNm.text('');
|
|
|
+ $managedRsnNm.hide();
|
|
|
+ $managedRsnDp.text('');
|
|
|
+ $managedRsnDp.hide();
|
|
|
+ if (!gagajf.isNull(data.managedRsnNm)) {
|
|
|
+ let html = '<i class="fa fa-info-circle"></i>';
|
|
|
+ $managedRsnNm.html(html);
|
|
|
+ $managedRsnNm.show();
|
|
|
+ $managedRsnDp.html(html);
|
|
|
+ $managedRsnDp.show();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!gagajf.isNull(data.birthYmd)) {
|
|
|
+ $('#custInfo input[name=birthYmd]').val(data.birthYmd.toDate('YYYYMMDD').format("YYYY-MM-DD"));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!gagajf.isNull(data.maskingCellPhnno)) {
|
|
|
+ let cellPhnno = data.maskingCellPhnno.split("-");
|
|
|
+ $('#custInfo select[name=cellPhnno1]').val(cellPhnno[0]);
|
|
|
+ $('#custInfo input[name=cellPhnno2]').val(cellPhnno[1]);
|
|
|
+ $('#custInfo input[name=cellPhnno3]').val(cellPhnno[2]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!gagajf.isNull(data.maskingEmail)) {
|
|
|
+ let email = data.maskingEmail.split("@");
|
|
|
+ $('#custInfo input[name=email1]').val(email[0]);
|
|
|
+ $('#custInfo input[name=email2]').val(email[1]);
|
|
|
+ }
|
|
|
+ const $emailAgreeYn = $('#custInfo input:radio[name=emailAgreeYn]');
|
|
|
+ let emailAgreeYn = data.emailAgreeYn === 'Y' ? 0 : 1;
|
|
|
+ $emailAgreeYn.eq(emailAgreeYn).prop('checked', true);
|
|
|
+ $emailAgreeYn.eq(emailAgreeYn).parent().addClass('checked');
|
|
|
+
|
|
|
+ const $smsAgreeYn = $('#custInfo input:radio[name=smsAgreeYn]');
|
|
|
+ let smsAgreeYn = data.smsAgreeYn === 'Y' ? 0 : 1;
|
|
|
+ $smsAgreeYn.eq(smsAgreeYn).prop('checked', true);
|
|
|
+ $smsAgreeYn.eq(smsAgreeYn).parent().addClass('checked');
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ const $crtfdNo = $('#custInfo input[name=crtfdNo]');
|
|
|
+ const $message = $('#custInfo span[name=message]');
|
|
|
+
|
|
|
+ $crtfdNo.val('');
|
|
|
+ $crtfdNo.hide();
|
|
|
+ $message.text('');
|
|
|
+ $message.hide();
|
|
|
+ $('#custInfo input[name=crtfdNoYn]').val('N');
|
|
|
+ $('#btnCustCrtfdNo').hide();
|
|
|
+ $('#btnSendCustCrtfdNo').hide();
|
|
|
+ $('#explnPhone').hide();
|
|
|
+ };
|
|
|
+
|
|
|
+ // 구매내역 조회
|
|
|
+ var fnSearchOrder = function () {
|
|
|
+ const actionUrl = "/customer/order/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridOrderOptions);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 1:1문의 내역 조회
|
|
|
+ var fnSearchCounsel = function () {
|
|
|
+ const actionUrl = "/customer/counsel/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridCounselOptions);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 상품문의 내역 조회
|
|
|
+ var fnSearchGoodsQna = function () {
|
|
|
+ const actionUrl = "/customer/goodsQna/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridGoodsQnaOptions);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 쿠폰내역 조회
|
|
|
+ var fnSearchCoupon = function () {
|
|
|
+ const actionUrl = "/customer/coupon/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridCouponOptions);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 포인트내역 조회
|
|
|
+ var fnSearchPoint = function () {
|
|
|
+ $.get('/customer/point/' + custNo
|
|
|
+ , function (data) {
|
|
|
+ if (!gagajf.isNull(data)) {
|
|
|
+ $('#custPoint td[name=availPntAmt]').text(data.availPntAmt.addComma() + ' P');
|
|
|
+ $('#custPoint td[name=accumPntAmt]').text(data.accumPntAmt.addComma() + ' P');
|
|
|
+ $('#custPoint td[name=usePntAmt]').text(data.usePntAmt.addComma() + ' P');
|
|
|
+ $('#custPoint td[name=expectedPntAmt]').text(data.expectedPntAmt.addComma() + ' P');
|
|
|
+ $('#custPoint td[name=expectedExpirePntAmt]').text(data.expirePntAmt.addComma() + ' P');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ const actionUrl = "/customer/point/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridPointOptions);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 상품평내역 조회
|
|
|
+ var fnSearchReview = function () {
|
|
|
+ const actionUrl = "/customer/review/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridReviewOptions);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 회원등급변경이력 조회
|
|
|
+ var fnSearchChangeGrade = function () {
|
|
|
+ const actionUrl = "/customer/change/grade/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridGradeOptions);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 주소정보 조회
|
|
|
+ var fnSearchDelivery = function () {
|
|
|
+ const actionUrl = "/customer/delivery/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridAddrOptions);
|
|
|
+ $('#btnCustAddrNew').trigger('click');
|
|
|
+ };
|
|
|
+
|
|
|
+ // 회원접촉이력 조회
|
|
|
+ var fnSearchContact = function () {
|
|
|
+ const actionUrl = "/customer/contact/list/" + custNo;
|
|
|
+ gagaAgGrid.fetch(actionUrl, gridContactOptions);
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * DAUM을 이용한 우편번호 팝업 레이어
|
|
|
+ */
|
|
|
+ var fnOpenDaumAddr = function(id) {
|
|
|
+ let daumZip = new daum.Postcode({
|
|
|
+ oncomplete: function(data) {
|
|
|
+ // 우편번호와 주소 정보를 해당 필드에 넣는다.
|
|
|
+ if (id == 'custInfo') {
|
|
|
+ let formId = '#' + id;
|
|
|
+ $(formId + ' input[name=homePostNo]').val(data.zonecode);
|
|
|
+ $(formId + ' input[name=homeBaseAddr]').val(cfnGetDaumRoadAddr(data));
|
|
|
+ $(formId + ' input[name=homeDtlAddr]').focus();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (id == 'custAddr') {
|
|
|
+ let formId = '#' + id;
|
|
|
+ $(formId + ' input[name=recipPostNo]').val(data.zonecode);
|
|
|
+ $(formId + ' input[name=recipBaseAddr]').val(cfnGetDaumRoadAddr(data));
|
|
|
+ }
|
|
|
+
|
|
|
+ cfnCloseDaumAddr();
|
|
|
+ },
|
|
|
+ width: '100%'
|
|
|
+ });
|
|
|
+
|
|
|
+ cfnOpenDaumAddr(daumZip);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 휴대전화 유효성체크
|
|
|
+ var fnCheckValidationPhnno = function (formId) {
|
|
|
+ let result = true;
|
|
|
+ let cellPhnno1 = $(formId + ' select[name=cellPhnno1]').val();
|
|
|
+ let cellPhnno2 = $(formId + ' input[name=cellPhnno2]').val();
|
|
|
+ let cellPhnno3 = $(formId + ' input[name=cellPhnno3]').val();
|
|
|
+ let cellPhnno = cellPhnno1 + '-' + cellPhnno2 + '-' + cellPhnno3;
|
|
|
+ $(formId + ' input[name=cellPhnno]').val(cellPhnno);
|
|
|
+
|
|
|
+ // 휴대전화번호
|
|
|
+ if (!gagajf.testRegexp($(formId + ' input[name=cellPhnno]'), /^(01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4})$/)) {
|
|
|
+ result = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ };
|
|
|
+
|
|
|
+ // 이메일 체크
|
|
|
+ var fnCheckValidationEmail = function (formId) {
|
|
|
+ let result = true;
|
|
|
+
|
|
|
+ let email1 = $(formId + ' input[name=email1]').val();
|
|
|
+ let email2 = $(formId + ' input[name=email2]').val();
|
|
|
+
|
|
|
+ const $email = $(formId + ' input[name=email]');
|
|
|
+ $email.val(email1 + '@' + email2);
|
|
|
+
|
|
|
+ if (!gagajf.testRegexp($email, /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/)) {
|
|
|
+ result = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ };
|
|
|
+
|
|
|
+ var fnCertificationResult = function (data) {
|
|
|
+ const $message = $('#custInfo span[name=message]');
|
|
|
+
|
|
|
+ if (data.crtfdNoYn === 'Y') {
|
|
|
+ mcxDialog.alert("인증이 완료되었습니다.");
|
|
|
+ $message.text('');
|
|
|
+ $message.hide();
|
|
|
+ } else {
|
|
|
+ $message.text('인증번호가 일치하지 않습니다.\n확인 후 다시 입력해 주세요.');
|
|
|
+ $message.show();
|
|
|
+ }
|
|
|
+
|
|
|
+ $('#custInfo input[name=crtfdNoYn]').val(data.crtfdNoYn);
|
|
|
+ };
|
|
|
+
|
|
|
+ var fnCustomerSecede = function () {
|
|
|
+
|
|
|
+ if (gagajf.isNull(custNo)) {
|
|
|
+ mcxDialog.alert("탈퇴시킬 회원번호가 없습니다.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const actionUrl = "/customer/info/secede/form";
|
|
|
+ let paramsStr = "?custNo=" + custNo;
|
|
|
+ paramsStr += "&callBackFn=" + 'fnCustomerNotUseAfter';
|
|
|
+
|
|
|
+ cfnOpenModalPopup(actionUrl + paramsStr, 'popupCustSecede');
|
|
|
+ };
|
|
|
+
|
|
|
+ var fnCustomerNotUseAfter = function () {
|
|
|
+
|
|
|
+ if (!gagajf.isNull(fnSearch) && typeof fnSearch == "function") {
|
|
|
+ fnSearch();
|
|
|
+ }
|
|
|
+
|
|
|
+ uifnPopupClose('popupCustomerDetail');
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ $('#btnLogin').on('click', function () {
|
|
|
+ let custId = $('span[name=custId]').text();
|
|
|
+ const actionUrl = _frontUrl + '/customer/front/login?custId=' + custId;
|
|
|
+ let popupWidth = window.screen.width;
|
|
|
+ let popupHeight = window.screen.height;
|
|
|
+ window.open(actionUrl);
|
|
|
+ })
|
|
|
+
|
|
|
+ $(document).ready(function () {
|
|
|
+ // 생년월일 달력 설정
|
|
|
+ const $birthYmd = $('#custInfo input[name=birthYmd]');
|
|
|
+ let currentYear = new Date().format('YYYY');
|
|
|
+ $birthYmd.datepicker("destroy");
|
|
|
+ $birthYmd.datepicker({
|
|
|
+ changeMonth: true,
|
|
|
+ changeYear: true,
|
|
|
+ yearRange: (currentYear - 100) + ' : ' + (currentYear - 14),
|
|
|
+ defaultDate: $birthYmd.val()
|
|
|
+ });
|
|
|
+
|
|
|
+ //회원정보 조회
|
|
|
+ fnSearchCustInfo();
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custOrderList', gridOrderOptions); // 주문내역
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custCounselList', gridCounselOptions); // 1:1문의 내역
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custGoodsQnaList', gridGoodsQnaOptions); // 상품문의 내역
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custCouponList', gridCouponOptions); // 쿠폰내역
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custPointList', gridPointOptions); // 포인트내역 그리드
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custReviewList', gridReviewOptions); // 상품평 그리드
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custGradeList', gridGradeOptions); // 등급변경 그리드
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custAddrList', gridAddrOptions); // 주소정보 그리드
|
|
|
+
|
|
|
+ gagaAgGrid.createGrid('custContactList', gridContactOptions); // 회원접촉이력 그리드
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ /*]]>*/
|
|
|
+</script>
|
|
|
+
|
|
|
+</html>
|