PasswordFindFormWeb.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org"
  4. xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  5. layout:decorator="web/common/layout/DefaultLayoutWeb">
  6. <!--
  7. *******************************************************************************
  8. * @source : PasswordFindFormWeb.html
  9. * @desc : 비밀번호 찾기 Page
  10. *============================================================================
  11. * STYLE24
  12. * Copyright(C) 2021 TSIT, All rights reserved.
  13. *============================================================================
  14. * VER DATE AUTHOR DESCRIPTION
  15. * === =========== ========== =============================================
  16. * 1.0 2021.02.05 jsshin 최초 작성
  17. *******************************************************************************
  18. -->
  19. <body>
  20. <th:block layout:fragment="content">
  21. <div id="container" class="container mb">
  22. <div class="wrap">
  23. <div class="content find"> <!-- 페이지특정 클래스 = find -->
  24. <div class="cont_head">
  25. <h4>아이디&#47;비밀번호 찾기</h4>
  26. </div>
  27. <div class="cont_body">
  28. <form id="searchCustInfo" name="searchCustInfo" class="form_wrap form_col_c" role="form" method="post">
  29. <div class="registration_nav">
  30. <ul>
  31. <li><a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디 찾기</a></li>
  32. <li class="active"><a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">비밀번호 찾기</a></li>
  33. </ul>
  34. </div>
  35. <!-- new -->
  36. <div class="registration_tap">
  37. <div class="form_group" style="display: block;">
  38. <!-- 비밀번호찾기일경우 -->
  39. <div class="form_field">
  40. <div>
  41. <input type="radio" name="rdi-mbCertify2" id="rdi-mbCertify21" checked="checked"/>
  42. <label for="rdi-mbCertify21"><span>회원정보인증</span></label>
  43. </div>
  44. <div>
  45. <input type="radio" name="rdi-mbCertify2" id="rdi-mbCertify22"/>
  46. <label for="rdi-mbCertify22"><span>휴대폰인증</span></label>
  47. </div>
  48. <div>
  49. <input type="radio" name="rdi-mbCertify2" id="rdi-mbCertify23"/>
  50. <label for="rdi-mbCertify23"><span>아이핀인증</span></label>
  51. </div>
  52. </div>
  53. <div class="registration_cont">
  54. <!-- 회원정보인증 -->
  55. <div class="regist_box on">
  56. <div class="form_field form_full">
  57. <label class="input_label sr-only">아이디</label>
  58. <div class="ui_col_12">
  59. <div class="input_wrap">
  60. <input type="text" name="custId" placeholder="아이디" id="custId" class="form_control" minlength="4" maxlength="12"/>
  61. </div>
  62. </div>
  63. </div>
  64. <div class="form_field">
  65. <label class="input_label sr-only">이름</label>
  66. <div class="ui_col_12">
  67. <div class="input_wrap">
  68. <input type="text" name="custNm" placeholder="이름" id="custNm" class="form_control" maxlength="30"/>
  69. </div>
  70. </div>
  71. </div>
  72. <div class="form_field">
  73. <label class="input_label sr-only">이메일</label>
  74. <div class="ui_col_12">
  75. <div class="input_wrap">
  76. <input type="text" name="email" placeholder="이메일" id="email" class="form_control" maxlength="30"/>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="btn_group_block ui_row mt20">
  81. <div class="ui_col_12">
  82. <button type="button" id="btnInfoConfirm" class="btn btn_dark btn_block">
  83. <span>확인</span>
  84. </button>
  85. </div>
  86. </div>
  87. </div>
  88. <!-- //회원정보인증 -->
  89. <!-- 휴대폰인증 -->
  90. <div class="regist_box">
  91. <div class="txt">
  92. <p>회원님의 명의로 등록된 휴대폰으로 본인확인을 진행합니다.</p>
  93. </div>
  94. <div class="ui_row mt20">
  95. <div class="ui_col_12">
  96. <button type="button" id="btnCellPhoneCertify" class="btn btn_dark btn_block">
  97. <span>본인명의 휴대폰으로 인증</span>
  98. </button>
  99. </div>
  100. </div>
  101. </div>
  102. <!-- //휴대폰인증 -->
  103. <!-- 아이핀인증 -->
  104. <div class="regist_box">
  105. <div class="txt">
  106. <p>아이핀 인증을 통해 찾을 수 있습니다.</p>
  107. </div>
  108. <div class="ui_row mt20">
  109. <div class="ui_col_12">
  110. <button type="button" id="btnIpinCertify" class="btn btn_dark btn_block">
  111. <span>아이핀 인증</span>
  112. </button>
  113. </div>
  114. </div>
  115. </div>
  116. <!-- //아이핀인증 -->
  117. </div>
  118. <!-- //비밀번호찾기일경우 -->
  119. <!-- 임시비밀번호 발급 -->
  120. <div id="sendEmailDiv" class="find_result clear hide">
  121. <div class="form_info">
  122. <span class="ico_content_mail"></span>
  123. <p>아래의 이메일로 임시비밀번호가 발급되었습니다.</p>
  124. <p class="t_info mt10">
  125. 로그인 시 비밀번호를 새로 설정하신 후 이용하실 수 있습니다.
  126. </p>
  127. </div>
  128. <div class="form_print_bar mt40">
  129. <p id="sendEmail" class="c_primary bold" data-font="lato"></p>
  130. </div>
  131. <div class="btn_group_block btn_group_md ui_row">
  132. <div class="ui_col_12">
  133. <button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_LOGIN);">
  134. <span>로그인 하기</span>
  135. </button>
  136. </div>
  137. </div>
  138. </div>
  139. <!-- //임시비밀번호 발급 -->
  140. <div id="failCustId" class="find_result clear hide">
  141. <div class="form_info">
  142. <span class="ico_content_none"></span>
  143. <p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
  144. <p class="t_info mt10">
  145. 정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
  146. </p>
  147. </div>
  148. <div class="btn_group_block btn_group_md ui_row">
  149. <div class="ui_col_6">
  150. <button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
  151. <span>회원가입</span>
  152. </button>
  153. </div>
  154. <div class="ui_col_6">
  155. <button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">
  156. <span>다시 찾기</span>
  157. </button>
  158. </div>
  159. </div>
  160. </div>
  161. <!-- //회원정보로 아이디찾기 실패일경우 -->
  162. <!-- 비밀번호 찾기 결과안내 실패일경우 -->
  163. <div id="failAuthentication" class="find_result clear hide">
  164. <div class="form_info">
  165. <span class="ico_content_none"></span>
  166. <p>입력한 정보와 일치하는 정보가 존재하지 않습니다.</p>
  167. <p class="t_info mt10">
  168. <span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
  169. </p>
  170. </div>
  171. <div class="btn_group_block btn_group_md ui_row">
  172. <div class="ui_col_12">
  173. <button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
  174. <span>회원가입</span>
  175. </button>
  176. </div>
  177. </div>
  178. </div>
  179. <!-- //비밀번호 찾기 결과안내 실패일경우 -->
  180. </div>
  181. </div>
  182. <!-- //new -->
  183. </form>
  184. </div>
  185. </div>
  186. </div>
  187. </div>
  188. <script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
  189. <script th:inline="javascript">
  190. /*<![CDATA[*/
  191. $('#btnInfoConfirm').on('click', function () {
  192. let custInfo = $('#searchCustInfo').serializeObject();
  193. if(gagajf.isNull(custInfo.custId)) {
  194. mcxDialog.alert("아이디를 입력해주세요.");
  195. return;
  196. }
  197. if (gagajf.isNull(custInfo.custNm)) {
  198. mcxDialog.alert('이름을 형식에 맞게 입력해주세요.');
  199. return;
  200. }
  201. if (gagajf.isNull(custInfo.email)) {
  202. mcxDialog.alert('이메일을 입력하여 주세요.');
  203. return;
  204. }
  205. if (!fnCheckValidationEmail(custInfo.email)) {
  206. mcxDialog.alert('이메일 형식에 맞게 입력해주세요.');
  207. return;
  208. }
  209. custInfo.authMethod = 'custInfo';
  210. let jsonData = JSON.stringify(custInfo);
  211. //console.log('jsonData', jsonData);
  212. gagajf.ajaxJsonSubmit('/customer/password/find/custinfo', jsonData, fnInfoConfirmCallBack);
  213. });
  214. // 휴대폰 인증
  215. $('#btnCellPhoneCertify').on('click', function () {
  216. cfnOpenCellphoneCertify();
  217. });
  218. // 아이핀 인증
  219. $('#btnIpinCertify').on('click', function () {
  220. cfnOpenIpinCertify();
  221. });
  222. // 찾기결과
  223. var fnInfoConfirmCallBack = function (result) {
  224. $('.form_field').hide();
  225. $('.registration_cont').hide();
  226. $('.registration_nav').hide();
  227. $('#searchDiv').hide();
  228. if (result.isFind) {
  229. fnGetDisplaySucc(result.authMethod, result);
  230. } else {
  231. fnGetDisplayFail(result.authMethod);
  232. }
  233. };
  234. // 찾기성공
  235. var fnGetDisplaySucc = function (authMethod, custInfo) {
  236. if (custInfo.authMethod === 'custInfo') {
  237. $('#sendEmail').text(custInfo.maskingEmail)
  238. $('#sendEmailDiv').show();
  239. }
  240. if (authMethod === 'mobile' || authMethod === 'ipin') {
  241. cfnGoToPage(_PAGE_CUSTOMER_PWD_CHANGE_FIND);
  242. }
  243. };
  244. // 찾기실패
  245. var fnGetDisplayFail = function (authMethod) {
  246. $('.form_head').hide();
  247. $('.registration_nav').hide();
  248. if (authMethod === 'custInfo') {
  249. $('#failCustId').show();
  250. }
  251. if (authMethod === 'mobile' || authMethod === 'ipin') {
  252. $('#failAuthentication').show();
  253. }
  254. };
  255. // 나이스 본인인증 후 콜백
  256. var fnNiceCallBack = function(encData, authMethod) {
  257. if (!gagajf.isNull(encData)) {
  258. let custInfo = {};
  259. custInfo.encData = encData;
  260. custInfo.authMethod = authMethod;
  261. let jsonData = JSON.stringify(custInfo);
  262. gagajf.ajaxJsonSubmit('/customer/password/find/certify', jsonData, fnInfoConfirmCallBack)
  263. }
  264. };
  265. $(document).ready( function() {
  266. $('#searchCustInfo')[0].reset();
  267. });
  268. /*]]>*/
  269. </script>
  270. </th:block>
  271. </body>
  272. </html>