register_company.blade.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629
  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. <script type="text/javascript" src="{{ theme_asset('gt/gt.js') }}"></script>
  7. <script type="text/javascript" src="{{ theme_asset('gt/gt.handle.js') }}"></script>
  8. @endpush
  9. @push('js')
  10. @endpush
  11. @section('content')
  12. <div class="split-block"></div>
  13. <form id="registerForm" method="post" action="{{route($sub_site.'mobile.register.company')}}">
  14. {{csrf_field()}}
  15. <div class="ptitle border"><div class="th1">公司信息</div></div>
  16. <div class="list-group">
  17. <div class="list_height plist-txt notarrow">
  18. <div class="pic"></div>
  19. <div class="tit font14">公司名称</div>
  20. <div class="describe font12"><input type="text" name="companyname" id="companyname" placeholder="请输入公司全称"></div>
  21. <div class="clear"></div>
  22. </div>
  23. <div class="list_height plist-txt notarrow">
  24. <div class="pic"></div>
  25. <div class="tit font14">类型</div>
  26. <div class="describe font12">
  27. <select name="company_type" id="company_type" class="l-input font14">
  28. <option value="0" selected="selected">请选择企业/单位类型</option>
  29. <option value="1">现代产业体系企业</option>
  30. <option value="2">集成电路体系企业</option>
  31. <option value="3">卫生健康单位</option>
  32. <option value="4">高等教育学校</option>
  33. </select>
  34. </div>
  35. <div class="clear"></div>
  36. </div>
  37. <div class="list_height plist-txt notarrow">
  38. <div class="pic"></div>
  39. <div class="tit font14">联系人</div>
  40. <div class="describe font12"><input type="text" name="contact" id="contact" placeholder="请输入公司联系人"></div>
  41. <div class="clear"></div>
  42. </div>
  43. <div class="list_height plist-txt notarrow">
  44. <div class="pic"></div>
  45. <div class="tit font14">手机号</div>
  46. <div class="describe font12"><input type="text" name="company_mobile" id="company_mobile" placeholder="请输入手机号" value=""></div>
  47. <div class="clear"></div>
  48. </div>
  49. <div class="list_height plist-txt notarrow had-remind-box qs-center link_blue" onclick="javascript:location.href='{{route($sub_site.'mobile.login')}}'">
  50. <a href="javascript:;"><span class="mal"></span><span class="txt-o-red">点击立即登录</span></a>
  51. </div>
  52. <div class="list_height plist-txt">
  53. <div class="pic"></div>
  54. <div class="tit font14">公司座机</div>
  55. <a href="#landTel" class="describe font12 js-slide landLineText">请输入</a>
  56. <div class="arrow"></div>
  57. <div class="clear"></div>
  58. </div>
  59. </div>
  60. <div class="split-block"></div>
  61. <div class="ptitle border"><div class="th1">账户信息</div></div>
  62. <div class="list-group">
  63. <div class="list_height plist-txt notarrow">
  64. <div class="pic"></div>
  65. <div class="tit font14">用户名</div>
  66. <div class="describe font12"><input type="text" name="username" id="username" placeholder="请输入用户名"></div>
  67. <div class="clear"></div>
  68. </div>
  69. <div class="list_height plist-txt notarrow">
  70. <div class="pic"></div>
  71. <div class="tit font14">邮箱</div>
  72. <div class="describe font12"><input type="text" name="email" id="email" placeholder="请输入联系邮箱"></div>
  73. <div class="clear"></div>
  74. </div>
  75. <div class="list_height plist-txt notarrow">
  76. <div class="pic"></div>
  77. <div class="tit font14">密码</div>
  78. <div class="describe font12"><input type="password" name="company_password" id="company_password" placeholder="请输入6-16位密码"></div>
  79. <div class="clear"></div>
  80. </div>
  81. <div class="list_height plist-txt notarrow">
  82. <div class="pic"></div>
  83. <div class="tit font14">确认密码</div>
  84. <div class="describe font12"><input type="password" name="company_password_confirmation" id="company_password_confirmation" placeholder="请重复输入密码"></div>
  85. <div class="clear"></div>
  86. </div>
  87. </div>
  88. <div class="l-tool-bar list_height">
  89. <div class="read-agreement">
  90. <div class="for-checkbox active" id="for-checkbox">我已阅读并同意
  91. </div>
  92. </div>
  93. <div class="agreement link_gray6"><a href="#userAgreenment" id="reg_agreement">《用户服务协议》</a></div>
  94. <div class="clear"></div>
  95. </div>
  96. <div class="split-block"></div>
  97. <div class="btn-spacing"><a id="btnRegCompany" href="javascript:;" class="qs-btn qs-btn-blue font18">注册企业会员</a></div>
  98. <input name="utype" type="hidden" value="1">
  99. <input type="hidden" name="reg_type" value="2">
  100. <input type="hidden" name="reg_source" value="2" />
  101. <input type="hidden" name="agreement" value="1" />
  102. <input type="hidden" name="landline_tel" id="landline_tel" value="">
  103. </form>
  104. <input type="hidden" id="h-landline1" value="">
  105. <input type="hidden" id="h-landline2" value="">
  106. <input type="hidden" id="h-landline3" value="">
  107. <!--公司固话模板-->
  108. <script type="text/html" id="tpl-lindTel">
  109. <div class="headernavfixed">
  110. <div class="headernav font18"><div class="title">公司固话<div class="return js-back"></div><div class="rbtn"></div></div></div>
  111. </div>
  112. <div class="split-block"></div>
  113. <div class="list-group">
  114. <div class="list_height plist-txt notarrow">
  115. <div class="pic"></div>
  116. <div class="tit font14">区号</div>
  117. <div class="describe font12"><input type="text" name="landline_tel_first" id="landline_tel_first" placeholder="请输入区号"></div>
  118. <div class="clear"></div>
  119. </div>
  120. <div class="list_height plist-txt notarrow">
  121. <div class="pic"></div>
  122. <div class="tit font14">电话</div>
  123. <div class="describe font12"><input type="text" name="landline_tel_next" id="landline_tel_next" placeholder="请输入电话号码"></div>
  124. <div class="clear"></div>
  125. </div>
  126. <div class="list_height plist-txt notarrow">
  127. <div class="pic"></div>
  128. <div class="tit font14">分机</div>
  129. <div class="describe font12"><input type="text" name="landline_tel_last" id="landline_tel_last" placeholder="请输入分机号码"></div>
  130. <div class="clear"></div>
  131. </div>
  132. </div>
  133. <div class="split-block"></div>
  134. <div class="btn-spacing"><a id="saveLandLine" href="javascript:;" class="qs-btn qs-btn-blue font18">保存</a></div>
  135. </script>
  136. <!--用户服务协议-->
  137. <script type="text/html" id="agreementTxt">
  138. <div class="headernavfixed">
  139. <div class="headernav font18"><div class="title">用户服务协议<div class="return js-back"></div><div class="rbtn"></div></div></div>
  140. </div>
  141. <div class="agreement-content">{!! str_replace(["\r\n","\n"], ["",""], config('aix.system.register_agreement.register_agreement.reg_agreement')) !!}</div>
  142. </script>
  143. @endsection
  144. @section('script')
  145. <script type="text/javascript" src="{{ theme_asset('app/js/regular.js') }}"></script>
  146. <script type="text/javascript" src="{{ theme_asset('mobile/js/popWin.js') }}"></script>
  147. <script>
  148. // 用户服务协议
  149. $('#for-checkbox').on('click', function() {
  150. $(this).toggleClass('active');
  151. if ($(this).hasClass('active')) {
  152. $('input[name=agreement]').val(1);
  153. } else {
  154. $('input[name=agreement]').val(0);
  155. }
  156. })
  157. var agreementTemp = $('#agreementTxt').html();
  158. $("#reg_agreement").on("click",function(){
  159. popWin.init({
  160. from:"right",
  161. html:agreementTemp,
  162. handle:function (a) {
  163. }
  164. })
  165. });
  166. //固话
  167. var subTemp = $('#tpl-lindTel').html();
  168. $(".landLineText").click(function(){
  169. var $this = $(this),
  170. baseTxt = $this.text(),
  171. baseValue = $('#landline_tel').val();
  172. popWin.init({
  173. from:"right",
  174. html:subTemp,
  175. handle:function(a){
  176. if ($('#h-landline1').val().length) {
  177. $('#landline_tel_first').val($('#h-landline1').val());
  178. }
  179. if ($('#h-landline2').val().length) {
  180. $('#landline_tel_next').val($('#h-landline2').val());
  181. }
  182. if ($('#h-landline3').val().length) {
  183. $('#landline_tel_last').val($('#h-landline3').val());
  184. }
  185. /**
  186. * 保存固话
  187. */
  188. $('#saveLandLine').on('click', function() {
  189. var landValue1 = $.trim($('#landline_tel_first').val());
  190. var landValue2 = $.trim($('#landline_tel_next').val());
  191. var landValue3 = $.trim($('#landline_tel_last').val());
  192. var landValue = '';
  193. if (!landValue1.length) {
  194. qsToast({type:2,context: '区号不能为空'});
  195. return false;
  196. }
  197. if (landValue1.length) {
  198. if(!inputRegValiZone(landValue1)){
  199. qsToast({type:2,context: '区号格式错误'});
  200. return false;
  201. }
  202. landValue += landValue1 + '-';
  203. $('#h-landline1').val(landValue1);
  204. }
  205. if (!landValue2.length) {
  206. qsToast({type:2,context: '电话不能为空'});
  207. return false;
  208. }
  209. if(!inputRegValiTelNext(landValue2)){
  210. qsToast({type:2,context: '电话格式错误'});
  211. return false;
  212. }
  213. landValue += landValue2;
  214. $('#h-landline2').val(landValue2);
  215. if (landValue3.length) {
  216. if (!validNumber(landValue3)) {
  217. qsToast({type:2,context: '分机号为数字'});
  218. return false;
  219. }
  220. if (landValue3.length > 4) {
  221. qsToast({type:2,context: '分机号1-4位数字组成'});
  222. return false;
  223. }
  224. landValue += '-' + landValue3;
  225. $('#h-landline3').val(landValue3);
  226. }
  227. if (landValue.length) {
  228. $('#landline_tel').val(landValue);
  229. $('.landLineText').text(landValue);
  230. }
  231. a.close();
  232. });
  233. }
  234. })
  235. });
  236. // 如果后台开启注册验证就配置极验
  237. var handler = function(captchaObj) {
  238. captchaObj.bindForm("#registerForm");
  239. captchaObj.onSuccess(function() {
  240. regCompanyHandler();
  241. });
  242. captchaObj.onError(function() {
  243. });
  244. $('#btnRegCompany').on('click', function () {
  245. var comnameValue = $.trim($('input[name="companyname"]').val());
  246. var contactValue = $.trim($('input[name="contact"]').val());
  247. var telephoneValue = $.trim($('input[name="company_mobile"]').val());
  248. var landlineValue = $.trim($('#landline_tel').val());
  249. var usernameValue = $.trim($('input[name="username"]').val());
  250. var emailValue = $.trim($('input[name="email"]').val());
  251. var emailpassword = $.trim($('input[name="company_password"]').val());
  252. var emailpasswordVerify = $.trim($('input[name="company_password_confirmation"]').val());
  253. var agreementValue = $('input[name=agreement]').val();
  254. if(!comnameValue){
  255. qsToast({type:2,context: '请填写公司名称'});
  256. return false;
  257. }
  258. if(!remoteValid('companyname',comnameValue)){
  259. qsToast({type:2,context: '该公司已被注册'});
  260. return false;
  261. }
  262. if(!contactValue){
  263. qsToast({type:2,context: '请填写联系人'});
  264. return false;
  265. }
  266. if(!telephoneValue && !landlineValue){
  267. qsToast({type:2,context: '公司座机和手机号码至少填写一项'});
  268. return false;
  269. }else if(telephoneValue && !landlineValue){
  270. if(!inputRegValiMobile(telephoneValue)){
  271. qsToast({type:2,context: '手机号格式错误'});
  272. return false;
  273. }
  274. if(!remoteValid('mobile',telephoneValue)){
  275. qsToast({type:2,context: '该手机号已被注册'});
  276. return false;
  277. }
  278. }else if(telephoneValue && landlineValue){
  279. if(!inputRegValiMobile(telephoneValue)){
  280. qsToast({type:2,context: '手机号格式错误'});
  281. return false;
  282. }
  283. if(!remoteValid('mobile',telephoneValue)){
  284. qsToast({type:2,context: '该手机号已被注册'});
  285. return false;
  286. }
  287. }
  288. if(!usernameValue){
  289. qsToast({type:2,context: '请填写用户名'});
  290. return false;
  291. }
  292. if(!inputRegValiUsername(usernameValue)){
  293. qsToast({type:2,context: '用户名字母开头,包含6位以上数字和字母'});
  294. return false;
  295. }
  296. if(!remoteValid('username',usernameValue)){
  297. qsToast({type:2,context: '该用户名已被注册'});
  298. return false;
  299. }
  300. if(!emailValue){
  301. qsToast({type:2,context: '请填写邮箱'});
  302. return false;
  303. }
  304. if(!inputRegValiEmail(emailValue)){
  305. qsToast({type:2,context: '邮箱格式错误'});
  306. return false;
  307. }
  308. if(!remoteValid('email',emailValue)){
  309. qsToast({type:2,context: '该邮箱已被注册'});
  310. return false;
  311. }
  312. if(!emailpassword){
  313. qsToast({type:2,context: '请填写密码'});
  314. return false;
  315. }
  316. if(!inputRegValiPassword(emailpassword)){
  317. qsToast({type:2,context: '密码长度要求为6-16个字符'});
  318. return false;
  319. }
  320. if(!emailpasswordVerify){
  321. qsToast({type:2,context: '请填写确认密码'});
  322. return false;
  323. }
  324. if(!inputRegValiPassword(emailpasswordVerify)){
  325. qsToast({type:2,context: '密码长度要求为6-16个字符'});
  326. return false;
  327. }
  328. if(!inputRegValiPasswordRepeat(emailpassword,emailpasswordVerify)){
  329. qsToast({type:2,context: '两次输入的密码不一致'});
  330. return false;
  331. }
  332. if (agreementValue !=1) {
  333. qsToast({type:2,context: '请接受用户服务协议'});
  334. return false;
  335. }
  336. captchaObj.verify();
  337. });
  338. };
  339. // gt_init(handler);
  340. $('#btnRegCompany').on('click', function () {
  341. var comnameValue = $.trim($('input[name="companyname"]').val());
  342. var contactValue = $.trim($('input[name="contact"]').val());
  343. var telephoneValue = $.trim($('input[name="company_mobile"]').val());
  344. var landlineValue = $.trim($('#landline_tel').val());
  345. var usernameValue = $.trim($('input[name="username"]').val());
  346. var emailValue = $.trim($('input[name="email"]').val());
  347. var emailpassword = $.trim($('input[name="company_password"]').val());
  348. var emailpasswordVerify = $.trim($('input[name="company_password_confirmation"]').val());
  349. var agreementValue = $('input[name=agreement]').val();
  350. if(!comnameValue){
  351. qsToast({type:2,context: '请填写公司名称'});
  352. return false;
  353. }
  354. if(!remoteValid('companyname',comnameValue)){
  355. qsToast({type:2,context: '该公司已被注册'});
  356. return false;
  357. }
  358. if(!contactValue){
  359. qsToast({type:2,context: '请填写联系人'});
  360. return false;
  361. }
  362. if(!telephoneValue && !landlineValue){
  363. qsToast({type:2,context: '公司座机和手机号码至少填写一项'});
  364. return false;
  365. }else if(telephoneValue && !landlineValue){
  366. if(!inputRegValiMobile(telephoneValue)){
  367. qsToast({type:2,context: '手机号格式错误'});
  368. return false;
  369. }
  370. if(!remoteValid('mobile',telephoneValue)){
  371. qsToast({type:2,context: '该手机号已被注册'});
  372. return false;
  373. }
  374. }else if(telephoneValue && landlineValue){
  375. if(!inputRegValiMobile(telephoneValue)){
  376. qsToast({type:2,context: '手机号格式错误'});
  377. return false;
  378. }
  379. if(!remoteValid('mobile',telephoneValue)){
  380. qsToast({type:2,context: '该手机号已被注册'});
  381. return false;
  382. }
  383. }
  384. if(!usernameValue){
  385. qsToast({type:2,context: '请填写用户名'});
  386. return false;
  387. }
  388. if(!inputRegValiUsername(usernameValue)){
  389. qsToast({type:2,context: '用户名字母开头,包含6位以上数字和字母'});
  390. return false;
  391. }
  392. if(!remoteValid('username',usernameValue)){
  393. qsToast({type:2,context: '该用户名已被注册'});
  394. return false;
  395. }
  396. if(!emailValue){
  397. qsToast({type:2,context: '请填写邮箱'});
  398. return false;
  399. }
  400. if(!inputRegValiEmail(emailValue)){
  401. qsToast({type:2,context: '邮箱格式错误'});
  402. return false;
  403. }
  404. if(!remoteValid('email',emailValue)){
  405. qsToast({type:2,context: '该邮箱已被注册'});
  406. return false;
  407. }
  408. if(!emailpassword){
  409. qsToast({type:2,context: '请填写密码'});
  410. return false;
  411. }
  412. if(!inputRegValiPassword(emailpassword)){
  413. qsToast({type:2,context: '密码长度要求为6-16个字符'});
  414. return false;
  415. }
  416. if(!emailpasswordVerify){
  417. qsToast({type:2,context: '请填写确认密码'});
  418. return false;
  419. }
  420. if(!inputRegValiPassword(emailpasswordVerify)){
  421. qsToast({type:2,context: '密码长度要求为6-16个字符'});
  422. return false;
  423. }
  424. if(!inputRegValiPasswordRepeat(emailpassword,emailpasswordVerify)){
  425. qsToast({type:2,context: '两次输入的密码不一致'});
  426. return false;
  427. }
  428. if (agreementValue !=1) {
  429. qsToast({type:2,context: '请接受用户服务协议'});
  430. return false;
  431. }
  432. regCompanyHandler();
  433. });
  434. // 注册企业处理程序
  435. function regCompanyHandler() {
  436. $('#btnRegCompany').text('注册中...').addClass('btn_disabled').prop('disabled', !0);
  437. $.ajax({
  438. url: "{{route($sub_site.'mobile.register.company')}}",
  439. type: 'POST',
  440. dataType: 'json',
  441. data: $('#registerForm').serialize(),
  442. success: function (data) {
  443. qsToast({type:2,context: "注册成功,正在为你跳转.."});
  444. setTimeout(function () {
  445. window.location.href = data.data.url;
  446. },1000)
  447. },
  448. error:function(errorData){
  449. $('#btnRegCompany').text('注册企业会员').removeClass('btn_disabled').prop('disabled', 0);
  450. var response=$.parseJSON(errorData.response);
  451. if (errorData.status==422) {//验证错误
  452. $.each(response.errors,function (key,val) {
  453. qsToast({type:2,context: val[0]});
  454. return false;
  455. });
  456. }
  457. else if(errorData.status==400) {//业务错误
  458. qsToast({type:2,context: response.message});
  459. }
  460. }
  461. });
  462. }
  463. $('input[name=company_mobile]').keyup(function () {
  464. var currentValue = $(this).val();
  465. if (currentValue.length >= 11) {
  466. if(regularMobile.test(currentValue) && !remoteValid('mobile',currentValue)) {
  467. $('.had-remind-box .mal').text('手机号 ' + currentValue + ' 已注册,');
  468. $('.had-remind-box').show();
  469. } else {
  470. $('.had-remind-box').hide();
  471. }
  472. } else {
  473. $('.had-remind-box').hide();
  474. }
  475. })
  476. /**
  477. * 验证用户名等是否重复
  478. * @param validType 验证类型
  479. * @param validValue 值
  480. * @returns {boolean|*}
  481. */
  482. function remoteValid(validType, validValue){
  483. var result = false;
  484. $.ajax({
  485. url: "{{route('register.check', ['utype'=>1])}}",
  486. cache: false,
  487. async: false,
  488. type: 'post',
  489. dataType: 'json',
  490. data: { type: validType, param: validValue },
  491. success: function(json) {
  492. result = true;
  493. }
  494. });
  495. return result;
  496. }
  497. /**
  498. * 验证固话->区号
  499. * @param value 区号
  500. * @returns {boolean}
  501. */
  502. function inputRegValiZone(value){
  503. var achoice = true;
  504. if (value!= "" && !regularTelFirst.test(value)) {
  505. achoice = false;
  506. }
  507. return achoice;
  508. }
  509. /**
  510. * 验证固话->电话
  511. * @param value 电话
  512. * @returns {boolean}
  513. */
  514. function inputRegValiTelNext(value){
  515. var achoice = true;
  516. if (value!= "" && !regularTelNext.test(value)) {
  517. achoice = false;
  518. }
  519. return achoice;
  520. }
  521. /**
  522. * 验证固话->分机号
  523. * @param value 分机号
  524. * @returns {boolean}
  525. */
  526. function validNumber(value) {
  527. var achoice = true;
  528. if (value!= "" && !regularTelLast.test(value)) {
  529. achoice = false;
  530. }
  531. return achoice;
  532. }
  533. /**
  534. * 验证手机号
  535. * @param value 手机号
  536. * @returns {boolean}
  537. */
  538. function inputRegValiMobile(value){
  539. var achoice = true;
  540. if (value!= "" && !regularMobile.test(value)) {
  541. achoice = false;
  542. }
  543. return achoice;
  544. }
  545. /**
  546. * 验证用户名
  547. * @param value 用户名
  548. * @returns {boolean}
  549. */
  550. function inputRegValiUsername(value){
  551. var regularUsername = /^(?=[\u4e00-\u9fa5a-zA-Z])(?!\d+)[\u4e00-\u9fa5\w.]{6,20}$/;
  552. var achoice = true;
  553. if (!regularUsername.test(value)) {
  554. achoice = false;
  555. }
  556. return achoice;
  557. }
  558. /**
  559. * 验证邮箱
  560. * @param value 邮箱
  561. * @returns {boolean}
  562. */
  563. function inputRegValiEmail(value){
  564. var achoice = true;
  565. if (!regularEmail.test(value)) {
  566. achoice = false;
  567. }
  568. return achoice;
  569. }
  570. /**
  571. * 验证密码长度
  572. * @param value 密码
  573. * @returns {boolean}
  574. */
  575. function inputRegValiPassword(value){
  576. achoice = true;
  577. if(value.length>16 || value.length<6){
  578. achoice = false;
  579. }
  580. return achoice;
  581. }
  582. /**
  583. * 验证密码两次输入是否一致
  584. * @param password 第一次密码
  585. * @param passwordRepeat 第二次密码
  586. * @returns {boolean}
  587. */
  588. function inputRegValiPasswordRepeat(password,passwordRepeat){
  589. achoice = true;
  590. if(password!=passwordRepeat){
  591. achoice = false;
  592. }
  593. return achoice;
  594. }
  595. </script>
  596. @endsection