register.html 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <style>
  4. .form-wrap {
  5. margin-top: 0;
  6. }
  7. .tips {
  8. padding: 10px;
  9. margin-bottom: 15px;
  10. background: #ffe1d2;
  11. color: #ff8143;
  12. }
  13. .btn-tel-code {
  14. width: 115px;
  15. }
  16. .btn-code {
  17. width: 115px;
  18. padding: 0 0px;
  19. }
  20. </style>
  21. {/block}
  22. {block name="main"}
  23. <div class="layui-form form-wrap">
  24. <p class="tips">已有账号,<a href="{:addon_url('niusms://shop/sms/login')}">去登录</a></p>
  25. <div class="layui-form-item">
  26. <label class="layui-form-label">用户名:</label>
  27. <div class="layui-input-block">
  28. <input type="text" name="username" lay-verify="username" placeholder="请输入用户名" autocomplete="off" class="layui-input len-long">
  29. <span class="layui-word-aux">仅支持6~50位英文+数字组合,不支持下划线</span>
  30. </div>
  31. </div>
  32. <div class="layui-form-item">
  33. <label class="layui-form-label">密码:</label>
  34. <div class="layui-input-block">
  35. <input type="text" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input len-long">
  36. </div>
  37. </div>
  38. <div class="layui-form-item">
  39. <label class="layui-form-label">公司名称:</label>
  40. <div class="layui-input-block">
  41. <input type="text" name="company" lay-verify="required" placeholder="请输入公司名称" autocomplete="off" class="layui-input len-long">
  42. </div>
  43. </div>
  44. <div class="layui-form-item">
  45. <label class="layui-form-label">手机号:</label>
  46. <div class="layui-input-block">
  47. <div class="layui-input-inline">
  48. <input type="text" name="mobiles" lay-verify="required" placeholder="请输入手机号" autocomplete="off" class="layui-input len-long">
  49. </div>
  50. </div>
  51. </div>
  52. <div class="layui-form-item">
  53. <label class="layui-form-label">验证码:</label>
  54. <div class="layui-input-block">
  55. <div class="layui-input-inline">
  56. <input type="text" name="captcha_code" lay-verify="required" placeholder="请输入验证码" autocomplete="off" class="layui-input len-mid">
  57. </div>
  58. <img class="layui-btn layui-btn-primary btn-code" onclick="captcha()" src='{notempty name="$captcha.img"}{$captcha.img}{/notempty}' id="captcha_img">
  59. <input type="hidden" name="captcha_id" value='{notempty name="$captcha.id"}{$captcha.id}{/notempty}'>
  60. </div>
  61. </div>
  62. <div class="layui-form-item">
  63. <label class="layui-form-label">动态码:</label>
  64. <div class="layui-input-inline">
  65. <input type="text" name="code" lay-verify="required" placeholder="请输入手机动态码" autocomplete="off" class="layui-input len-mid">
  66. </div>
  67. <button class="layui-btn layui-btn-primary btn-tel-code" onclick="mobileCode()">获取动态码</button>
  68. <input type="hidden" name="key" value="">
  69. </div>
  70. <div class="layui-form-item">
  71. <label class="layui-form-label">手机端网址:</label>
  72. <div class="layui-input-block">
  73. <input type="text" name="domain" lay-verify="required" placeholder="请输入手机端网址" autocomplete="off" class="layui-input len-long">
  74. <span class="layui-word-aux">请输入手机端网址,方便审核。网址错误,可能导致短信签名、模板审核不通过</span>
  75. </div>
  76. </div>
  77. <div class="form-row">
  78. <button class="layui-btn" lay-submit lay-filter="save">注册</button>
  79. </div>
  80. </div>
  81. {/block}
  82. {block name="script"}
  83. <script>
  84. layui.use('form', function () {
  85. var form = layui.form,
  86. repeat_flag = false; //防重复标识
  87. form.render();
  88. form.verify({
  89. username: function (value) {
  90. if (value.length == 0) {
  91. return "请输入用户名";
  92. }
  93. if (value.indexOf("_") != -1) {
  94. return "不支持下划线";
  95. }
  96. if (!/^[0-9a-zA-z]{6,50}$/.test(value)) {
  97. return "仅支持6~50位英文+数字组合";
  98. }
  99. },
  100. mobiles: function (value) {
  101. if (!value.trim()) {
  102. return "手机号不能为空";
  103. }
  104. },
  105. captcha_code: function (value) {
  106. if (!value.trim()) {
  107. return "验证码不能为空";
  108. }
  109. },
  110. code: function (value) {
  111. if (!value.trim()) {
  112. return "动态码不能为空";
  113. }
  114. }
  115. });
  116. form.on('submit(save)', function (data) {
  117. if (repeat_flag) return;
  118. repeat_flag = true;
  119. $.ajax({
  120. url: ns.url("niusms://shop/sms/register"),
  121. data: data.field,
  122. dataType: 'JSON',
  123. type: 'POST',
  124. success: function (res) {
  125. repeat_flag = false;
  126. if (res.code == 0) {
  127. layer.msg("注册成功");
  128. location.href = ns.url("niusms://shop/sms/index");
  129. } else {
  130. layer.msg(res.message);
  131. }
  132. }
  133. });
  134. });
  135. });
  136. // 手机动态码
  137. function mobileCode() {
  138. var mobiles = $("input[name='mobiles']").val();
  139. var captcha_id = $("input[name='captcha_id']").val();
  140. var captcha_code = $("input[name='captcha_code']").val();
  141. if (mobiles == "") {
  142. layer.msg("手机号不能为空");
  143. return false;
  144. }
  145. if (captcha_id == "") {
  146. layer.msg("重新获取验证码");
  147. return false;
  148. }
  149. if (captcha_code == "") {
  150. layer.msg("验证码不能为空");
  151. return false;
  152. }
  153. if (!ns.parse_mobile(mobiles)) {
  154. layer.msg("请输入正确的手机号");
  155. return false;
  156. }
  157. $.ajax({
  158. url: ns.url("niusms://shop/sms/mobileCode"),
  159. data: {mobiles: mobiles, captcha_id: captcha_id, captcha_code: captcha_code},
  160. dataType: 'JSON',
  161. type: 'POST',
  162. success: function (res) {
  163. $(".btn-tel-code").attr("disabled", "disabled");
  164. $(".btn-tel-code").css("background-color", "#bdbcbc");
  165. //倒计时
  166. var d = new Date();
  167. d.setSeconds(d.getSeconds() + 59);
  168. var m = d.getMonth() + 1;
  169. var time = d.getFullYear() + '-' + m + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
  170. var id = ".btn-tel-code";
  171. var end_time = new Date(Date.parse(time.replace(/-/g, "/"))).getTime(),
  172. //月份是实际月份-1
  173. sys_second = (end_time - new Date().getTime()) / 1000;
  174. var timer = setInterval(function () {
  175. if (sys_second > 1) {
  176. sys_second -= 1;
  177. var day = Math.floor((sys_second / 3600) / 24);
  178. var hour = Math.floor((sys_second / 3600) % 24);
  179. var minute = Math.floor((sys_second / 60) % 60);
  180. var second = Math.floor(sys_second % 60);
  181. var time_text = '';
  182. if (day > 0) {
  183. time_text += day + '天';
  184. }
  185. if (hour > 0) {
  186. if (hour < 10) {
  187. hour = '0' + hour;
  188. }
  189. time_text += hour + '小时';
  190. }
  191. if (minute > 0) {
  192. if (minute < 10) {
  193. minute = '0' + minute;
  194. }
  195. time_text += minute + '分';
  196. }
  197. if (second > 0) {
  198. if (second < 10) {
  199. second = '0' + second;
  200. }
  201. time_text += second + '秒';
  202. }
  203. $(id).text(time_text);
  204. } else {
  205. clearInterval(timer);
  206. $(".btn-tel-code").attr("disabled", false);
  207. $(".btn-tel-code").text('获取动态码');
  208. $(".btn-tel-code").css("background-color", "#ffffff");
  209. }
  210. },
  211. 1000);
  212. if (res.code >= 0) {
  213. $("input[name='key']").attr("value", res.data.key);
  214. layer.msg("发送成功");
  215. } else {
  216. layer.msg(res.message);
  217. }
  218. }
  219. });
  220. }
  221. // 验证码
  222. function captcha() {
  223. $.ajax({
  224. url: ns.url("niusms://shop/sms/captcha"),
  225. data: {},
  226. dataType: 'JSON',
  227. type: 'POST',
  228. success: function (res) {
  229. if (res.code >= 0) {
  230. $('#captcha_img').attr('src', res.data.img);
  231. $("input[name='captcha_id']").attr("value", res.data.id);
  232. } else {
  233. layer.msg(res.message);
  234. }
  235. }
  236. });
  237. }
  238. </script>
  239. {/block}