sms.ejs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <% include ./sub_menu.ejs %>
  2. <div class="panel-content" id="app">
  3. <div class="panel-title">
  4. <div class="title-main">
  5. <h2>认证手机</h2>
  6. </div>
  7. </div>
  8. <div class="content-wrap">
  9. <div class="c-body">
  10. <div class="sjs-height-0">
  11. <div class="row m-0 mt-3">
  12. <div class="col-6">
  13. <div class="card mb-3 ">
  14. <div class="card-body pt-3">
  15. <h6 class="card-title">认证手机</h6>
  16. <% if (accountData.auth_mobile !== '') { %>
  17. <!--已绑定手机-->
  18. <div class="form-group">
  19. <label>已认证手机</label>
  20. <div class="input-group mb-3">
  21. <input class="form-control form-control-sm" readonly="" value="<%= accountData.auth_mobile %>">
  22. <div class="input-group-append">
  23. <button class="btn btn-outline-secondary btn-sm" id="change-mobile">修改手机</button>
  24. </div>
  25. </div>
  26. </div>
  27. <% } %>
  28. <!--绑定手机-->
  29. <% if (accountData.auth_mobile === '') { %><div class="alert alert-warning">认证手机用户找回密码操作,请优先设置。</div><% } %>
  30. <form id="mobile-form" <% if (accountData.auth_mobile !== '') { %>style="display: none" <% } %>>
  31. <div class="form-group">
  32. <label>认证手机</label>
  33. <div class="input-group mb-3">
  34. <input class="form-control form-control-sm" placeholder="输入11位手机号码" value="" name="auth_mobile" maxlength="11"/>
  35. <div class="input-group-append">
  36. <button class="btn btn-outline-secondary btn-sm" type="button" id="get-code">获取验证码</button>
  37. </div>
  38. </div>
  39. </div>
  40. <div class="form-group">
  41. <div class="input-group mb-3">
  42. <input class="form-control form-control-sm" type="text" readonly="readonly" name="code" placeholder="输入短信中的6位验证码" />
  43. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  44. </div>
  45. </div>
  46. <button type="button" class="btn btn-secondary btn-sm disabled" id="bind-btn">确认绑定</button>
  47. </form>
  48. <% if (accountData.auth_mobile !== '' && false) { %>
  49. <!--短信通知开关(已有认证手机后显示)-->
  50. <div class="mt-5">
  51. <h4>通知类型</h4>
  52. <p class="text-muted">勾选您需要接收的短信类型。</p>
  53. <form id="sms-form" method="post" action="/profile/sms/type?csrf=<%- ctx.csrf %>">
  54. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
  55. <% const user_smsType = accountData.sms_type !== '' ? JSON.parse(accountData.sms_type) : null; %>
  56. <% for (const s in smsType) { %>
  57. <% if (smsType[s].sms) { %>
  58. <div class="form-group row">
  59. <label class="col-auto col-form-label"><%= smsType[s].name %>
  60. <!--<a href="#sms-view" data-toggle="modal" data-target="#sms-view" class="ml-2"><i class="fa fa-info-circle"></i></a>-->
  61. </label>
  62. <div class="col-5">
  63. <% for (const c of smsType[s].children) { %>
  64. <div class="form-check ">
  65. <input class="form-check-input" id="<%= s %>_<%- c.value %>" type="checkbox" name="<%= s %>[]" value="<%= c.value %>" <% if (user_smsType !== null && user_smsType[s] !== undefined && user_smsType[s].indexOf(c.value.toString()) !== -1) { %>checked<% } %>>
  66. <label class="form-check-label" for="<%= s %>_<%- c.value %>"><%= c.title %></label>
  67. </div>
  68. <% } %>
  69. </div>
  70. </div>
  71. <% } %>
  72. <% } %>
  73. <input name="type" value="1" type="hidden">
  74. <button type="submit" class="btn btn-primary btn-sm">确认修改</button>
  75. </form>
  76. </div>
  77. <% } %>
  78. </div>
  79. </div>
  80. <div class="card mb-3 ">
  81. <div class="card-body pt-3">
  82. <h6 class="card-title">大司空账号</h6>
  83. <div class="mb-3">
  84. <% if (!accountData.auth_mobile) { %>
  85. <div class="mb-3"><label for="">请先认证手机,再绑定大司空账号。</label></div>
  86. <% } else { %>
  87. <div <% if (accountData.dsk_account) { %>style="display: none"<% } %>>
  88. <div class="form-group">
  89. <div class="input-group mb-3">
  90. <input class="form-control form-control-sm" id="dak-mobile" readonly="" value="<%= accountData.auth_mobile %>">
  91. <div class="input-group-append">
  92. <button class="btn btn-outline-secondary btn-sm" id="change-dsk-mobile">更改账号</button>
  93. <button class="btn btn-outline-secondary btn-sm" style="display: none" id="reset-dsk-mobile">重置</button>
  94. </div>
  95. </div>
  96. </div>
  97. <div class="form-group mb-1">
  98. <div>
  99. <div class="form-check form-check-inline">
  100. <input class="form-check-input" type="radio" id="radio1" value="password" name="dskradio" checked>
  101. <label class="form-check-label" for="radio1" name="radio33">密码</label>
  102. </div>
  103. <div class="form-check form-check-inline">
  104. <input class="form-check-input" type="radio" id="radio2" value="code" name="dskradio">
  105. <label class="form-check-label" for="radio2">手机验证码</label>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="form-group mb-3" id="dsk-pwd-div">
  110. <input class="form-control form-control-sm" name="dsk_pwd" value="" placeholder="请输入密码">
  111. </div>
  112. <div class="input-group mb-3" id="dsk-code-div" style="display: none">
  113. <input class="form-control form-control-sm" placeholder="输入短信中的6位验证码" value="" name="dsk_code" maxlength="6"/>
  114. <div class="input-group-append">
  115. <button class="btn btn-outline-secondary btn-sm" type="button" id="get-dsk-code">获取验证码</button>
  116. </div>
  117. </div>
  118. <button class="btn btn-sm btn-primary" id="dsk-bind-btn">确认绑定</button>
  119. </div>
  120. <div class="form-group show-dsk-account" <% if (!accountData.dsk_account) { %>style="display: none"<% } %>>
  121. <label><%- accountData.dsk_account ? accountData.dsk_account.mobile : '' %></label>
  122. <a href="#remove-dsk-account" class="btn btn-sm btn-outline-primary" data-toggle="modal" data-target="#remove-dsk-account">解绑</a>
  123. </div>
  124. </div>
  125. <% } %>
  126. </div>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133. </div>
  134. <script type="text/javascript">
  135. const csrf = '<%= ctx.csrf %>';
  136. </script>
  137. <script type="text/javascript" src="/public/js/profile.js"></script>
  138. <script>
  139. $(function () {
  140. // 更改账号
  141. $('#change-dsk-mobile').click(function () {
  142. $('#dak-mobile').attr('readonly', false);
  143. $('#change-dsk-mobile').hide();
  144. $('#reset-dsk-mobile').show();
  145. });
  146. // 重置账号
  147. $('#reset-dsk-mobile').click(function () {
  148. $('#dak-mobile').val('<%= accountData.auth_mobile %>');
  149. });
  150. // 切换密码/验证码
  151. $('input[name="dskradio"]').on('change', function () {
  152. if ($(this).val() === 'password') {
  153. $('#dsk-pwd-div').show();
  154. $('#dsk-code-div').hide();
  155. } else {
  156. $('#dsk-pwd-div').hide();
  157. $('#dsk-code-div').show();
  158. }
  159. });
  160. // 获取验证码
  161. $("#get-dsk-code").click(function() {
  162. // if (isPosting2) {
  163. // return false;
  164. // }
  165. const mobile = $('#dak-mobile').val();
  166. if (!mobile) {
  167. toastr.error('请输入手机号');
  168. return false;
  169. }
  170. // 手机号验证
  171. if (!/^1[3456789]\d{9}$/.test(mobile)) {
  172. toastr.error('请输入正确的手机号');
  173. return false;
  174. }
  175. const btn = $(this);
  176. postData('/profile/dsk/api', { type: 'sms', mobile: mobile }, function (response) {
  177. codeSuccess(btn);
  178. });
  179. // $.ajax({
  180. // url: '/profile/dsk/api?_csrf_j=' + csrf,
  181. // type: 'post',
  182. // data: { type: 'code', mobile: mobile },
  183. // dataTye: 'json',
  184. // error: function() {
  185. // isPosting2 = false;
  186. // },
  187. // beforeSend: function() {
  188. // isPosting2 = true;
  189. // },
  190. // success: function(response) {
  191. // isPosting2 = false;
  192. // if (response.err === 0) {
  193. // codeSuccess(btn);
  194. // } else {
  195. // toastr.error(response.msg);
  196. // }
  197. // }
  198. // });
  199. });
  200. $('#dsk-bind-btn').click(function () {
  201. const mobile = $('#dak-mobile').val();
  202. const pwd = $('#dsk-pwd-div input').val();
  203. const code = $('#dsk-code-div input').val();
  204. const type = $('input[name="dskradio"]:checked').val();
  205. if (!mobile) {
  206. toastr.error('请输入手机号');
  207. return false;
  208. }
  209. if (type !== 'password' && type !== 'code') {
  210. toastr.error('请选择验证方式');
  211. return false;
  212. }
  213. if (type === 'password' && !pwd) {
  214. toastr.error('请输入密码');
  215. return false;
  216. }
  217. if (type === 'code' && !code) {
  218. toastr.error('请输入验证码');
  219. return false;
  220. }
  221. const data = {
  222. type: 'bind',
  223. mobile,
  224. method: type === 'password' ? 1 : 2,
  225. value: type === 'password' ? pwd : code,
  226. }
  227. postData('/profile/dsk/api', data, function (response) {
  228. toastr.success('绑定大司空账号成功');
  229. setTimeout(function () {
  230. location.reload();
  231. }, 1000);
  232. });
  233. });
  234. $('#del-dsk-btn').click(function () {
  235. postData('/profile/dsk/api', { type: 'unbind' }, function (response) {
  236. toastr.success('解绑大司空账号成功');
  237. setTimeout(function () {
  238. location.reload();
  239. }, 1000);
  240. });
  241. })
  242. });
  243. </script>