login.blade.php 19 KB

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