register_person.blade.php 18 KB

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