register_person.blade.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. @extends('mobile.module.layouts.content')
  2. @push('meta')
  3. @endpush
  4. @push('css')
  5. <link href="{{ theme_asset('mobile/css/members.css') }}" rel="stylesheet">
  6. @endpush
  7. @push('js')
  8. <script type="text/javascript" src="{{ theme_asset('gt/gt.js') }}"></script>
  9. <script type="text/javascript" src="{{ theme_asset('gt/gt.handle.js') }}"></script>
  10. @endpush
  11. @section('content')
  12. <div class="qs-top-nav x2 list_height">
  13. <div class="n-cell active">手机注册<div class="b-line"></div></div>
  14. <div class="n-cell" onclick="javascript:location.href='{{route($sub_site.'mobile.register.person.email')}}'">邮箱注册<div class="b-line"></div></div>
  15. <div class="clear"></div>
  16. </div>
  17. <div class="split-block"></div>
  18. <form id="regMobileForm" method="post" action="{{route($sub_site.'mobile.register.person')}}">
  19. {{csrf_field()}}
  20. <div class="loging-input-group">
  21. {{--<div class="group-list verfy">
  22. <input id="id_card" name="id_card" type="text" class="l-input font14" placeholder="请输入身份证号码" autocomplete="off">
  23. </div>--}}
  24. <div class="group-list mobile">
  25. <input id="mobile" name="mobile" type="text" class="l-input font14" placeholder="请输入手机号码" autocomplete="off" value="">
  26. <a href="javascript:;" id="getVerfyCode" class="qs-btn qs-btn-inline qs-btn-medium qs-btn-border-gray font14">获取验证码</a>
  27. </div>
  28. <div class="group-list had-remind-box qs-center link_blue" onclick="javascript:location.href='{{route($sub_site.'mobile.login')}}'"><a href="javascript:;"><span class="mal"></span><span class="txt-o-red">点击立即登录</span></a></div>
  29. <div class="group-list verfy">
  30. <input id="mobile_vcode" name="mobile_vcode" type="text" class="l-input font14" placeholder="请输入手机验证码" autocomplete="off">
  31. </div>
  32. <div class="group-list pwd">
  33. <input id="password" name="password" type="password" class="l-input font14" placeholder="请输入账户密码" autocomplete="off">
  34. </div>
  35. <div class="group-list pwd">
  36. <input id="password_confirmation" name="password_confirmation" type="password" class="l-input font14" placeholder="请确认账户密码" autocomplete="off">
  37. </div>
  38. </div>
  39. <div class="l-tool-bar list_height">
  40. <div class="read-agreement">
  41. <div class="for-checkbox active" id="for-checkbox">我已阅读并同意
  42. </div>
  43. </div>
  44. <div class="agreement link_gray6"><a href="#userAgreenment" id="reg_agreement">《用户服务协议》</a></div>
  45. <div class="clear"></div>
  46. </div>
  47. <div class="split-block"></div>
  48. <div class="btn-spacing btn-spacing-nmb"><a id="btnRegPersonal" href="javascript:;" class="qs-btn qs-btn-blue font18">注册个人会员</a></div>
  49. <input type="hidden" name="reg_type" value="1" />
  50. <input type="hidden" name="utype" value="2" />
  51. <input type="hidden" name="reg_source" value="2" />
  52. <input type="hidden" name="agreement" value="1" />
  53. </form>
  54. <div class="r-link-box qs-center link_blue"><a href="{{route($sub_site.'mobile.login')}}">已有账号,立即登录</a></div>
  55. <input type="hidden" id="J_config_varify_reg" value="1"/>
  56. <!--用户服务协议-->
  57. <script type="text/html" id="agreementTxt">
  58. <div class="headernavfixed">
  59. <div class="headernav font18"><div class="title">用户服务协议<div class="return js-back"></div><div class="rbtn"></div></div></div>
  60. </div>
  61. <div class="agreement-content">{!! str_replace(["\r\n","\n"], ["",""], config('aix.system.register_agreement.register_agreement.reg_agreement')) !!}</div>
  62. </script>
  63. @endsection
  64. @section('script')
  65. <script type="text/javascript" src="{{ theme_asset('app/js/regular.js') }}"></script>
  66. <script type="text/javascript" src="{{ theme_asset('mobile/js/popWin.js') }}"></script>
  67. <script>
  68. // 用户服务协议
  69. $('#for-checkbox').on('click', function() {
  70. $(this).toggleClass('active');
  71. if ($(this).hasClass('active')) {
  72. $('input[name=agreement]').val(1);
  73. } else {
  74. $('input[name=agreement]').val(0);
  75. }
  76. })
  77. var agreementTemp = $('#agreementTxt').html();
  78. $("#reg_agreement").on("click",function(){
  79. popWin.init({
  80. from:"right",
  81. html:agreementTemp,
  82. handle:function (a) {
  83. }
  84. })
  85. })
  86. var config_varify_reg = eval($('#J_config_varify_reg').val());
  87. // 配置极验
  88. if (config_varify_reg) {
  89. //手机注册
  90. var handlerRegMobile = function(captchaObj) {
  91. captchaObj.bindForm("#regMobileForm");
  92. captchaObj.onSuccess(function() {
  93. regPerByMobileHandler();
  94. });
  95. captchaObj.onError(function() {
  96. });
  97. $('#btnRegPersonal').on('click', function () {
  98. // var id_cardValue = $.trim($('input[name=id_card]').val());
  99. var mobileValue = $.trim($('input[name=mobile]').val());
  100. var verifycodeValue = $.trim($('input[name=mobile_vcode]').val());
  101. var passwordValue = $.trim($('input[name=password]').val());
  102. var password_confirmation = $.trim($('input[name=password_confirmation]').val());
  103. var agreementValue = $('input[name=agreement]').val();
  104. /*if (id_cardValue == '') {
  105. qsToast({type:2,context: '请输入身份证号码'});
  106. return false;
  107. }
  108. if(!IsCardVali('id_card',id_cardValue)) {
  109. qsToast({type:2,context: '身份证格式错误'});
  110. return false;
  111. }
  112. if(!IsCard('id_card',id_cardValue)) {
  113. qsToast({type:2,context: '该身份证已被注册'});
  114. return false;
  115. }*/
  116. if (mobileValue == '') {
  117. qsToast({type:2,context: '请输入手机号码'});
  118. return false;
  119. }
  120. if (mobileValue != "" && !regularMobile.test(mobileValue)) {
  121. qsToast({type:2,context: '手机号码格式不正确'});
  122. return false;
  123. }
  124. if (verifycodeValue == '') {
  125. qsToast({type:2,context: '请输入手机验证码'});
  126. return false;
  127. }
  128. if (passwordValue == '') {
  129. qsToast({type:2,context: '请输入账户密码'});
  130. return false;
  131. }
  132. if(!inputRegValiPassword(passwordValue)){
  133. qsToast({type:2,context: '密码长度要求为6-16个字符'});
  134. return false;
  135. }
  136. if (password_confirmation == '') {
  137. qsToast({type:2,context: '请确认账户密码'});
  138. return false;
  139. }
  140. if (passwordValue != password_confirmation) {
  141. qsToast({type:2,context: '两次输入的密码不一致'});
  142. return false;
  143. }
  144. if (agreementValue !=1) {
  145. qsToast({type:2,context: '请接受用户服务协议'});
  146. return false;
  147. }
  148. captchaObj.verify();
  149. });
  150. };
  151. //发送短信
  152. var handler = function(captchaObj) {
  153. captchaObj.appendTo("#popup-captcha");
  154. captchaObj.onSuccess(function() {
  155. var result = captchaObj.getValidate();
  156. toSetSms(result);
  157. });
  158. captchaObj.onError(function() {
  159. });
  160. $('#getVerfyCode').on('click', function () {
  161. var mobileValue = $.trim($('input[name=mobile]').val());
  162. if (mobileValue == '') {
  163. qsToast({type:2,context: '请输入手机号'});
  164. return false;
  165. }
  166. captchaObj.verify();
  167. });
  168. };
  169. gt_init(handlerRegMobile);
  170. gt_init(handler);
  171. }
  172. $('input[name=mobile]').change(function () {
  173. var currentValue = $(this).val();
  174. if (currentValue.length >= 11) {
  175. if(regularMobile.test(currentValue) && !remoteValid('mobile',currentValue)) {
  176. $('.had-remind-box .mal').text('手机号 ' + currentValue + ' 已注册,');
  177. $('.had-remind-box').show();
  178. } else {
  179. $('.had-remind-box').hide();
  180. }
  181. } else {
  182. $('.had-remind-box').hide();
  183. }
  184. });
  185. $('input[name=id_card]').change(function () {
  186. var currentValue = $(this).val();
  187. if(!IsCardVali('id_card',currentValue)) {
  188. qsToast({type:2,context: '身份证格式错误'});
  189. return false;
  190. }
  191. if(!IsCard('id_card',currentValue)) {
  192. qsToast({type:2,context: '该身份证已被注册'});
  193. return false;
  194. }
  195. });
  196. function IsCard(validType, validValue) {
  197. var result = false;
  198. $.ajax({
  199. url: "{{route('register.check', ['utype'=>2])}}",
  200. cache: false,
  201. async: false,
  202. type: 'post',
  203. dataType: 'json',
  204. data: { type: validType, param: validValue},
  205. success: function(json) {
  206. result= true;
  207. }
  208. });
  209. return result;
  210. }
  211. function IsCardVali(validType, validValue){
  212. var result = false;
  213. $.ajax({
  214. url: "{{route('register.check', ['utype'=>2])}}",
  215. cache: false,
  216. async: false,
  217. type: 'post',
  218. dataType: 'json',
  219. data: { type: validType, param: validValue,vail:1 },
  220. success: function(json) {
  221. result= true;
  222. }
  223. });
  224. return result;
  225. }
  226. // 发送手机验证码
  227. function toSetSms(geet_result) {
  228. var mobileValue = $.trim($('input[name=mobile]').val());
  229. function settime(countdown) {
  230. if (countdown == 0) {
  231. $('#getVerfyCode').removeClass('qs-btn-border-disabled');
  232. $('#getVerfyCode').text('获取验证码');
  233. countdown = 180;
  234. return;
  235. } else {
  236. $('#getVerfyCode').addClass('qs-btn-border-disabled');
  237. $('#getVerfyCode').text('重新发送' + countdown + '秒');
  238. countdown--;
  239. }
  240. setTimeout(function() {
  241. settime(countdown)
  242. },1000)
  243. }
  244. $('#getVerfyCode').prop("disabled", !0);
  245. $('#getVerfyCode').addClass('qs-btn-border-disabled');
  246. $('#getVerfyCode').text('发送中...');
  247. geet_result.mobile= mobileValue;
  248. geet_result.type= "register";
  249. $.ajax({
  250. url: "{{route('sms.send')}}",
  251. type: 'POST',
  252. dataType: 'json',
  253. data: geet_result,
  254. success: function (data) {
  255. // console.log(data);
  256. setTimeout(function() {
  257. qsToast({type:2,context: '验证码已发送,请注意查收'});
  258. // 开始倒计时
  259. var countdowns = 180;
  260. settime(countdowns);
  261. },1000)
  262. },
  263. error: function (errorData) {
  264. // console.log(errorData);
  265. var response=$.parseJSON(errorData.response);
  266. if (errorData.status==422) {//验证错误
  267. $.each(response.errors,function (key,val) {
  268. qsToast({type:2,context: val[0]});
  269. return false;
  270. });
  271. }
  272. else if(errorData.status==400) {//业务错误
  273. qsToast({type:2,context: response.message});
  274. }
  275. setTimeout(function() {
  276. $('#getVerfyCode').prop("disabled", 0);
  277. $('#getVerfyCode').removeClass('qs-btn-border-disabled');
  278. $('#getVerfyCode').text('获取验证码');
  279. },1500)
  280. }
  281. });
  282. }
  283. // 个人手机注册处理程序
  284. function regPerByMobileHandler() {
  285. $('#btnRegPersonal').text('注册中...').addClass('btn_disabled').prop('disabled', !0);
  286. $.ajax({
  287. url: "{{route($sub_site.'mobile.register.person')}}",
  288. type: 'POST',
  289. dataType: 'json',
  290. data: $('#regMobileForm').serialize(),
  291. success: function (data) {
  292. qsToast({type:2,context: "注册成功,正在为你跳转.."});
  293. setTimeout(function () {
  294. window.location.href = data.data.url;
  295. },1000)
  296. },
  297. error:function(errorData) {
  298. $('#btnRegPersonal').text('注册个人会员').removeClass('btn_disabled').prop('disabled', 0);
  299. var response=$.parseJSON(errorData.response);
  300. if (errorData.status==422) {//验证错误
  301. $.each(response.errors,function (key,val) {
  302. qsToast({type:2,context: val[0]});
  303. return false;
  304. });
  305. }
  306. else if(errorData.status==400) {//业务错误
  307. qsToast({type:2,context: response.message});
  308. }
  309. }
  310. });
  311. }
  312. /**
  313. * 验证用户名等是否重复
  314. * @param validType 验证类型
  315. * @param validValue 值
  316. * @returns {boolean|*}
  317. */
  318. function remoteValid(validType, validValue){
  319. var result = false;
  320. $.ajax({
  321. url: "{{route('register.check', ['utype'=>2])}}",
  322. cache: false,
  323. async: false,
  324. type: 'post',
  325. dataType: 'json',
  326. data: { type: validType, param: validValue },
  327. success: function(json) {
  328. result= true;
  329. }
  330. });
  331. return result;
  332. }
  333. /**
  334. * 验证密码长度
  335. * @param value 密码
  336. * @returns {boolean}
  337. */
  338. function inputRegValiPassword(value){
  339. achoice = true;
  340. if(value.length>16 || value.length<6){
  341. achoice = false;
  342. }
  343. return achoice;
  344. }
  345. </script>
  346. @endsection