CustomerDetailForm.html 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : CustomerDetailForm.html
  7. * @desc : 회원 상세 팝업 Page
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2021 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2021.01.18 jsshin 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div class="modalPopup" data-width="1820" data-height="750" id="customerDetailForm">
  18. <div class="panelStyle">
  19. <!-- TITLE -->
  20. <div class="panelTitle">
  21. <strong>회원상세</strong>
  22. <button type="button" class="close" onclick="uifnPopupClose('popupCustomerDetail');"><em class="fa fa-times"></em></button>
  23. </div>
  24. <!-- //TITLE -->
  25. <!-- CONTENT -->
  26. <div class="panelContent" >
  27. <table class="frmStyle" aria-describedby="회원정보">
  28. <colgroup>
  29. <col style="width:10%;"/>
  30. <col style="width:15%;"/>
  31. <col style="width:10%;"/>
  32. <col style="width:15%;"/>
  33. <col style="width:10%;"/>
  34. <col style="width:15%;"/>
  35. </colgroup>
  36. <tbody>
  37. <th>이름</th>
  38. <td>
  39. <span id="spanCustNm" name="spanCustNm"></span>
  40. <span id="managedRsnNm" name="managedRsnNm" class="infoTxt cRed h5"></span>
  41. </td>
  42. <th>아이디</th>
  43. <td>
  44. <span id="spanCustId" name="spanCustId"></span>
  45. <th:block th:if="${sessionInfo.userId == 'jsshin'}">
  46. <button type="button" id="btnLogin" class="btn btnRight btn-success btn-lg">Login</button>
  47. </th:block>
  48. </td>
  49. <th>가입사이트</th>
  50. <td>
  51. <span id="siteNm" name="siteNm"></span>
  52. </td>
  53. </tbody>
  54. </table>
  55. <!-- TABS SPACE -->
  56. <div class="tabs">
  57. <!-- TABS NAVI -->
  58. <div class="tabsNav">
  59. <ul>
  60. <li class="on"><a href="#tab1" onclick="fnSearchCustInfo();">기본정보</a></li>
  61. <li><a href="#tab2" onclick="fnSearchOrder();">주문내역</a></li>
  62. <li><a href="#tab3" onclick="fnCustSearchDelivery();">배송지정보</a></li>
  63. <li><a href="#tab4" onclick="fnSearchCoupon();">쿠폰내역</a></li>
  64. <li><a href="#tab5" onclick="fnSearchPoint();">포인트내역</a></li>
  65. <li><a href="#tab6" onclick="fnSearchGiftCard()">상품권내역</a></li>
  66. <li><a href="#tab7" onclick="fnSearchReview();">상품평내역</a></li>
  67. <li><a href="#tab8" onclick="fnSearchCounsel();">1:1문의내역</a></li>
  68. <li><a href="#tab9" onclick="fnSearchGoodsQna();">상품문의내역</a></li>
  69. <li><a href="#tab10" onclick="fnSearchContact();">회원접촉이력</a></li>
  70. <li><a href="#tab11" onclick="fnSearchChangeGrade();">회원등급변경이력</a></li>
  71. </ul>
  72. </div>
  73. <!-- //TABS NAVI -->
  74. <!-- TABS CONTENTS -->
  75. <ul class="tabsCont">
  76. <!-- TAB1 : 회원정보 -->
  77. <li class="tab on" id="tab1">
  78. <!-- TAB1 PANELSTYLE -->
  79. <div class="panelStyle">
  80. <form id="custInfoForm" name="custInfoForm" action="#" method="post">
  81. <input type="hidden" name="custNo" th:value="${custNo}"/>
  82. <h4>기본정보</h4>
  83. <table class="frmStyle">
  84. <colgroup>
  85. <col style="width:10%;"/>
  86. <col style="width:40%;"/>
  87. <col style="width:10%;"/>
  88. <col/>
  89. </colgroup>
  90. <tbody>
  91. <tr>
  92. <th class="dashR">회원구분<em class="required" title="필수"></em></th>
  93. <td class="dashR">
  94. <select id="custGb" name="custGb">
  95. <option th:if="${custGbList}" th:each="oneData, status : ${custGbList}" th:value="${oneData.cd}"
  96. th:text="${'[' + oneData.cd + '] '+oneData.cdNm}"></option>
  97. </select>
  98. </td>
  99. <th class="dashR">회원등급<em class="required" title="필수"></em></th>
  100. <td class="dashR">
  101. <select id="custGrade" name="custGrade">
  102. <option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}"
  103. th:text="${'[' + oneData.cd + '] '+oneData.cdNm}"></option>
  104. </select>
  105. </td>
  106. </tr>
  107. <tr>
  108. <th class="dashR">관리대상</th>
  109. <td class="dashR">
  110. <select id="managedRsn" name="managedRsn">
  111. <option value="">일반</option>
  112. <option th:if="${managedRsnList}" th:each="oneData, status : ${managedRsnList}" th:value="${oneData.cd}"
  113. th:text="${'[' + oneData.cd + '] '+oneData.cdNm}"></option>
  114. </select>
  115. <span class="infoTxt cRed h5" id="managedRsnDp" name="managedRsnDp"></span>
  116. </td>
  117. <th class="dashR">관리대상 지정 날짜</th>
  118. <td class="dashR" id="managedDt" name="managedDt">
  119. </td>
  120. </tr>
  121. <tr>
  122. <th class="dashR">관리대상 지정 사유</th>
  123. <td class="dashR" colspan="3">
  124. <input type="text" id="managedDtlRsn" name="managedDtlRsn" class="w600" />
  125. </td>
  126. </tr>
  127. <tr>
  128. <th class="dashR">비밀번호</th>
  129. <td class="dashR">
  130. *******
  131. <button type="button" id="btnResetPassword" class="btn btn-info btn-lg">초기화</button>
  132. <span class="infoTxt cBlue">
  133. <i class="fa fa-info-circle"></i>회원에게 임시비밀번호를 발송합니다. (이메일, 알림톡)
  134. </span>
  135. </td>
  136. <th class="dashR">내외국인</th>
  137. <td class="dashR" id="foreignerYn" name="foreignerYn"></td>
  138. </tr>
  139. <tr>
  140. <th class="dashR">생년월일</th>
  141. <td class="dashR">
  142. <input type="text" id="birthYmd" name="birthYmd" class="schDate w100" data-valid-name="생년월일"/>
  143. </td>
  144. <th class="dashR">성별</th>
  145. <td class="dashR" id="sexGb" name="sexGb"></td>
  146. </tr>
  147. <tr>
  148. <th class="dashR">자택주소</th>
  149. <td class="dashR" colspan="3">
  150. <input type="text" id="homeZipcode" name="homeZipcode" class="w100" readonly="readonly"/>
  151. <button type="button" class="btn btn-info btn-lg" onclick="fnOpenDaumAddr('custInfoForm');">우편번호찾기</button>
  152. <br/>
  153. <input type="text" id="homeBaseAddr" name="homeBaseAddr" class="w300" readonly="readonly"/>
  154. <input type="text" id="homeDtlAddr" name="homeDtlAddr" class="w300"/>
  155. </td>
  156. </tr>
  157. <tr>
  158. <th class="dashR">휴대전화번호<em class="required" title="필수"></em></th>
  159. <td class="dashR">
  160. <input type="hidden" name="cellPhnno"/>
  161. <input type="text" name="maskingCellPhnno" class="w130" readonly="readonly"/>
  162. <button type="button" id="btnCustSendLms" class="btn btn-info btn-lg">LMS전송</button>
  163. <button type="button" id="btnCustCrtfd" class="btn btn-info btn-lg">번호변경</button>
  164. </td>
  165. <th class="dashR">SMS수신여부<em class="required" title="필수"></em></th>
  166. <td class="dashR">
  167. <label class="rdoBtn"><input type="radio" name="smsAgreeYn" value="Y"/>수신</label>
  168. <label class="rdoBtn"><input type="radio" name="smsAgreeYn" value="N"/>미수신</label>
  169. </td>
  170. </tr>
  171. <tr>
  172. <th class="dashR">이메일<em class="required" title="필수"></em></th>
  173. <td class="dashR">
  174. <input type="hidden" name="emailModifyYn"/>
  175. <input type="hidden" name="maskingEmail"/>
  176. <input type="hidden" name="orgEmail"/>
  177. <input type="hidden" name="email" data-valid-name="이메일"/>
  178. <input type="text" id="emailId" name="emailId" class="w200" maxlength="30"/>
  179. @
  180. <input type="text" id="emailDomain" name="emailDomain" class="w150" maxlength="20"/>
  181. <select id="emailDomainList" name="emailDomainList">
  182. <option value="">선택하세요</option>
  183. <option th:if="${emailDomainList}" th:each="oneData, status : ${emailDomainList}" th:value="${oneData.cd}"
  184. th:text="|${oneData.cdNm}|"></option>
  185. </select>
  186. <button type="button" id="btnCustSendEmail" class="btn btn-info btn-lg" >이메일발송</button>
  187. </td>
  188. <th class="dashR">EMAIL수신여부<em class="required" title="필수"></em></th>
  189. <td class="dashR">
  190. <label class="rdoBtn"><input type="radio" name="emailAgreeYn" value="Y"/>수신</label>
  191. <label class="rdoBtn"><input type="radio" name="emailAgreeYn" value="N"/>미수신</label>
  192. </td>
  193. </tr>
  194. <tr>
  195. <th class="dashR">가입일시</th>
  196. <td class="dashR" id="joinDt" name="joinDt"></td>
  197. <th class="dashR">APP수신여부<em class="required" title="필수"></em></th>
  198. <td class="dashR">
  199. <label class="rdoBtn"><input type="radio" name="appAgreeYn" value="Y"/>수신</label>
  200. <label class="rdoBtn"><input type="radio" name="appAgreeYn" value="N"/>미수신</label>
  201. </td>
  202. </tr>
  203. <tr>
  204. <th class="dashR">최종로그인일시</th>
  205. <td class="dashR" id="loginLdt" name="loginLdt"></td>
  206. <th class="dashR">마케팅수신여부<em class="required" title="필수"></em></th>
  207. <td class="dashR">
  208. <label class="rdoBtn"><input type="radio" name="mkAgreeYn" value="Y"/>수신</label>
  209. <label class="rdoBtn"><input type="radio" name="mkAgreeYn" value="N"/>미수신</label>
  210. </td>
  211. </tr>
  212. <tr>
  213. <th class="dashR">SNS가입유형</th>
  214. <td class="dashR" id="snsType" name="snsType"></td>
  215. <th class="dashR">탈퇴여부</th>
  216. <td class="dashR">
  217. <spna id="secedeRsnYn" name="secedeRsnYn" ></spna>
  218. <button type="button" id="btnCustSecede" class="btn btn-danger btn-lg marL5" style="display: none">
  219. 회원탈퇴
  220. </button>
  221. </td>
  222. </tr>
  223. </tbody>
  224. </table>
  225. <ul class="panelBar">
  226. <li class="right">
  227. <button type="button" id="btnCustInfoSave" class="btn btn-success btn-lg">저장</button>
  228. </li>
  229. </ul>
  230. </form>
  231. </div>
  232. <!-- //TAB1 PANELSTYLE -->
  233. </li>
  234. <!-- //TAB1 : 회원정보 -->
  235. <!-- TAB2 : 주문내역 -->
  236. <li id="tab2" class="tab">
  237. <!-- TAB2 PANELSTYLE -->
  238. <div class="panelStyle">
  239. <form id="custOrderListFrom" name="custOrderListFrom" action="#" th:action="@{'/customer/order/list'}" method="post">
  240. <input type="hidden" name="custNo" th:value="${custNo}"/>
  241. <h4>주문내역</h4>
  242. <ul class="panelBar">
  243. <li class="right">
  244. 검색결과 : <strong><span id="gridOrderRowTotalCount">0</span> 건</strong>&nbsp;
  245. 쪽번호 <span id="ordPgNo">0</span>/ <strong id="ordEndPgNo">0</strong>&nbsp;&nbsp;
  246. <select name="pageSize">
  247. <option value="50" selected="selected">50개씩 보기</option>
  248. <option value="100">100개씩 보기</option>
  249. <option value="500">500개씩 보기</option>
  250. <option value="1000">1000개씩 보기</option>
  251. </select>
  252. <input type="hidden" name="pageNo" id="pageNo" value ="1"/>
  253. </li>
  254. </ul>
  255. <div id="custOrderList" class="ag-theme-balham" style="width: 100%; height: 510px;"></div>
  256. <ul class="panelBar">
  257. <li class="center">
  258. <div class="tablePaging" id="custOrderListPagination"></div>
  259. </li>
  260. </ul>
  261. </form>
  262. </div>
  263. <!-- //TAB2 PANELSTYLE -->
  264. </li>
  265. <!-- //TAB2 : 주문내역 -->
  266. <!-- TAB3 : 배송지정보 -->
  267. <li id="tab3" class="tab">
  268. <!-- TAB3 PANELSTYLE -->
  269. <div class="panelStyle">
  270. <form id="custAddrForm" name="custAddrForm" action="#" method="post">
  271. <input type="hidden" name="custDelvAddrSq"/>
  272. <input type="hidden" name="custNo" th:value="${custNo}"/>
  273. <h4>배송지정보</h4>
  274. <div id="custAddrList" class="ag-theme-balham" style="width: 100%; height: 300px;" ></div>
  275. <table class="frmStyle">
  276. <colgroup>
  277. <col style="width:5%;"/>
  278. <col style="width:25%;"/>
  279. <col style="width:5%;"/>
  280. <col style="width:25%;"/>
  281. <col style="width:5%;"/>
  282. <col style="width:25%;"/>
  283. <col/>
  284. </colgroup>
  285. <tbody>
  286. <tr>
  287. <th>배송지명<em class="required" title="필수"></em></th>
  288. <td>
  289. <input type="text" class="w200" name="delvAddrNm" maxlength="30" required="required" data-valid-name="배송지명"/>
  290. <label class="chkBox">
  291. <input type="checkbox" name="defaultYn" value="Y"/>기본
  292. </label>
  293. </td>
  294. <th>수령인<em class="required" title="필수"></em></th>
  295. <td>
  296. <input type="text" class="w200" name="recipNm" maxlength="10" required="required" data-valid-name="수령인"/>
  297. </td>
  298. <th>삭제여부</th>
  299. <td>
  300. <label class="chkBox">
  301. <input type="checkbox" name="delYn" value="Y"/>
  302. </label>
  303. </td>
  304. </tr>
  305. <tr>
  306. <th>전화번호</th>
  307. <td >
  308. <input type="hidden" id="recipTelno" name="recipTelno"/>
  309. <select class="w100" id="telFirstNo" name="telFirstNo">
  310. <option value="">선택</option>
  311. <option th:if="${nationalNumberList}" th:each="oneData, status : ${nationalNumberList}"
  312. th:value="${oneData.cd}" th:text="|${oneData.cd}|"></option>
  313. </select> -
  314. <input type="text" class="w100" name="telMiddleNo" maxlength="4" data-valid-type="numeric"
  315. data-valid-name="전화번호"/> -
  316. <input type="text" class="w100" name="telLastNo" maxlength="4" data-valid-type="numeric"
  317. data-valid-name="전화번호"/>
  318. </td>
  319. <th>휴대전화번호<em class="required" title="필수"></em></th>
  320. <td colspan="4">
  321. <input type="hidden" id="recipPhnno" name="recipPhnno"/>
  322. <select class="w100" id="recipFirstNo" name="recipFirstNo">
  323. <option value="">선택</option>
  324. <option th:if="${nationalHpNumberList}" th:each="oneData, status : ${nationalHpNumberList}"
  325. th:value="${oneData.cd}" th:text="|${oneData.cd}|"></option>
  326. </select> -
  327. <input type="text" class="w100" id="recipMiddleNo" name="recipMiddleNo" maxlength="4" required="required" data-valid-type="numeric"
  328. data-valid-name="휴대전화번호"/> -
  329. <input type="text" class="w100" id="recipLastNo" name="recipLastNo" maxlength="4" required="required" data-valid-type="numeric"
  330. data-valid-name="휴대전화번호"/>
  331. </td>
  332. </tr>
  333. <tr>
  334. <th>주소<em class="required" title="필수"></em></th>
  335. <td colspan="5">
  336. <input type="text" id="recipZipcode" name="recipZipcode" class="w100" maxlength="10" required="required" data-valid-name="주소"/>
  337. <button type="button" class="btn btn-info btn-lg" onclick="fnOpenDaumAddr('custAddrForm');">우편번호찾기</button>
  338. <br/>
  339. <input type="text" id="recipBaseAddr" name="recipBaseAddr" class="w300" maxlength="50" required="required" data-valid-name="주소"/>
  340. <input type="text" id="recipDtlAddr" name="recipDtlAddr" class="w300" maxlength="30" required="required" data-valid-name="상세주소"/>
  341. </td>
  342. </tr>
  343. </tbody>
  344. </table>
  345. <ul class="panelBar">
  346. <li class="right">
  347. <button type="button" class="btn btn-info btn-lg" id="btnCustAddrNew">신규</button>
  348. <button type="button" class="btn btn-success btn-lg" id="btnCustAddrSave">저장</button>
  349. </li>
  350. </ul>
  351. </form>
  352. </div>
  353. <!-- //TAB3 PANELSTYLE -->
  354. </li>
  355. <!-- //TAB3 : 배송지정보 -->
  356. <!-- TAB4 : 쿠폰 내역 -->
  357. <li id="tab4" class="tab">
  358. <!-- TAB4 PANELSTYLE -->
  359. <div class="panelStyle">
  360. <h4>쿠폰 내역</h4>
  361. <div id="custCouponList" class="ag-theme-balham" style="width: 100%; height: 510px;" ></div>
  362. <ul class="panelBar">
  363. <li class="right">
  364. <button type="button" id="btnCustCouponCreate" class="btn btn-info btn-lg" >쿠폰발급</button>
  365. </li>
  366. </ul>
  367. </div>
  368. <!-- //TAB4 PANELSTYLE -->
  369. </li>
  370. <!-- //TAB4 : 쿠폰 내역 -->
  371. <!-- TAB5 : 포인트 내역 -->
  372. <li id="tab5" class="tab">
  373. <!-- TAB5 PANELSTYLE -->
  374. <div class="panelStyle">
  375. <form id="custPointForm" name="custPointForm" action="#" method="post">
  376. <h4>포인트 내역</h4>
  377. <table class="tableStyle">
  378. <colgroup>
  379. <col style="width:15%;"/>
  380. <col style="width:15%;"/>
  381. <col style="width:15%;"/>
  382. <col style="width:20%;"/>
  383. <col style="width:20%;"/>
  384. <col style="width:25%;"/>
  385. </colgroup>
  386. <tbody>
  387. <tr>
  388. <th>가용포인트</th>
  389. <th>누적포인트</th>
  390. <th>사용포인트</th>
  391. <th>소멸포인트</th>
  392. <th>적립예정포인트</th>
  393. <th>소멸예정포인트(30일)</th>
  394. </tr>
  395. <tr>
  396. <td name="availPntAmt">0 P</td>
  397. <td name="accumPntAmt">0 P</td>
  398. <td name="usePntAmt">0 P</td>
  399. <td name="expirePntAmt">0 P</td>
  400. <td name="expectedPntAmt">0 P</td>
  401. <td name="expectedExpirePntAmt">0 P</td>
  402. </tr>
  403. </tbody>
  404. </table>
  405. <br/>
  406. <div id="custPointList" class="ag-theme-balham" style="width: 100%; height: 420px;"></div>
  407. <ul class="panelBar">
  408. <li class="right">
  409. <button type="button" id="btnCustPointCreate" class="btn btn-info btn-lg">포인트부여</button>
  410. </li>
  411. </ul>
  412. </form>
  413. </div>
  414. <!-- //TAB5 PANELSTYLE -->
  415. </li>
  416. <!-- //TAB5 : 포인트 내역 -->
  417. <!-- TAB6 : 상품권 내역 -->
  418. <li id="tab6" class="tab">
  419. <!-- TAB6 PANELSTYLE -->
  420. <div class="panelStyle">
  421. <h4>상품권 내역</h4>
  422. <div id="custGiftCardList" class="ag-theme-balham" style="width: 100%; height: 510px;"></div>
  423. </div>
  424. <!-- //TAB6 PANELSTYLE -->
  425. </li>
  426. <!-- //TAB6 : 상품권 내역 -->
  427. <!-- TAB7 : 상품평 -->
  428. <li id="tab7" class="tab">
  429. <!-- TAB7 PANELSTYLE -->
  430. <div class="panelStyle">
  431. <h4>상품평 내역</h4>
  432. <div id="custReviewList" class="ag-theme-balham" style="width: 100%; height: 510px;"></div>
  433. </div>
  434. <!-- //TAB7 PANELSTYLE -->
  435. </li>
  436. <!-- //TAB7 : 상품평 내역 -->
  437. <!-- TAB8 : 1:1문의 내역 -->
  438. <li id="tab8" class="tab">
  439. <!-- TAB8 PANELSTYLE -->
  440. <div class="panelStyle">
  441. <h4>1:1문의 내역</h4>
  442. <div id="custCounselList" class="ag-theme-balham" style="width: 100%; height: 510px;"></div>
  443. </div>
  444. <!-- //TAB8 PANELSTYLE -->
  445. </li>
  446. <!-- //TAB8 : 1:1문의 내역 -->
  447. <!-- TAB9 : 상품문의 내역 -->
  448. <li id="tab9" class="tab">
  449. <!-- TAB9 PANELSTYLE -->
  450. <div class="panelStyle">
  451. <h4>상품문의 내역</h4>
  452. <div id="custGoodsQnaList" class="ag-theme-balham" style="width: 100%; height: 510px;"></div>
  453. </div>
  454. <!-- //TAB9 PANELSTYLE -->
  455. </li>
  456. <!-- //TAB9 : 상품문의 내역 -->
  457. <!-- TAB10 : 회원접촉이력 -->
  458. <li id="tab10" class="tab">
  459. <!-- TAB10 PANELSTYLE -->
  460. <div class="panelStyle">
  461. <form id="custContactHstForm" name="custContactHstForm" action="#" method="post">
  462. <input type="hidden" name="custNo" th:value="${custNo}"/>
  463. <h4>회원접촉이력</h4>
  464. <table class="frmStyle">
  465. <colgroup>
  466. <col style="width:3%;"/>
  467. <col style="width:7%;"/>
  468. <col style="width:6%;"/>
  469. <col style="width:5%;"/>
  470. <col style="width:6%;"/>
  471. <col style="width:29%;"/>
  472. <col/>
  473. </colgroup>
  474. <tbody>
  475. <tr>
  476. <th>접촉유형<em class="required" title="필수"></em></th>
  477. <td>
  478. <select name="contactType" class="w150" required="required" data-valid-type="select" data-valid-name="접촉유형">
  479. <option value="">[선택]</option>
  480. <option th:if="${contactTypeList}" th:each="oneData, status : ${contactTypeList}" th:value="${oneData.cd}"
  481. th:text="${'[' + oneData.cd + '] '+oneData.cdNm}"></option>
  482. </select>
  483. </td>
  484. <th>접촉방법<em class="required" title="필수"></em></th>
  485. <td>
  486. <select name="contactMethod" class="w150" required="required" data-valid-type="select" data-valid-name="접촉방법">
  487. <option value="">[선택]</option>
  488. <option th:if="${contactMethodList}" th:each="oneData, status : ${contactMethodList}" th:value="${oneData.cd}"
  489. th:text="${'[' + oneData.cd + '] '+oneData.cdNm}"></option>
  490. </select>
  491. </td>
  492. <th>내용<em class="required" title="필수"></em></th>
  493. <td>
  494. <textarea class="textareaR2 w600" name="contactContents" required="required" data-valid-name="내용"></textarea>
  495. <button type="button" id="btnSaveContact" class="btn btn-success btn-lg">저장</button>
  496. </td>
  497. </tr>
  498. </tbody>
  499. </table>
  500. <br/>
  501. <div id="custContactList" class="ag-theme-balham" style="width: 100%; height: 420px;"></div>
  502. </form>
  503. </div>
  504. <!-- //TAB10 PANELSTYLE -->
  505. </li>
  506. <!-- //TAB10 : 회원접촉이력 -->
  507. <!-- TAB11 : 등급변경이력 -->
  508. <li id="tab11" class="tab">
  509. <!-- TAB11 PANELSTYLE -->
  510. <div class="panelStyle">
  511. <h4>등급변경이력</h4>
  512. <div id="custGradeList" class="ag-theme-balham" style="width: 100%; height: 510px;"></div>
  513. </div>
  514. <!-- //TAB11 PANELSTYLE -->
  515. </li>
  516. <!-- //TAB11 : 등급변경이력 -->
  517. </ul>
  518. <!-- //TABS CONTENTS -->
  519. </div>
  520. <!-- // TABS SPACE -->
  521. </div>
  522. <!-- //CONTENT -->
  523. </div>
  524. </div>
  525. <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>
  526. <script th:inline="javascript">
  527. /*<![CDATA[*/
  528. const custNo = [[${custNo}]]; //고객번호
  529. const siteList = gagajf.convertToArray([[${siteList}]]); //사이트목록
  530. //const custGbList = gagajf.convertToArray([[${custGbList}]]); //회원구분
  531. const custGradeList = gagajf.convertToArray([[${custGradeList}]]); //회원등급
  532. //const managedRsnList = gagajf.convertToArray([[${managedRsnList}]]); //관리대상
  533. const mallGbList = gagajf.convertToArray([[${mallGbList}]]); //몰구분
  534. const orderStatList = gagajf.convertToArray([[${orderStatList}]]); //주문상태
  535. const orderDtlStatList = gagajf.convertToArray([[${orderDtlStatList}]]); //주문상세상태
  536. const cpnType = gagajf.convertToArray([[${cpnType}]]); //쿠폰유형
  537. //const dcWayList = gagajf.convertToArray([[${dcWayList}]]); //쿠폰할인방식
  538. const pubReasonList = gagajf.convertToArray([[${pubReasonList}]]); //쿠폰발행사유
  539. const pntOccurGbList = gagajf.convertToArray([[${pntOccurGbList}]]); //포인트반영구분
  540. const pntUploadStatList = gagajf.convertToArray([[${pntUploadStatList}]]); //포인트반영상태
  541. const reviewPntStatList = gagajf.convertToArray([[${reviewPntStatList}]]); //상품평포인트반영상태
  542. const giftCardOccurGbList = gagajf.convertToArray([[${giftCardOccurGbList}]]); //상품권유형
  543. const counselClsfList = gagajf.convertToArray([[${counselClsfList}]]); //상담분류
  544. const contactTypeList = gagajf.convertToArray([[${contactTypeList}]]); //회원접촉유형
  545. const contactMethodList = gagajf.convertToArray([[${contactMethodList}]]); //회원접촉방법
  546. const genderGbList = gagajf.convertToArray([[${genderGbList}]]); //성별
  547. let orgData;
  548. //구매내역 그리드
  549. const columnOrderDefs = [
  550. {
  551. headerName: "주문번호", field: "ordNo", width: 100, cellClass: 'text-center',
  552. cellRenderer: function (params) {
  553. return '<a href="javascript:void(0);">' + params.value + '</a>';
  554. }
  555. },
  556. {headerName: "주문상세번호", field: "ordDtlNo", width: 100, cellClass: 'text-center'},
  557. {
  558. headerName: "몰구분", field: "mallGb", width: 100, cellClass: 'text-center',
  559. valueFormatter: function (params) {
  560. return gagaAgGrid.lookupValue(mallGbList, params.value);
  561. }
  562. },
  563. {
  564. headerName: "결제일시", field: "payDt", width: 150, cellClass: 'text-center',
  565. cellRenderer: function (params) {
  566. return gagaAgGrid.toDateTimeFormat(params.value);
  567. }
  568. },
  569. {
  570. headerName: "배송완료일시", field: "delvEddt", width: 150, cellClass: 'text-center',
  571. cellRenderer: function (params) {
  572. return gagaAgGrid.toDateTimeFormat(params.value);
  573. }
  574. },
  575. {headerName: "주문자전화번호", field: "ordTelno", width: 120, cellClass: 'text-center'},
  576. {headerName: "주문자휴대폰", field: "ordPhnno", width: 130, cellClass: 'text-center'},
  577. {
  578. headerName: "주문상세상태", field: "ordDtlStat", width: 130, cellClass: 'text-center',
  579. valueFormatter: function (params) {
  580. return gagaAgGrid.lookupValue(orderDtlStatList, params.value);
  581. }
  582. },
  583. {headerName: "수령인", field: "recipNm", width: 100, cellClass: 'text-center'},
  584. {
  585. headerName: "상품코드", field: "goodsCd", width: 150, cellClass: 'text-center',
  586. cellRenderer: function (params) {
  587. return '<a href="javascript:void(0);">' + params.value + '</a>';
  588. }
  589. },
  590. {headerName: "색상", field: "optCd1", width: 100, cellClass: 'text-center'},
  591. {headerName: "사이즈", field: "optCd2", width: 100, cellClass: 'text-center'},
  592. {headerName: "상품명", field: "goodsNm", width: 250, cellClass: 'text-left'},
  593. {headerName: "주문수량", field: "ordQty", width: 100, cellClass: 'text-center'},
  594. {headerName: "판매상품가격", field: "currPrice", width: 100, cellClass: 'text-center'},
  595. ];
  596. // 1:1문의 내역 그리드
  597. const columnCounselDefs = [
  598. {
  599. headerName: "상담분류", field: "counselClsf", width: 150, cellClass: 'text-center',
  600. valueFormatter: function (params) {
  601. return gagaAgGrid.lookupValue(counselClsfList, params.value);
  602. }
  603. },
  604. {
  605. headerName: "질문제목", field: "questTitle", width: 300, cellClass: 'text-center',
  606. cellRenderer: function (params) {
  607. return '<a href="javascript:void(0);">' + params.value + '</a>';
  608. }
  609. },
  610. {headerName: "비밀글여부", field: "secretYn", width: 100, cellClass: 'text-center'},
  611. {
  612. headerName: "등록일시", field: "questDt", width: 150, cellClass: 'text-center',
  613. cellRenderer: function (params) {
  614. return gagaAgGrid.toDateTimeFormat(params.value);
  615. }
  616. },
  617. {
  618. headerName: "답변일시", field: "ansDt", width: 150, cellClass: 'text-center',
  619. cellRenderer: function (params) {
  620. return gagaAgGrid.toDateTimeFormat(params.value);
  621. }
  622. },
  623. {headerName: "확인자", field: "ansNm", width: 100, cellClass: 'text-center'}
  624. ];
  625. // 상품문의 내역 그리드
  626. const columnGoodsQnaDefs = [
  627. {headerName: "상품코드", field: "relGoodsCd", width: 200, cellClass: 'text-center'},
  628. {
  629. headerName: "질문제목", field: "questTitle", width: 300, cellClass: 'text-center',
  630. cellRenderer: function (params) {
  631. return '<a href="javascript:void(0);">' + params.value + '</a>';
  632. }
  633. },
  634. {headerName: "비밀글여부", field: "secretYn", width: 100, cellClass: 'text-center'},
  635. {
  636. headerName: "등록일시", field: "questDt", width: 150, cellClass: 'text-center',
  637. cellRenderer: function (params) {
  638. return gagaAgGrid.toDateTimeFormat(params.value);
  639. }
  640. },
  641. {
  642. headerName: "답변일시", field: "ansDt", width: 150, cellClass: 'text-center',
  643. cellRenderer: function (params) {
  644. return gagaAgGrid.toDateTimeFormat(params.value);
  645. }
  646. },
  647. {headerName: "확인자", field: "ansNm", width: 100, cellClass: 'text-center'}
  648. ];
  649. //쿠폰내역 그리드
  650. const columnCouponDefs = [
  651. // {width: 40, minWidth: 40, cellClass: 'text-center', pinned: 'left', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  652. {headerName: "회원쿠폰SQ", field: "custCpnSq", width: 100, cellClass: 'text-center', hide: true},
  653. {headerName: "쿠폰ID", field: "cpnId", width: 100, cellClass: 'text-center'},
  654. {headerName: "쿠폰명", field: "cpnNm", width: 300, cellClass: 'text-center'
  655. , cellRenderer: function (params) {
  656. return "<a href=\"javascript:void(0);\" onclick=\"cfnCouponCreatePopup('U','" + params.data.cpnId + "');\">" + params.value + "</a>";
  657. }
  658. },
  659. {
  660. headerName: "유효기간 시작일시", field: "availStdt", width: 150, cellClass: 'text-center',
  661. cellRenderer: function (params) {
  662. return gagaAgGrid.toDateTimeFormat(params.value);
  663. }
  664. },
  665. {
  666. headerName: "유효기간 종료일시", field: "availEddt", width: 150, cellClass: 'text-center',
  667. cellRenderer: function (params) {
  668. return gagaAgGrid.toDateTimeFormat(params.value);
  669. }
  670. },
  671. {headerName: "주문번호", field: "ordNo", width: 130, cellClass: 'text-center'},
  672. {
  673. headerName: "사용일시", field: "usedDt", width: 100, cellClass: 'text-center',
  674. cellRenderer: function (params) {
  675. return gagaAgGrid.toDateTimeFormat(params.value);
  676. }
  677. },
  678. {
  679. headerName: "쿠폰발행 사유", field: "pubReason", width: 200, cellClass: 'text-center',
  680. valueFormatter: function (params) {
  681. return gagaAgGrid.lookupValue(pubReasonList, params.value);
  682. }
  683. },
  684. {headerName: "쿠폰발행 상세사유", field: "pubReasonDtl", width: 300, cellClass: 'text-center'},
  685. {headerName: "만료알림발송여부", field: "endAlimSendYn", width: 150, cellClass: 'text-center'},
  686. {headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
  687. {
  688. headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
  689. cellRenderer: function (params) {
  690. return gagaAgGrid.toDateTimeFormat(params.value);
  691. }
  692. }
  693. ];
  694. //포인트내역 그리드
  695. const columnPointDefs = [
  696. {
  697. headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
  698. cellRenderer: function (params) {
  699. return gagaAgGrid.toDateTimeFormat(params.value);
  700. }
  701. },
  702. {
  703. headerName: "반영일시", field: "pntUploadDt", width: 150, cellClass: 'text-center',
  704. cellRenderer: function (params) {
  705. return gagaAgGrid.toDateTimeFormat(params.value);
  706. }
  707. },
  708. {headerName: "주문번호", field: "ordNo", width: 100, cellClass: 'text-center'},
  709. {
  710. headerName: "반영상태", field: "pntUploadStat", width: 100, cellClass: 'text-center',
  711. valueFormatter: function (params) { return gagaAgGrid.lookupValue(pntUploadStatList, params.value); }
  712. },
  713. {
  714. headerName: "포인트", field: "pntAmt", width: 100, cellClass: 'text-center',
  715. cellRenderer: function (params) {
  716. return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
  717. }
  718. },
  719. {
  720. headerName: "포인트사유", field: "occurGb", width: 150, cellClass: 'text-center',
  721. valueFormatter: function (params) {
  722. return gagaAgGrid.lookupValue(pntOccurGbList, params.value);
  723. }
  724. },
  725. {headerName: "포인트상세사유", field: "occurDtlDesc", width: 300, cellClass: 'text-center'},
  726. {
  727. headerName: "만료예정일시", field: "expBeDt", width: 150, cellClass: 'text-center',
  728. cellRenderer: function (params) {
  729. return params.data.pntAmt > 0 ? gagaAgGrid.toDateTimeFormat(params.value) : gagaAgGrid.toDateTimeFormat(params.data.pntUploadDt);
  730. }
  731. },
  732. {
  733. headerName: "만료완료일시", field: "expCmpDt", width: 150, cellClass: 'text-center',
  734. cellRenderer: function (params) {
  735. return gagaAgGrid.toDateTimeFormat(params.value);
  736. }
  737. },
  738. {headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'}
  739. ];
  740. //상품권내역 그리드
  741. const columnGiftCardDefs = [
  742. {
  743. headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
  744. cellRenderer: function (params) {
  745. return gagaAgGrid.toDateTimeFormat(params.value);
  746. }
  747. },
  748. {headerName: "주문번호", field: "ordNo", width: 100, cellClass: 'text-center'},
  749. {
  750. headerName: "금액", field: "gfcdAmt", width: 100, cellClass: 'text-center',
  751. cellRenderer: function (params) {
  752. return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
  753. }
  754. },
  755. {
  756. headerName: "발생구분", field: "occurGb", width: 150, cellClass: 'text-center',
  757. valueFormatter: function (params) { return gagaAgGrid.lookupValue(giftCardOccurGbList, params.value); }
  758. },
  759. {
  760. headerName: "발생상세설명", field: "occurDtlDesc", width: 300, cellClass: 'text-center',
  761. valueFormatter: function (params) {
  762. return gagaAgGrid.lookupValue(pntOccurGbList, params.value);
  763. }
  764. },
  765. {headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'}
  766. ];
  767. //상품평 그리드
  768. const columnReviewDefs = [
  769. {headerName: "상품코드", field: "goodsCd", width: 100, cellClass: 'text-center'},
  770. {
  771. headerName: "내용", field: "reviewContent", width: 300, cellClass: 'text-center',
  772. cellRenderer: function (params) {
  773. return !gagajf.isNull(params.value) ? '<a href="javascript:void(0);">' + params.value + '</a>' : '';
  774. }
  775. },
  776. {headerName: "만족도", field: "score", width: 100, cellClass: 'text-center'},
  777. {
  778. headerName: "작성일시", field: "regDt", width: 150, cellClass: 'text-center',
  779. cellRenderer: function (params) {
  780. return gagaAgGrid.toDateTimeFormat(params.value);
  781. }
  782. },
  783. {
  784. headerName: "지급일시", field: "confirmDt", width: 150, cellClass: 'text-center',
  785. cellRenderer: function (params) {
  786. return gagaAgGrid.toDateTimeFormat(params.value);
  787. }
  788. },
  789. {headerName: "지급자", field: "confirmUnm", width: 130, cellClass: 'text-center'},
  790. {headerName: "게시여부", field: "dispYn", width: 100, cellClass: 'text-center'},
  791. {
  792. headerName: "지급예정포인트", field: "giveDuePnt", width: 120, cellClass: 'text-center',
  793. cellRenderer: function (params) {
  794. return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
  795. }
  796. },
  797. {
  798. headerName: "포인트지급상태", field: "pntGiveStat", width: 120, cellClass: 'text-center',
  799. valueFormatter: function (params) {
  800. return gagaAgGrid.lookupValue(reviewPntStatList, params.value);
  801. }
  802. }
  803. ];
  804. //등급변경 그리드
  805. const columnGradeDefs = [
  806. {headerName: "적용연월일", field: "applyYmd", width: 150, cellClass: 'text-center'},
  807. {headerName: "고객ID", field: "custId", width: 100, cellClass: 'text-center'},
  808. {
  809. headerName: "이전회원등급", field: "gradeBcd", width: 100, cellClass: 'text-center',
  810. valueFormatter: function (params) {
  811. return gagaAgGrid.lookupValue(custGradeList, params.value);
  812. }
  813. },
  814. {
  815. headerName: "변경회원등급", field: "gradeAcd", width: 100, cellClass: 'text-center',
  816. valueFormatter: function (params) {
  817. return gagaAgGrid.lookupValue(custGradeList, params.value);
  818. }
  819. },
  820. {
  821. headerName: "3개월간 총 주문건수", field: "ordCnt", width: 150, cellClass: 'text-center',
  822. cellRenderer: function (params) {
  823. return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
  824. }
  825. },
  826. {
  827. headerName: "3개월간 총 결제금액", field: "realOrdAmt", width: 150, cellClass: 'text-center',
  828. cellRenderer: function (params) {
  829. return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
  830. }
  831. }
  832. ];
  833. //주소정보 그리드
  834. const columnAddrDefs = [
  835. {
  836. headerName: "배송지명", field: "delvAddrNm", width: 100, cellClass: 'text-center',
  837. cellRenderer: function (params) {
  838. return '<a href="javascript:void(0);">' + params.value + '</a>';
  839. }
  840. },
  841. {headerName: "수령자", field: "recipNm", width: 100, cellClass: 'text-center'},
  842. {headerName: "전화번호", field: "recipTelno", width: 130, cellClass: 'text-center'},
  843. {headerName: "휴대전화번호", field: "recipPhnno", width: 130, cellClass: 'text-center'},
  844. {headerName: "우편번호", field: "recipZipcode", width: 100, cellClass: 'text-center'},
  845. {headerName: "기본주소", field: "recipBaseAddr", width: 300, cellClass: 'text-left'},
  846. {headerName: "상세주소", field: "recipDtlAddr", width: 150, cellClass: 'text-left'},
  847. {headerName: "총알배송", field: "shotDelvUseYn", width: 90, cellClass: 'text-center'},
  848. {
  849. headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
  850. cellRenderer: function (params) {
  851. return gagaAgGrid.toDateTimeFormat(params.value);
  852. }
  853. },
  854. {headerName: "수정자", field: "regNm", width: 100, cellClass: 'text-center'},
  855. {
  856. headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center',
  857. cellRenderer: function (params) {
  858. return gagaAgGrid.toDateTimeFormat(params.value);
  859. }
  860. },
  861. {headerName: "기본배송지", field: "defaultYn", width: 90, cellClass: 'text-center'}
  862. ];
  863. //회원접촉이력 그리드
  864. const columnContactDefs = [
  865. {
  866. headerName: "접촉유형", field: "contactType", width: 180, cellClass: 'text-center',
  867. valueFormatter: function (params) {
  868. return gagaAgGrid.lookupValue(contactTypeList, params.value);
  869. }
  870. },
  871. {
  872. headerName: "접촉방법", field: "contactMethod", width: 120, cellClass: 'text-center',
  873. valueFormatter: function (params) {
  874. return gagaAgGrid.lookupValue(contactMethodList, params.value);
  875. }
  876. },
  877. {headerName: "내용", field: "contactContents", width: 1000, cellClass: 'text-center'},
  878. {headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
  879. {
  880. headerName: "등록일", field: "regDt", width: 150, cellClass: 'text-center',
  881. cellRenderer: function (params) {
  882. return gagaAgGrid.toDateTimeFormat(params.value);
  883. }
  884. }
  885. ];
  886. let gridOrderOptions = gagaAgGrid.getGridOptions(columnOrderDefs); //구매내역 그리드
  887. let gridCounselOptions = gagaAgGrid.getGridOptions(columnCounselDefs); //1:1문의내역 그리드
  888. let gridGoodsQnaOptions = gagaAgGrid.getGridOptions(columnGoodsQnaDefs);//상품문의내역 그리드
  889. let gridCouponOptions = gagaAgGrid.getGridOptions(columnCouponDefs); //쿠폰내역 그리드
  890. let gridPointOptions = gagaAgGrid.getGridOptions(columnPointDefs); //포인트내역 그리드
  891. let gridGiftCardOptions = gagaAgGrid.getGridOptions(columnGiftCardDefs);//상품권내역 그리드
  892. let gridReviewOptions = gagaAgGrid.getGridOptions(columnReviewDefs); //상품평 그리드
  893. let gridGradeOptions = gagaAgGrid.getGridOptions(columnGradeDefs); //등급변경 그리드
  894. let gridAddrOptions = gagaAgGrid.getGridOptions(columnAddrDefs); //주소정보 그리드
  895. let gridContactOptions = gagaAgGrid.getGridOptions(columnContactDefs); //회원접촉이력 그리드
  896. gridOrderOptions.suppressRowClickSelection = true;
  897. gridCounselOptions.suppressRowClickSelection = true;
  898. gridGoodsQnaOptions.suppressRowClickSelection = true;
  899. gridCouponOptions.suppressRowClickSelection = true;
  900. gridPointOptions.suppressRowClickSelection = true;
  901. gridGiftCardOptions.suppressRowClickSelection = true;
  902. gridReviewOptions.suppressRowClickSelection = true;
  903. gridGradeOptions.suppressRowClickSelection = true;
  904. gridAddrOptions.suppressRowClickSelection = true;
  905. gridContactOptions.suppressRowClickSelection = true;
  906. // 기본정보 - 비밀번호 초기화 버튼
  907. $('#btnResetPassword').on('click', function () {
  908. mcxDialog.confirm("초기화 하시겠습니까?", {
  909. cancelBtnText: "취소",
  910. sureBtnText: "확인",
  911. sureBtnClick: function () {
  912. let orgEamil = $('#custInfoForm input[name=orgEmail]').val();
  913. $('#custInfoForm input[name=email]').val(orgEamil);
  914. let jsonData = JSON.stringify($('#custInfoForm').serializeObject());
  915. gagajf.ajaxJsonSubmit('/customer/password/reset', jsonData, fnSearchCustInfo);
  916. }
  917. });
  918. });
  919. // 기본정보 - LMS발송 버튼
  920. $('#btnCustSendLms').on('click', function () {
  921. if (!fnCheckValidationPhnno('#custInfoForm')) {
  922. return false;
  923. }
  924. let param = {};
  925. param.elementCellPhnno = '#custInfoForm input[name=cellPhnno]';
  926. param.elementCustNo = '#custInfoForm input[name=custNo]';
  927. param.elementMaskingCellPhnno = '#custInfoForm input[name=maskingCellPhnno]';
  928. cfnOpenLmsPopup(param);
  929. });
  930. // 기본정보 - 번호변경
  931. $('#btnCustCrtfd').on('click', function () {
  932. if (!fnCheckValidationPhnno('#custInfoForm')) {
  933. return false;
  934. }
  935. let elementCellPhnno = '#custInfoForm input[name=cellPhnno]';
  936. let elementCustNo = '#custInfoForm input[name=custNo]';
  937. const actionUrl = '/customer/cellphone/change/popup/form?elementCellPhnno=' + encodeURIComponent(elementCellPhnno)
  938. + '&elementCustNo=' + encodeURIComponent(elementCustNo);
  939. cfnOpenModalPopup(actionUrl, 'popupCellphoneForm');
  940. });
  941. // 기본정보 - 이메일발송 버튼
  942. $('#btnCustSendEmail').on('click', function () {
  943. let param = {};
  944. param.elementEmail = '#custInfoForm input[name=orgEmail]';
  945. param.elementCustNo ='#custInfoForm input[name=custNo]';
  946. param.elementMaskingEmail = '#custInfoForm input[name=maskingEmail]';
  947. cfnOpenEmailPopup(param);
  948. });
  949. // 기본정보 - 이메일 도메인 선택 이벤트
  950. $('#emailDomainList').on('change', function () {
  951. let domain = $(this).val();
  952. let $emailDomain = $('#emailDomain');
  953. if (domain === '99') { //기타(직접입력)
  954. $emailDomain.val('');
  955. } else if (domain !== '99' && !gagajf.isNull(domain)) {
  956. $emailDomain.val(domain);
  957. }
  958. });
  959. // 기본정보 - 탈퇴버튼
  960. $('#btnCustSecede').on('click', function () {
  961. let custNo = $('#custInfoForm input[name=custNo]').val();
  962. if (gagajf.isNull(custNo)) {
  963. mcxDialog.alert("탈퇴시킬 회원번호가 없습니다.");
  964. return;
  965. }
  966. let elementCustNo ='#custInfoForm input[name=custNo]';
  967. const actionUrl = '/customer/secede/popup/form?elementCustNo='+ encodeURIComponent(elementCustNo)
  968. cfnOpenModalPopup(actionUrl, 'popupCustSecedeForm');
  969. });
  970. // 기본정보 - 저장버튼
  971. $('#btnCustInfoSave').on('click', function () {
  972. //휴대폰번호
  973. if (!fnCheckValidationPhnno('#custInfoForm'))
  974. return false;
  975. //이메일
  976. if (!fnCheckValidationEmail('#custInfoForm'))
  977. return false;
  978. let customer = $('#custInfoForm').serializeObject();
  979. if (!gagajf.isNull(customer.managedRsn) && gagajf.isNull(customer.managedDtlRsn)) {
  980. mcxDialog.alert("관리대상 지정 사유를 입력해주세요");
  981. return;
  982. }
  983. // 마케팅 수신여부가 기존하고 바꼈는지 확인
  984. // 데이터 변경 없으면 공배처리
  985. if (customer.emailAgreeYn === orgData.emailAgreeYn) {
  986. delete customer.emailAgreeYn;
  987. }
  988. // 데이터 변경 없으면 공배처리
  989. if (customer.smsAgreeYn === orgData.smsAgreeYn) {
  990. delete customer.smsAgreeYn;
  991. }
  992. customer.birthYmd = customer.birthYmd.replaceAll('-', '');
  993. let jsonData = JSON.stringify(customer);
  994. //console.log(jsonData);
  995. mcxDialog.confirm("기본정보를 수정 하시겠습니까?", {
  996. cancelBtnText: "취소",
  997. sureBtnText: "확인",
  998. sureBtnClick: function () {
  999. gagajf.ajaxJsonSubmit('/customer/info/save', jsonData , function () {
  1000. uifnPopupClose('customerDetailForm');
  1001. $('#btnSearch').trigger('click');
  1002. });
  1003. }
  1004. });
  1005. });
  1006. // 배송지정보 - 신규버튼
  1007. $('#btnCustAddrNew').on('click', function () {
  1008. $('#custAddrForm')[0].reset();
  1009. $('#custAddrForm input[name=custDelvAddrSq]').val('');
  1010. $('#custAddrForm input[name=recipPhnno]').val('');
  1011. $('#custAddrForm input[name=recipTelno]').val('');
  1012. fnDisplayDeliveryCheckBox('N', 'N');
  1013. });
  1014. // 배송지정보 - 저장버튼
  1015. $('#btnCustAddrSave').on('click', function () {
  1016. if (!gagajf.validation('#custAddrForm'))
  1017. return false;
  1018. // 전화번호
  1019. let telFirstNo = $('#custAddrForm select[name=telFirstNo]').val();
  1020. let telMiddleNo = $('#custAddrForm input[name=telMiddleNo]').val();
  1021. let telLastNo = $('#custAddrForm input[name=telLastNo]').val();
  1022. if (!gagajf.isNull(telFirstNo) && !gagajf.isNull(telMiddleNo) && !gagajf.isNull(telLastNo)) {
  1023. $('#custAddrForm input[name=recipTelno]').val(telFirstNo + '-' + telMiddleNo + '-' + telLastNo);
  1024. }
  1025. // 핸드폰번호 필수값 validation 함수에서 null 체크
  1026. let recipFirstNo = $('#custAddrForm select[name=recipFirstNo]').val();
  1027. let recipMiddleNo = $('#custAddrForm input[name=recipMiddleNo]').val();
  1028. let recipLastNo = $('#custAddrForm input[name=recipLastNo]').val();
  1029. $('#custAddrForm input[name=recipPhnno]').val(recipFirstNo + '-' + recipMiddleNo + '-' + recipLastNo);
  1030. mcxDialog.confirm("저장하시겠습니까?", {
  1031. cancelBtnText: "취소",
  1032. sureBtnText: "확인",
  1033. sureBtnClick: function () {
  1034. gagajf.removeCommaAtNumberFormattedInput('#custAddrForm');
  1035. let jsonData = JSON.stringify($('#custAddrForm').serializeObject());
  1036. gagajf.ajaxJsonSubmit('/customer/delivery/addr/save', jsonData, fnCustSearchDelivery);
  1037. }
  1038. });
  1039. });
  1040. // 쿠폰삭제 버튼
  1041. $('#btnCustCouponDelete').on('click', function () {
  1042. let removedData = gagaAgGrid.removeRowData(gridCouponOptions);
  1043. if (removedData.length < 1) {
  1044. mcxDialog.alert("선택된 데이터가 없습니다.");
  1045. return;
  1046. }
  1047. mcxDialog.confirm("삭제 하시겠습니까?", {
  1048. cancelBtnText: "취소",
  1049. sureBtnText: "확인",
  1050. sureBtnClick: function () {
  1051. let updatedData = [];
  1052. $.each(removedData, function (idx, item) {
  1053. let param = {};
  1054. param.custCpnSq = item.custCpnSq;
  1055. param.custNo = item.custNo;
  1056. updatedData.push(param);
  1057. });
  1058. let jsonData = JSON.stringify(updatedData);
  1059. gagajf.ajaxJsonSubmit('/marketing/coupon/cust/delete', jsonData, fnSearchCoupon);
  1060. }
  1061. });
  1062. });
  1063. // 포인트부여 버튼
  1064. $('#btnCustPointCreate').on('click', function () {
  1065. let elementCustNo ='#custInfoForm input[name=custNo]';
  1066. const actionUrl = '/marketing/point/grant/popup/form?elementCustNo=' + encodeURIComponent(elementCustNo);
  1067. cfnOpenModalPopup(actionUrl, 'popupPointGrantForm');
  1068. });
  1069. // 쿠폰발급 버튼
  1070. $('#btnCustCouponCreate').on('click', function () {
  1071. let elementCustNo ='#custInfoForm input[name=custNo]';
  1072. const actionUrl = '/marketing/coupon/issue/popup/form?elementCustNo=' + encodeURIComponent(elementCustNo);
  1073. cfnOpenModalPopup(actionUrl, 'popupCouponIssue');
  1074. });
  1075. // 회원접촉이력 저장
  1076. $('#btnSaveContact').on('click', function () {
  1077. if (!gagajf.validation('#custContactHstForm')) {
  1078. return;
  1079. }
  1080. mcxDialog.confirm("저장하시겠습니까?", {
  1081. cancelBtnText: "취소",
  1082. sureBtnText: "확인",
  1083. sureBtnClick: function () {
  1084. var jsonData = JSON.stringify($('#custContactHstForm').serializeObject());
  1085. gagajf.ajaxJsonSubmit('/customer/contact/create', jsonData, fnSearchContact);
  1086. }
  1087. });
  1088. });
  1089. // 주문내역 셀 클릭 이벤트
  1090. gridOrderOptions.onCellClicked = function (event) {
  1091. if (event.colDef.field === 'goodsCd') {
  1092. let goodsCd = event.data.goodsCd;
  1093. cfnOpenGoodsDetailPopup('U', goodsCd);
  1094. }
  1095. if (event.colDef.field === 'ordNo') {
  1096. let ordNo = event.data.ordNo;
  1097. cfnOpenOrderDetailPopup(ordNo);
  1098. }
  1099. };
  1100. // 상품평내역 셀 클릭 이벤트
  1101. gridReviewOptions.onCellClicked = function (event) {
  1102. if (event.colDef.field === 'reviewContent') {
  1103. let reviewSq = event.data.reviewSq;
  1104. cfnOpenReviewDetailPopup(reviewSq);
  1105. }
  1106. };
  1107. // 1:1문의 내역 셀 클릭 이벤트
  1108. gridCounselOptions.onCellClicked = function (event) {
  1109. if (event.colDef.field === 'questTitle') {
  1110. let counselSq = event.data.counselSq;
  1111. cfnOpenOneToOneQnaDetailPopup(counselSq);
  1112. }
  1113. };
  1114. // 상품문의 내역 셀 클릭 이벤트
  1115. gridGoodsQnaOptions.onCellClicked = function (event) {
  1116. if (event.colDef.field === 'questTitle') {
  1117. let counselSq = event.data.counselSq;
  1118. cfnOpenGoodsQnaDetailPopup(counselSq);
  1119. }
  1120. };
  1121. // 주소지 셀 클릭 이벤트
  1122. gridAddrOptions.onCellClicked = function (event) {
  1123. if (event.colDef.field !== 'delvAddrNm')
  1124. return;
  1125. if (!gagajf.isNull(event.data)) {
  1126. $('#custAddrForm input[name=custDelvAddrSq]').val(event.data.custDelvAddrSq);
  1127. $('#custAddrForm input[name=delvAddrNm]').val(event.data.delvAddrNm);
  1128. $('#custAddrForm input[name=recipNm]').val(event.data.recipNm);
  1129. if (!gagajf.isNull(event.data.recipPhnno)) {
  1130. let phnNoSplit = event.data.recipPhnno.split("-");
  1131. $('#custAddrForm select[name=recipFirstNo]').val(phnNoSplit[0]);
  1132. $('#custAddrForm input[name=recipMiddleNo]').val(phnNoSplit[1]);
  1133. $('#custAddrForm input[name=recipLastNo]').val(phnNoSplit[2]);
  1134. }
  1135. if (!gagajf.isNull(event.data.recipTelno)) {
  1136. let telNoSplit = event.data.recipTelno.split("-");
  1137. $('#custAddrForm select[name=telFirstNo]').val(telNoSplit[0]);
  1138. $('#custAddrForm input[name=telMiddleNo]').val(telNoSplit[1]);
  1139. $('#custAddrForm input[name=telLastNo]').val(telNoSplit[2]);
  1140. }
  1141. $('#custAddrForm input[name=recipZipcode]').val(event.data.recipZipcode);
  1142. $('#custAddrForm input[name=recipBaseAddr]').val(event.data.recipBaseAddr);
  1143. $('#custAddrForm input[name=recipDtlAddr]').val(event.data.recipDtlAddr);
  1144. fnDisplayDeliveryCheckBox(event.data.defaultYn, event.data.delYn);
  1145. }
  1146. };
  1147. // 회원정보 조회
  1148. var fnSearchCustInfo = function () {
  1149. $.get('/customer/info/' + custNo
  1150. , function (data) {
  1151. if (!gagajf.isNull(data)) {
  1152. $('#spanCustNm').text(data.maskingCustNm);
  1153. $('#spanCustId').text(data.maskingCustId);
  1154. $('#siteNm').text(gagaAgGrid.lookupValue(siteList, data.siteCd));
  1155. $('#custGrade').val(data.custGrade);
  1156. $('#custGb').val(data.custGb);
  1157. $('#managedRsn').val(data.managedRsn);
  1158. $('#managedDtlRsn').val(data.managedDtlRsn);
  1159. $('#managedDt').text(gagaAgGrid.toDateTimeFormat(data.managedDt));
  1160. $('#joinDt').text(gagaAgGrid.toDateTimeFormat(data.joinDt));
  1161. let loginLdt = fnGetloginLdt(data.loginLdt);
  1162. $('#loginLdt').text(loginLdt);
  1163. let foreignerYn = data.foreignerYn === 'Y' ? '외국인' : '내국인';
  1164. $('#foreignerYn').text(foreignerYn);
  1165. fnGetSecedeRsnYn(data.custStat, data.secedeRsn); // 탈퇴여부
  1166. let snsType = fnGetSnsType(data.snsType);
  1167. $('#snsType').text(snsType);
  1168. $('#homeZipcode').val(data.homeZipcode);
  1169. $('#homeBaseAddr').val(data.homeBaseAddr);
  1170. $('#homeDtlAddr').val(data.homeDtlAddr);
  1171. $('#sexGb').text(gagaAgGrid.lookupValue(genderGbList, data.sexGb));
  1172. $('#birthYmd').val(gagaAgGrid.toDateFormat(data.birthYmd));
  1173. fnDisplayEmailAgree(data.emailAgreeYn);
  1174. fnDisplaySmsAgree(data.smsAgreeYn);
  1175. fnDisplayAppAgree(data.appAgreeYn);
  1176. fnDisplayMarketingAgree(data.mkAgreeYn);
  1177. fnDisplayEmail(data.email, data.maskingEmail);
  1178. fnDisplayCellPhnno(data.cellPhnno, data.maskingCellPhnno);
  1179. fnDisplayManaged(data.managedRsn);
  1180. orgData = data; // 기존 데이터
  1181. }
  1182. });
  1183. };
  1184. $('#custOrderListFrom select[name=pageSize]').on('click', function () {
  1185. fnSearchOrder();
  1186. });
  1187. // 구매내역 조회
  1188. var fnSearchOrder = function () {
  1189. gagaPaging.init('custOrderListFrom', fnCustOrderListCallBack, 'custOrderListPagination', $('#custOrderListFrom select[name=pageSize]').val());
  1190. gagaPaging.load($('#custOrderListFrom input[name=pageNo]').val());
  1191. };
  1192. var fnCustOrderListCallBack = function (result) {
  1193. $('#gridOrderRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
  1194. $('#custOrderListFrom input[name=pageNo]').val(result.pageing.pageable.pageNo.addComma());
  1195. $('#ordPgNo').html(result.pageing.pageable.pageNo.addComma());
  1196. $('#ordEndPgNo').html(result.pageing.pageable.totalPage.addComma());
  1197. gridOrderOptions.api.setRowData(result.custOrderList);
  1198. gagaPaging.createPagination(result.pageing.pageable);
  1199. }
  1200. // 배송지 조회
  1201. var fnCustSearchDelivery = function () {
  1202. const actionUrl = "/customer/delivery/list/" + custNo;
  1203. gagaAgGrid.fetch(actionUrl, gridAddrOptions);
  1204. $('#btnCustAddrNew').trigger('click');
  1205. };
  1206. // 쿠폰내역 조회
  1207. var fnSearchCoupon = function () {
  1208. const actionUrl = "/customer/coupon/list/" + custNo;
  1209. gagaAgGrid.fetch(actionUrl, gridCouponOptions);
  1210. };
  1211. // 포인트내역 조회
  1212. var fnSearchPoint = function () {
  1213. $.get('/customer/point/' + custNo
  1214. , function (data) {
  1215. if (!gagajf.isNull(data)) {
  1216. $('#custPointForm td[name=availPntAmt]').text(data.rmPntAmt.addComma() + ' P');
  1217. $('#custPointForm td[name=accumPntAmt]').text(data.gvPntAmt.addComma() + ' P');
  1218. $('#custPointForm td[name=usePntAmt]').text(data.usPntAmt.addComma() + ' P');
  1219. $('#custPointForm td[name=expirePntAmt]').text(data.expirePntAmt.addComma() + ' P');
  1220. $('#custPointForm td[name=expectedPntAmt]').text(data.expectedPntAmt.addComma() + ' P');
  1221. $('#custPointForm td[name=expectedExpirePntAmt]').text(data.expectedExpirePntAmt.addComma() + ' P');
  1222. }
  1223. });
  1224. const actionUrl = "/customer/point/list/" + custNo;
  1225. gagaAgGrid.fetch(actionUrl, gridPointOptions);
  1226. };
  1227. // 상품권 조회
  1228. var fnSearchGiftCard = function () {
  1229. const actionUrl = "/customer/giftcard/list/" + custNo;
  1230. gagaAgGrid.fetch(actionUrl, gridGiftCardOptions);
  1231. };
  1232. // 상품평내역 조회
  1233. var fnSearchReview = function () {
  1234. const actionUrl = "/customer/review/list/" + custNo;
  1235. gagaAgGrid.fetch(actionUrl, gridReviewOptions);
  1236. };
  1237. // 1:1문의 내역 조회
  1238. var fnSearchCounsel = function () {
  1239. const actionUrl = "/customer/counsel/list/" + custNo;
  1240. gagaAgGrid.fetch(actionUrl, gridCounselOptions);
  1241. };
  1242. // 상품문의 내역 조회
  1243. var fnSearchGoodsQna = function () {
  1244. const actionUrl = "/customer/goodsQna/list/" + custNo;
  1245. gagaAgGrid.fetch(actionUrl, gridGoodsQnaOptions);
  1246. };
  1247. // 회원접촉이력 조회
  1248. var fnSearchContact = function () {
  1249. $('#custContactHstForm')[0].reset();
  1250. const actionUrl = "/customer/contact/list/" + custNo;
  1251. gagaAgGrid.fetch(actionUrl, gridContactOptions);
  1252. };
  1253. // 회원등급변경이력 조회
  1254. var fnSearchChangeGrade = function () {
  1255. const actionUrl = "/customer/change/grade/list/" + custNo;
  1256. gagaAgGrid.fetch(actionUrl, gridGradeOptions);
  1257. };
  1258. /**
  1259. * DAUM을 이용한 우편번호 팝업 레이어
  1260. */
  1261. var fnOpenDaumAddr = function(id) {
  1262. let daumZip = new daum.Postcode({
  1263. oncomplete: function(data) {
  1264. // 우편번호와 주소 정보를 해당 필드에 넣는다.
  1265. if (id === 'custInfoForm') {
  1266. $('#homeZipcode').val(data.zonecode);
  1267. $('#homeBaseAddr').val(cfnGetDaumRoadAddr(data));
  1268. $('#homeDtlAddr').focus();
  1269. }
  1270. if (id === 'custAddrForm') {
  1271. $('#recipZipcode').val(data.zonecode);
  1272. $('#recipBaseAddr').val(cfnGetDaumRoadAddr(data));
  1273. $('#recipDtlAddr').focus();
  1274. }
  1275. cfnCloseDaumAddr();
  1276. },
  1277. width: '100%'
  1278. });
  1279. cfnOpenDaumAddr(daumZip);
  1280. }
  1281. // 휴대전화 유효성 체크 및 데이터 셋팅
  1282. var fnCheckValidationPhnno = function (formId) {
  1283. let result = true;
  1284. if (!gagajf.testRegexp($(formId + ' input[name=cellPhnno]'), /^(01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4})$/)) {
  1285. result = false;
  1286. }
  1287. return result;
  1288. };
  1289. // 이메일 체크 및 데이터 셋팅
  1290. var fnCheckValidationEmail = function (formId) {
  1291. let result = true;
  1292. let emailId = $(formId + ' input[name=emailId]').val();
  1293. let emailDomain = $(formId + ' input[name=emailDomain]').val();
  1294. $(formId + ' input[name=email]').val(emailId + '@' + emailDomain);
  1295. if (orgData.maskingEmail === $(formId + ' input[name=email]').val()) {
  1296. $(formId + ' input[name=emailModifyYn]').val('N');
  1297. return true;
  1298. } else {
  1299. if (!gagajf.testRegexp($(formId + ' input[name=email]'), /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/)) {
  1300. result = false;
  1301. }
  1302. // 수정되었으면 Y로 변경
  1303. if (result) {
  1304. $(formId + ' input[name=emailModifyYn]').val('Y');
  1305. }
  1306. }
  1307. return result;
  1308. };
  1309. // 관리대상
  1310. var fnDisplayManaged = function (managedRsn) {
  1311. const $managedRsnNm = $('#managedRsnNm');
  1312. const $managedRsnDp = $('#managedRsnDp');
  1313. $managedRsnNm.text('');
  1314. $managedRsnNm.hide();
  1315. $managedRsnDp.text('');
  1316. $managedRsnDp.hide();
  1317. if (!gagajf.isNull(managedRsn)) {
  1318. let html = '<i class="fa fa-info-circle"></i>';
  1319. $managedRsnNm.html(html);
  1320. $managedRsnNm.show();
  1321. $managedRsnDp.html(html);
  1322. $managedRsnDp.show();
  1323. }
  1324. };
  1325. // 탈퇴여부
  1326. var fnGetSecedeRsnYn = function (custStat, secedeRsn) {
  1327. const activeCustomer = 'G104_10';
  1328. let secedeRsnYn = gagajf.isNull(secedeRsn) ? '아니요' : '예';
  1329. $('#secedeRsnYn').text(secedeRsnYn);
  1330. if (custStat === activeCustomer) {
  1331. $('#btnCustSecede').show();
  1332. }
  1333. }
  1334. // 휴대전화번호
  1335. var fnDisplayCellPhnno = function (cellPhnno, maskingCellPhnno) {
  1336. $('#custInfoForm input[name=cellPhnno]').val(cellPhnno);
  1337. $('#custInfoForm input[name=maskingCellPhnno]').val(maskingCellPhnno);
  1338. };
  1339. // 이메일
  1340. var fnDisplayEmail = function (email, maskingEmail) {
  1341. if (!gagajf.isNull(maskingEmail)) {
  1342. let emailSplit = maskingEmail.split("@");
  1343. $('#emailId').val(emailSplit[0]);
  1344. $('#emailDomain').val(emailSplit[1]);
  1345. $('#custInfoForm input[name=maskingEmail]').val(maskingEmail);
  1346. }
  1347. $('#custInfoForm input[name=orgEmail]').val(email);
  1348. };
  1349. // 이메일 수신동의
  1350. var fnDisplayEmailAgree = function (emailAgreeYn) {
  1351. let emailEq = emailAgreeYn === 'Y' ? 0 : 1;
  1352. const $emailAgreeYn = $('#custInfoForm input:radio[name=emailAgreeYn]');
  1353. $emailAgreeYn.eq(emailEq).prop('checked', true);
  1354. $emailAgreeYn.eq(emailEq).parent().addClass('checked');
  1355. };
  1356. // SMS 수신동의
  1357. var fnDisplaySmsAgree = function (smsAgreeYn) {
  1358. let smsEq = smsAgreeYn === 'Y' ? 0 : 1;
  1359. const $smsAgreeYn = $('#custInfoForm input:radio[name=smsAgreeYn]');
  1360. $smsAgreeYn.eq(smsEq).prop('checked', true);
  1361. $smsAgreeYn.eq(smsEq).parent().addClass('checked');
  1362. };
  1363. // APP 수신동의
  1364. var fnDisplayAppAgree = function (appAgreeYn) {
  1365. let appEq = appAgreeYn === 'Y' ? 0 :1 ;
  1366. const $appAgreeYn = $('#custInfoForm input:radio[name=appAgreeYn]');
  1367. $appAgreeYn.eq(appEq).prop('checked', true);
  1368. $appAgreeYn.eq(appEq).parent().addClass('checked');
  1369. $appAgreeYn.attr('disabled', true);
  1370. };
  1371. // 마케팅 수신동의
  1372. var fnDisplayMarketingAgree = function (mkAgreeYn) {
  1373. let mkEq = mkAgreeYn === 'Y' ? 0 :1 ;
  1374. const $mkAgreeYn = $('#custInfoForm input:radio[name=mkAgreeYn]');
  1375. $mkAgreeYn.eq(mkEq).prop('checked', true);
  1376. $mkAgreeYn.eq(mkEq).parent().addClass('checked');
  1377. $mkAgreeYn.attr('disabled', true);
  1378. };
  1379. // 최종로그인 일시
  1380. var fnGetloginLdt = function (loginLdt) {
  1381. let result = '로그인 이력이 없습니다.';
  1382. if (!gagajf.isNull(loginLdt)) {
  1383. result = gagaAgGrid.toDateTimeFormat(loginLdt);
  1384. }
  1385. return result;
  1386. };
  1387. // SNS가입유형
  1388. var fnGetSnsType = function (snsType) {
  1389. let snsText = '';
  1390. if (snsType === 'NV') {
  1391. snsText = '네이버'
  1392. }
  1393. if (snsType === 'KK') {
  1394. snsType = '카카오';
  1395. }
  1396. if (snsType === 'YS') {
  1397. snsText = 'YES24';
  1398. }
  1399. return snsText;
  1400. };
  1401. // 생년월일 달력 설정
  1402. var fnDisplayBirthYmd = function () {
  1403. const $birthYmd = $('#birthYmd');
  1404. let currentYear = new Date().format('YYYY');
  1405. $birthYmd.datepicker("destroy");
  1406. $birthYmd.datepicker({
  1407. changeMonth: true,
  1408. changeYear: true,
  1409. yearRange: (currentYear - 100) + ' : ' + (currentYear - 14),
  1410. defaultDate: $birthYmd.val()
  1411. });
  1412. };
  1413. // 배송지 기본,삭제 체크박스 설정
  1414. var fnDisplayDeliveryCheckBox = function (defaultYn, delYn) {
  1415. let $defaultYn = $('#custAddrForm input:checkbox[name=defaultYn]');
  1416. let $delYn = $('#custAddrForm input:checkbox[name=delYn]');
  1417. let defaultBoolean;
  1418. let delBoolean;
  1419. if (defaultYn === 'Y') {
  1420. defaultBoolean = true;
  1421. $defaultYn.parent().addClass('checked');
  1422. } else {
  1423. defaultBoolean = false;
  1424. $defaultYn.parent().removeClass('checked');
  1425. }
  1426. if (delYn === 'Y') {
  1427. delBoolean = true;
  1428. $delYn.parent().addClass('checked');
  1429. } else {
  1430. delBoolean = false;
  1431. $delYn.parent().removeClass('checked');
  1432. }
  1433. $defaultYn.prop('checked', defaultBoolean);
  1434. $delYn.prop('checked', delBoolean);
  1435. }
  1436. $('#btnLogin').on('click', function () {
  1437. let custId = $('#spanCustId').text();
  1438. const actionUrl = _frontUrl + '/customer/front/login?custId=' + custId;
  1439. let popupWidth = window.screen.width;
  1440. let popupHeight = window.screen.height;
  1441. window.open(actionUrl);
  1442. })
  1443. $(document).ready(function () {
  1444. fnDisplayBirthYmd(); //생년월일 달력 설정
  1445. fnSearchCustInfo(); //회원정보 조회
  1446. gagaAgGrid.createGrid('custOrderList', gridOrderOptions); // 주문내역
  1447. gagaAgGrid.createGrid('custAddrList', gridAddrOptions); // 주소정보 그리드
  1448. gagaAgGrid.createGrid('custCouponList', gridCouponOptions); // 쿠폰내역
  1449. gagaAgGrid.createGrid('custPointList', gridPointOptions); // 포인트내역 그리드
  1450. gagaAgGrid.createGrid('custGiftCardList', gridGiftCardOptions); // 상품권내역 그리드
  1451. gagaAgGrid.createGrid('custCounselList', gridCounselOptions); // 1:1문의 내역
  1452. gagaAgGrid.createGrid('custGoodsQnaList', gridGoodsQnaOptions); // 상품문의 내역
  1453. gagaAgGrid.createGrid('custReviewList', gridReviewOptions); // 상품평 그리드
  1454. gagaAgGrid.createGrid('custGradeList', gridGradeOptions); // 등급변경 그리드
  1455. gagaAgGrid.createGrid('custContactList', gridContactOptions); // 회원접촉이력 그리드
  1456. });
  1457. /*]]>*/
  1458. </script>
  1459. </html>