login.blade.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. @extends('module.layouts.empty')
  2. @push('meta')
  3. @endpush
  4. @push('css')
  5. <link href="{{ theme_asset('app/css/login.css') }}" rel="stylesheet">
  6. <link href="{{ theme_asset('app/css/common.css') }}" rel="stylesheet">
  7. @endpush
  8. @push('js')
  9. <script type="text/javascript" src="{{ theme_asset('gt/gt.js') }}"></script>
  10. <script type="text/javascript" src="{{ theme_asset('gt/gt.handle.js') }}"></script>
  11. <script src="https://captcha.253.com/TCaptcha.js"></script>
  12. @endpush
  13. @section('content')
  14. <div class="login-box">
  15. <div class="login-logo"><a href="{{route('jkq.home')}}"><img src="{{upload_asset(subsite_config('aix.system.site.site.logo'))}}" alt="logo"/></a></div>
  16. <!--个人会员登录-->
  17. <div class="login-box-per-body">
  18. <div class="login-box-header">
  19. <p class="gohome" onclick="window.location.href='{{route('jkq.home')}}'">返回首页</p>
  20. <p class="header-title">个人会员登录</p>
  21. <p onclick="window.location='{{route('jkq.login.company')}}'" class="rightab">切到企业登录</p>
  22. </div>
  23. <div class="login-form">
  24. <div class="form-l">
  25. <div class="switch-title">
  26. <span class="active" data-type="1">普通账户登录</span>
  27. <span data-type="2">手机动态码登录</span>
  28. </div>
  29. <!--普通用户登录-->
  30. <div class="login-type user-login">
  31. <form id="form_account" action="{{route('jkq.login.account')}}" method="post">
  32. <input type="hidden" name="ticket" id="ticket">
  33. <input type="hidden" name="bizState" id="bizState">
  34. <input type="hidden" name="randstr" id="randstr">
  35. {{ csrf_field() }}
  36. <div id="account"></div>
  37. <div id="message_account"></div>
  38. <div class="form-group yhm">
  39. <div class="imgbg"></div>
  40. <input class="input-login" type="text" value="" name="account" placeholder="{{trans('auth.member.account.placeholder')}}"/>
  41. </div>
  42. <div id="password"></div>
  43. <div class="form-group mm">
  44. <div class="imgbg"></div>
  45. <input class="input-login" type="password" value="" name="password" placeholder="请输入密码"/>
  46. </div>
  47. <div class="txt-group">
  48. <input type="checkbox" name="autoLogin" value="1" checked />
  49. <span class="check-box yes" onclick="checkAutoLogin(this)">下次自动登录</span>
  50. <a class="txt-r" href="{{route('jkq.password.request')}}?utype=user" >忘记密码?</a>
  51. </div>
  52. <div>
  53. <input class="btn-group login-account" type="button" value="登录">
  54. </div>
  55. </form>
  56. </div>
  57. <!--手机登录-->
  58. <div class="login-type mob-login" style="display: none;">
  59. <form id="form_mobile" action="{{route('jkq.login.sms')}}" method="post">
  60. <input type="hidden" name="ticket" id="ticket1">
  61. <input type="hidden" name="bizState" id="bizState1">
  62. <input type="hidden" name="randstr" id="randstr1">
  63. {{ csrf_field() }}
  64. <div id="mobile"></div>
  65. <div id="message_mobile"></div>
  66. <div class="form-group yhm">
  67. <div class="imgbg"></div>
  68. <input class="input-login" type="text" value="" name="mobile" placeholder="请输入手机号"/>
  69. </div>
  70. <div id="code"></div>
  71. <div class="form-group mm">
  72. <div class="imgbg"></div>
  73. <input class="input-login code" type="text" value="" name="code" placeholder="请输入手机验证码"/>
  74. <input type="button" class="btn-getcode" value="获取验证码"/>
  75. </div>
  76. <div class="txt-group">
  77. <input type="checkbox" name="autoLogin" value="1" checked />
  78. <span class="check-box yes" onclick="checkAutoLogin(this)">下次自动登录</span>
  79. <a class="txt-r" href="{{route('jkq.password.request')}}" >忘记密码?</a>
  80. </div>
  81. <div >
  82. <input class="btn-group login-mobile" type="button" value="登录">
  83. </div>
  84. </form>
  85. </div>
  86. <div class="reg-link-box">
  87. 还没有账号?<a class="reg-txt register_user" url="{{route('jkq.register.index')}}" href="javascript:;" >立刻注册</a>
  88. </div>
  89. </div>
  90. <div class="form-r">
  91. <div id="thirdlogin-wechat-web" class="qr-code">
  92. </div>
  93. <div id="other-thirdlogin" class="appsparent">
  94. <p class="txt">使用合作账号直接登录</p>
  95. </div>
  96. </div>
  97. <div class="clear"></div>
  98. </div>
  99. </div>
  100. <div class="bottom-pic">
  101. <img src="{{theme_asset('app/images/login/login_bottom_pic.png')}}" class="bottom-pic"/>
  102. </div>
  103. </div>
  104. @endsection
  105. @section('script')
  106. <script type="text/javascript" src="{{theme_asset('app/js/jquery.disappear.tooltip.js ')}}"></script>
  107. @include('module.widgets.thirdlogin')
  108. <script>
  109. $(function () {
  110. // var is_need_geetest=0;//全局,是否使用极验.
  111. // var login_type=1;//登录模式,1用户账号登录,2用户手机登录,3企业登录.
  112. // var gt_call_back=function(captchaObj) {
  113. // captchaObj.onReady(function () {
  114. // //极验加载完成
  115. // });
  116. // captchaObj.onSuccess(function () {
  117. // ajax_login(login_type,captchaObj);
  118. //
  119. // });
  120. // captchaObj.onError(function () {
  121. // show_error(login_type,"请先进行验证");
  122. // });
  123. // captchaObj.onClose(function () {
  124. // show_error(login_type,"请先进行验证");
  125. // });
  126. // $('.login-account').on('click', function () {
  127. // login_type=1;
  128. // //clean_message();
  129. // if (is_need_geetest==1){
  130. // captchaObj.bindForm("#form_account");
  131. // captchaObj.verify();
  132. // }
  133. // else{
  134. // ajax_login(login_type,captchaObj);
  135. // }
  136. //
  137. // });
  138. //
  139. // $('.login-mobile').on('click', function () {
  140. // login_type=2;
  141. // //clean_message();
  142. // if (is_need_geetest==1){
  143. // captchaObj.bindForm("#form_mobile");
  144. // captchaObj.verify();
  145. // }
  146. // else{
  147. // ajax_login(login_type,captchaObj);
  148. // }
  149. // });
  150. //
  151. // $('.login-company').on('click', function () {
  152. // login_type=3;
  153. // //clean_message();
  154. // if (is_need_geetest==1){
  155. // captchaObj.bindForm("#form_company");
  156. // captchaObj.verify();
  157. // }
  158. // else{
  159. // ajax_login(login_type,captchaObj);
  160. // }
  161. // });
  162. // };
  163. var captcha_callback = function(res){
  164. if(res.hasOwnProperty('errorMessage')){
  165. alert(res.errorMessage)
  166. }
  167. if(res.ret == 0){
  168. console.log('行为验证通过');
  169. $("#ticket").val(res.ticket);
  170. $("#bizState").val(res.bizState);
  171. $("#randstr").val(res.randstr);
  172. ajax_login(1);
  173. }else{
  174. console.log('用户主动关闭验证码')
  175. }
  176. console.log('callback:', res);
  177. }
  178. var mobile_captcha_flag = false;
  179. var mobile_captcha_callback = function(res){
  180. if(res.hasOwnProperty('errorMessage')){
  181. alert(res.errorMessage)
  182. }
  183. if(res.ret == 0){
  184. mobile_captcha_flag = true;
  185. console.log('行为验证通过');
  186. $("#ticket1").val(res.ticket);
  187. $("#bizState1").val(res.bizState);
  188. $("#randstr1").val(res.randstr);
  189. submit_data={
  190. "mobile":$("input[name='mobile']").val(),
  191. "type":"login",
  192. "ticket": res.ticket,
  193. "bizState": res.bizState,
  194. "randstr": res.randstr
  195. };
  196. $.ajax({
  197. method: 'post',
  198. url: '{{route('sms.send')}}',
  199. data: submit_data,
  200. beforeSend:function () {
  201. // console.log('请求开始');
  202. $(".errinfo").text("");
  203. $(".errinfo").removeClass("errinfo");
  204. },
  205. complete:function() {
  206. console.log('请求结束');
  207. },
  208. success: function (data) {
  209. // console.log(data);
  210. $("#message_mobile").addClass("successinfo");
  211. $("#message_mobile").text("发送成功,请注意查收");
  212. settime();
  213. },
  214. error: function (errorData) {
  215. // console.log(errorData);
  216. if (errorData.status==422) {//验证错误
  217. $.each(errorData.responseJSON.errors,function (key,val) {
  218. $("#"+key).addClass("errinfo");
  219. $("#"+key).text(val[0]);
  220. });
  221. }
  222. else if(errorData.status==400) {//业务错误
  223. $("#message_mobile").addClass("errinfo");
  224. $("#message_mobile").text(errorData.responseJSON.message);
  225. }
  226. }
  227. });
  228. }else{
  229. console.log('用户主动关闭验证码')
  230. }
  231. console.log('callback:', res);
  232. }
  233. var captcha = new TencentCaptcha('196587903', captcha_callback, {});
  234. $('.login-account').on('click', function () {
  235. captcha.show();
  236. });
  237. var mobile_captcha = new TencentCaptcha('196587903', mobile_captcha_callback, {});
  238. $('.btn-getcode').on('click', function () {
  239. var mobile = $("input[name='mobile']").val();
  240. if(mobile == null || mobile == ''){
  241. $("#message_mobile").addClass("errinfo");
  242. $("#message_mobile").text("请输入手机号码");
  243. return false;
  244. }
  245. mobile_captcha.show();
  246. });
  247. $('.login-mobile').on('click', function () {
  248. login_type=2;
  249. if (mobile_captcha_flag){
  250. ajax_login(2);
  251. }
  252. else{
  253. alert('验证码组件异常')
  254. }
  255. });
  256. //gt_init(gt_call_back);//初始化极验
  257. $(".input-login").keydown(function(ev){
  258. ev = ev || window.event;
  259. var code = (ev.keyCode || ev.which);
  260. if (code == 10 || code == 13) {
  261. $(this).closest("form").find(".btn-group").click();
  262. }
  263. });
  264. $(".switch-title span").click(function () {
  265. var index = $(this).index();
  266. $(this).addClass("active").siblings("span").removeClass("active");
  267. $(".login-type").eq(index).show().siblings(".login-type").hide();
  268. });
  269. $(".register_user").click(function(){
  270. var url=$(this).attr("url")
  271. $.getJSON("{{route('jkq.register.status')}}", function (result) {
  272. if (result.status == 0) {
  273. disapperTooltip('remind', result.msg);
  274. } else{
  275. location.href=url;
  276. }
  277. });
  278. })
  279. function ajax_login(type) {
  280. console.log(type)
  281. if (type==1) {
  282. $.ajax({
  283. method: 'post',
  284. url: $("#form_account").attr('action'),
  285. data: $("#form_account").serialize(),
  286. beforeSend:function () {
  287. //console.log('请求开始');
  288. clean_message();
  289. $('.login-account').addClass("btn-disabled").prop('disabled', true);
  290. $('.login-account').val("登录中...");
  291. },
  292. complete:function() {
  293. //console.log('请求结束');
  294. $('.login-account').val("登录");
  295. $('.login-account').removeClass("btn-disabled").prop('disabled', false);
  296. },
  297. success: function (data) {
  298. //console.log(data);
  299. $("#message_account").addClass("successinfo");
  300. $("#message_account").text("登录成功, 正在跳转...");
  301. location.href=data.data.redirect_url;
  302. },
  303. error: function (errorData) {
  304. if (errorData.status==422) {//验证错误
  305. $.each(errorData.responseJSON.errors,function (key,val) {
  306. $("#"+key).addClass("errinfo");
  307. $("#"+key).text(val[0]);
  308. });
  309. }
  310. else if(errorData.status==400) {//业务错误
  311. $("#message_account").addClass("errinfo");
  312. $("#message_account").text(errorData.responseJSON.message);
  313. }
  314. }
  315. });
  316. }
  317. else if (type==2) {
  318. $.ajax({
  319. method: 'post',
  320. url: $("#form_mobile").attr('action'),
  321. data: $("#form_mobile").serialize(),
  322. beforeSend:function () {
  323. //console.log('请求开始');
  324. clean_message();
  325. $('.login-mobile').addClass("btn-disabled").prop('disabled', true);
  326. $('.login-mobile').val("登录中...");
  327. },
  328. complete:function() {
  329. //console.log('请求结束');
  330. $('.login-mobile').val("登录");
  331. $('.login-mobile').removeClass("btn-disabled").prop('disabled', false);
  332. },
  333. success: function (data) {
  334. //console.log(data);
  335. $("#message_mobile").addClass("successinfo");
  336. $("#message_mobile").text("登录成功, 正在跳转...");
  337. location.href=data.data.redirect_url;
  338. },
  339. error: function (errorData) {
  340. //console.log(errorData);
  341. if (is_need_geetest==1){
  342. captchaObj.reset();
  343. }
  344. if (errorData.status==422) {//验证错误
  345. $.each(errorData.responseJSON.errors,function (key,val) {
  346. $("#"+key).addClass("errinfo");
  347. $("#"+key).text(val[0]);
  348. });
  349. }
  350. else if(errorData.status==400) {//业务错误
  351. $("#message_mobile").addClass("errinfo");
  352. $("#message_mobile").text(errorData.responseJSON.message);
  353. is_need_geetest=errorData.responseJSON.errors.is_need_geetest;
  354. }
  355. }
  356. });
  357. }
  358. else if (type==3){
  359. $.ajax({
  360. method: 'post',
  361. url: $("#form_company").attr('action'),
  362. data: $("#form_company").serialize(),
  363. beforeSend:function () {
  364. //console.log('请求开始');
  365. clean_message();
  366. $('.login-company').addClass("btn-disabled").prop('disabled', true);
  367. $('.login-company').val("登录中...");
  368. },
  369. complete:function() {
  370. //console.log('请求结束');
  371. $('.login-company').val("登录");
  372. $('.login-company').removeClass("btn-disabled").prop('disabled', false);
  373. },
  374. success: function (data) {
  375. //console.log(data);
  376. $("#message_company").addClass("successinfo");
  377. $("#message_company").text("登录成功, 正在跳转...");
  378. location.href=data.data.redirect_url;
  379. },
  380. error: function (errorData) {
  381. //console.log(errorData);
  382. if (is_need_geetest==1){
  383. captchaObj.reset();
  384. }
  385. if (errorData.status==422) {//验证错误
  386. $.each(errorData.responseJSON.errors,function (key,val) {
  387. $("#"+key).addClass("errinfo");
  388. $("#"+key).text(val[0]);
  389. });
  390. }
  391. else if(errorData.status==400) {//业务错误
  392. $("#message_company").addClass("errinfo");
  393. $("#message_company").text(errorData.responseJSON.message);
  394. is_need_geetest=errorData.responseJSON.errors.is_need_geetest;
  395. }
  396. }
  397. });
  398. }
  399. };
  400. function show_error(type,message) {
  401. if (type==1) {
  402. $("#message_account").addClass("errinfo");
  403. $("#message_account").text(message);
  404. }
  405. else if (type==2) {
  406. $("#message_mobile").addClass("errinfo");
  407. $("#message_mobile").text(message);
  408. }
  409. else if (type==3){
  410. $("#message_company").addClass("errinfo");
  411. $("#message_company").text(message);
  412. }
  413. };
  414. function clean_message() {
  415. $(".errinfo").text("");
  416. $(".errinfo").removeClass("errinfo");
  417. $(".successinfo").text("");
  418. $(".successinfo").removeClass("successinfo");
  419. }
  420. });
  421. function checkAutoLogin(obj) {
  422. var isCheck = $(obj).hasClass("yes");
  423. if (isCheck) {
  424. $(obj).removeClass("yes");
  425. $(obj).closest(".txt-group").find("input[name=autoLogin]").prop("checked", false);
  426. } else {
  427. $(obj).addClass("yes");
  428. $(obj).closest(".txt-group").find("input[name=autoLogin]").prop("checked", true);
  429. }
  430. }
  431. // 倒计时
  432. var countdown = 60;
  433. function settime() {
  434. if (countdown == 0) {
  435. $('.btn-getcode').prop("disabled", false);
  436. $('.btn-getcode').removeClass('btn-disabled');
  437. $('.btn-getcode').val('获取验证码');
  438. countdown = 60;
  439. return;
  440. } else {
  441. $('.btn-getcode').prop("disabled", true);
  442. $('.btn-getcode').addClass('btn-disabled');
  443. $('.btn-getcode').val('重新发送' + countdown + '秒');
  444. countdown--;
  445. }
  446. setTimeout(function() {
  447. settime()
  448. },1000)
  449. }
  450. </script>
  451. @endsection