sms.ejs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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. <a class="btn btn-sm btn-outline-primary ml-2" href="//dsk.smartcost.com.cn/register" target="_blank">注册大司空账号</a>
  120. </div>
  121. <div class="form-group show-dsk-account" <% if (!accountData.dsk_account) { %>style="display: none"<% } %>>
  122. <label><%- accountData.dsk_account ? accountData.dsk_account.mobile : '' %></label>
  123. <a href="#remove-dsk-account" class="btn btn-sm btn-outline-primary" data-toggle="modal" data-target="#remove-dsk-account">解绑</a>
  124. </div>
  125. </div>
  126. <% } %>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. <script type="text/javascript">
  136. const csrf = '<%= ctx.csrf %>';
  137. </script>
  138. <script type="text/javascript" src="/public/js/profile.js"></script>
  139. <script>
  140. $(function () {
  141. // 更改账号
  142. $('#change-dsk-mobile').click(function () {
  143. $('#dak-mobile').attr('readonly', false);
  144. $('#change-dsk-mobile').hide();
  145. $('#reset-dsk-mobile').show();
  146. });
  147. // 重置账号
  148. $('#reset-dsk-mobile').click(function () {
  149. $('#dak-mobile').val('<%= accountData.auth_mobile %>');
  150. });
  151. // 切换密码/验证码
  152. $('input[name="dskradio"]').on('change', function () {
  153. if ($(this).val() === 'password') {
  154. $('#dsk-pwd-div').show();
  155. $('#dsk-code-div').hide();
  156. } else {
  157. $('#dsk-pwd-div').hide();
  158. $('#dsk-code-div').show();
  159. }
  160. });
  161. // 获取验证码
  162. $("#get-dsk-code").click(function() {
  163. // if (isPosting2) {
  164. // return false;
  165. // }
  166. const mobile = $('#dak-mobile').val();
  167. if (!mobile) {
  168. toastr.error('请输入手机号');
  169. return false;
  170. }
  171. // 手机号验证
  172. if (!/^1[3456789]\d{9}$/.test(mobile)) {
  173. toastr.error('请输入正确的手机号');
  174. return false;
  175. }
  176. const btn = $(this);
  177. postData('/profile/dsk/api', { type: 'sms', mobile: mobile }, function (response) {
  178. codeSuccess(btn);
  179. });
  180. // $.ajax({
  181. // url: '/profile/dsk/api?_csrf_j=' + csrf,
  182. // type: 'post',
  183. // data: { type: 'code', mobile: mobile },
  184. // dataTye: 'json',
  185. // error: function() {
  186. // isPosting2 = false;
  187. // },
  188. // beforeSend: function() {
  189. // isPosting2 = true;
  190. // },
  191. // success: function(response) {
  192. // isPosting2 = false;
  193. // if (response.err === 0) {
  194. // codeSuccess(btn);
  195. // } else {
  196. // toastr.error(response.msg);
  197. // }
  198. // }
  199. // });
  200. });
  201. $('#dsk-bind-btn').click(function () {
  202. const mobile = $('#dak-mobile').val();
  203. const pwd = $('#dsk-pwd-div input').val();
  204. const code = $('#dsk-code-div input').val();
  205. const type = $('input[name="dskradio"]:checked').val();
  206. if (!mobile) {
  207. toastr.error('请输入手机号');
  208. return false;
  209. }
  210. if (type !== 'password' && type !== 'code') {
  211. toastr.error('请选择验证方式');
  212. return false;
  213. }
  214. if (type === 'password' && !pwd) {
  215. toastr.error('请输入密码');
  216. return false;
  217. }
  218. if (type === 'code' && !code) {
  219. toastr.error('请输入验证码');
  220. return false;
  221. }
  222. const data = {
  223. type: 'bind',
  224. mobile,
  225. method: type === 'password' ? 1 : 2,
  226. value: type === 'password' ? pwd : code,
  227. }
  228. postData('/profile/dsk/api', data, function (response) {
  229. toastr.success('绑定大司空账号成功');
  230. setTimeout(function () {
  231. location.reload();
  232. }, 1000);
  233. });
  234. });
  235. $('#del-dsk-btn').click(function () {
  236. postData('/profile/dsk/api', { type: 'unbind' }, function (response) {
  237. toastr.success('解绑大司空账号成功');
  238. setTimeout(function () {
  239. location.reload();
  240. }, 1000);
  241. });
  242. })
  243. });
  244. </script>