login.blade.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393
  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.login.mobile')}}'">手机动态码登录<div class="b-line"></div></div>
  16. <div class="clear"></div>
  17. </div>
  18. <div class="split-block"></div>
  19. <form method="post" id="form_account" action="{{route($sub_site.'mobile.login')}}">
  20. <input type="hidden" name="ticket" id="ticket">
  21. <input type="hidden" name="bizState" id="bizState">
  22. <input type="hidden" name="randstr" id="randstr">
  23. {{ csrf_field() }}
  24. <div class="loging-input-group">
  25. <div class="group-list">
  26. <div class="g-close"></div>
  27. <input id="account" name="account" type="text" class="l-input j-l-input font14" placeholder="请输入用户名/手机/邮箱" autocomplete="off">
  28. </div>
  29. <div class="group-list pwd">
  30. <div class="g-close"></div>
  31. <input id="password" name="password" type="text" onfocus="this.type='password'" class="l-input j-l-input font14" placeholder="请输入密码" autocomplete="off">
  32. </div>
  33. </div>
  34. <div class="l-tool-bar list_height">
  35. <div class="auto-loging">
  36. <div class="for-checkbox active" id="for-checkbox">下次自动登录</div>
  37. </div>
  38. <div class="for-pwd link_gray6"><a href="{{route($sub_site.'mobile.password.request')}}">忘记密码</a></div>
  39. <div class="clear"></div>
  40. </div>
  41. <div id="pop" style="display:none"></div>
  42. <input type="hidden" name="autoLogin" id="autoLogin" value="1" >
  43. </form>
  44. <div class="btn-spacing login-account"><a id="loginBtn" href="javascript:;" class="qs-btn qs-btn-blue font18">登录</a></div>
  45. <div class="qs-center login-btn-group">
  46. <div class="login-btn-group-box">
  47. <a url="{{route($sub_site.'mobile.register.index')}}" class="qs-btn qs-btn-medium qs-btn-border-orange font14 register_user" url="{{route($sub_site.'register.index')}}" href="javascript:;" style="width: 2.45rem;">立即注册</a>
  48. <a href="{{route($sub_site.'mobile.login.company')}}" class="qs-btn qs-btn-medium qs-btn-border-blue font14" style="width: 2.45rem;margin-left: .5rem">企业用户登录</a>
  49. <div class="clear"></div>
  50. </div>
  51. </div>
  52. <div class="qs-center coop-title">使用合作账号登录/注册</div>
  53. <div class="coop-group qs-center" >
  54. <div class="coop-cell" id="other-thirdlogin">
  55. </div>
  56. <div class="clear"></div>
  57. </div>
  58. @endsection
  59. @section('script')
  60. @include('mobile.module.widgets.thirdlogin')
  61. <script>
  62. $(function () {
  63. var is_need_geetest=0;//全局,是否使用极验.
  64. var login_type=1;//登录模式,1用户账号登录,2用户手机登录,3企业登录.
  65. var gt_call_back=function(captchaObj) {
  66. captchaObj.onReady(function () {
  67. //极验加载完成
  68. });
  69. captchaObj.onSuccess(function () {
  70. ajax_login(login_type,captchaObj);
  71. });
  72. captchaObj.onError(function () {
  73. // qsToast({type:2,context: "请先进行验证"});
  74. });
  75. captchaObj.onClose(function () {
  76. // qsToast({type:2,context: "请先进行验证"});
  77. });
  78. $('.login-account').on('click', function () {
  79. var usernameValue = $.trim($('input[name=account]').val());
  80. var passwordValue = $.trim($('input[name=password]').val());
  81. if (usernameValue == '') {
  82. qsToast({type:2,context: '请输入用户名/手机号'});
  83. return false;
  84. }
  85. if (passwordValue == '') {
  86. qsToast({type:2,context: '请输入密码'});
  87. return false;
  88. }
  89. login_type=1;
  90. //clean_message();
  91. if (is_need_geetest==1){
  92. captchaObj.bindForm("#form_account");
  93. captchaObj.verify();
  94. }
  95. else{
  96. ajax_login(login_type,captchaObj);
  97. }
  98. });
  99. $('.login-mobile').on('click', function () {
  100. login_type=2;
  101. //clean_message();
  102. if (is_need_geetest==1){
  103. captchaObj.bindForm("#form_mobile");
  104. captchaObj.verify();
  105. }
  106. else{
  107. ajax_login(login_type,captchaObj);
  108. }
  109. });
  110. $(".register_user").click(function(){
  111. var url=$(this).attr("url")
  112. $.getJSON("{{route($sub_site.'register.status')}}", function (result) {
  113. if (result.status == 0) {
  114. qsToast({type:2,context: result.msg});
  115. } else{
  116. location.href=url;
  117. }
  118. });
  119. })
  120. $('.login-company').on('click', function () {
  121. login_type=3;
  122. //clean_message();
  123. if (is_need_geetest==1){
  124. captchaObj.bindForm("#form_company");
  125. captchaObj.verify();
  126. }
  127. else{
  128. ajax_login(login_type,captchaObj);
  129. }
  130. });
  131. };
  132. //gt_init(gt_call_back);//初始化极验
  133. var captcha_callback = function(res){
  134. if(res.hasOwnProperty('errorMessage')){
  135. alert(res.errorMessage)
  136. }
  137. if(res.ret == 0){
  138. console.log('行为验证通过');
  139. $("#ticket").val(res.ticket);
  140. $("#bizState").val(res.bizState);
  141. $("#randstr").val(res.randstr);
  142. ajax_login(1);
  143. }else{
  144. console.log('用户主动关闭验证码')
  145. }
  146. console.log('callback:', res);
  147. };
  148. var captcha = new TencentCaptcha('196587903', captcha_callback, {});
  149. $('.login-account').on('click', function () {
  150. var usernameValue = $.trim($('input[name=account]').val());
  151. var passwordValue = $.trim($('input[name=password]').val());
  152. if (usernameValue == '') {
  153. qsToast({type:2,context: '请输入用户名/手机号'});
  154. return false;
  155. }
  156. if (passwordValue == '') {
  157. qsToast({type:2,context: '请输入密码'});
  158. return false;
  159. }
  160. ajax_login(1);
  161. captcha.show();
  162. });
  163. $(".input-login").keydown(function(ev){
  164. ev = ev || window.event;
  165. var code = (ev.keyCode || ev.which);
  166. if (code == 10 || code == 13) {
  167. $(this).closest("form").find(".btn-group").click();
  168. }
  169. });
  170. // 自动登录
  171. $('#for-checkbox').on('click', function() {
  172. $(this).toggleClass('active');
  173. if ($(this).hasClass('active')) {
  174. $('#autoLogin').val('1');
  175. } else {
  176. $('#autoLogin').val('0');
  177. }
  178. })
  179. $('.btn-getcode').on('click', function () {
  180. submit_data={
  181. "mobile":$("input[name='mobile']").val(),
  182. "type":"login"
  183. };
  184. $.ajax({
  185. method: 'post',
  186. url: '{{route('sms.send')}}',
  187. data: submit_data,
  188. beforeSend:function () {
  189. // console.log('请求开始');
  190. $(".errinfo").text("");
  191. $(".errinfo").removeClass("errinfo");
  192. },
  193. complete:function() {
  194. console.log('请求结束');
  195. },
  196. success: function (data) {
  197. // console.log(data);
  198. $("#message_mobile").addClass("successinfo");
  199. $("#message_mobile").text("发送成功,请注意查收");
  200. settime();
  201. },
  202. error: function (errorData) {
  203. // console.log(errorData);
  204. if (errorData.status==422) {//验证错误
  205. $.each(errorData.responseJSON.errors,function (key,val) {
  206. $("#"+key).addClass("errinfo");
  207. $("#"+key).text(val[0]);
  208. });
  209. }
  210. else if(errorData.status==400) {//业务错误
  211. $("#message_mobile").addClass("errinfo");
  212. $("#message_mobile").text(errorData.responseJSON.message);
  213. }
  214. }
  215. });
  216. });
  217. function ajax_login(type, captchaObj) {
  218. if (type==1) {
  219. $.ajax({
  220. type: 'post',
  221. url: $("#form_account").attr('action'),
  222. data: $("#form_account").serialize(),
  223. beforeSend:function () {
  224. //console.log('请求开始');
  225. },
  226. complete:function() {
  227. //console.log('请求结束');
  228. },
  229. success: function (data) {
  230. //console.log(data);
  231. qsToast({type:2,context: "登录成功, 正在跳转..."});
  232. location.href=data.data.redirect_url+'?token='+data.data.token;
  233. },
  234. error: function (errorData) {
  235. //console.log(errorData);
  236. var response=$.parseJSON(errorData.response);
  237. if (errorData.status==422) {//验证错误
  238. $.each(response.errors,function (key,val) {
  239. qsToast({type:2,context: val[0]});
  240. return false;
  241. });
  242. }
  243. else if(errorData.status==400) {//业务错误
  244. qsToast({type:2,context: response.message});
  245. //is_need_geetest=response.errors.is_need_geetest;
  246. }
  247. }
  248. });
  249. }
  250. else if (type==2) {
  251. $.ajax({
  252. method: 'post',
  253. url: $("#form_mobile").attr('action'),
  254. data: $("#form_mobile").serialize(),
  255. beforeSend:function () {
  256. //console.log('请求开始');
  257. clean_message();
  258. $('.login-mobile').addClass("btn-disabled").prop('disabled', true);
  259. $('.login-mobile').val("登录中...");
  260. },
  261. complete:function() {
  262. //console.log('请求结束');
  263. $('.login-mobile').val("登录");
  264. $('.login-mobile').removeClass("btn-disabled").prop('disabled', false);
  265. },
  266. success: function (data) {
  267. //console.log(data);
  268. $("#message_mobile").addClass("successinfo");
  269. $("#message_mobile").text("登录成功, 正在跳转...");
  270. location.href=data.data.redirect_url+'?token='+data.data.token;
  271. },
  272. error: function (errorData) {
  273. //console.log(errorData);
  274. if (is_need_geetest==1){
  275. captchaObj.reset();
  276. }
  277. if (errorData.status==422) {//验证错误
  278. $.each(errorData.responseJSON.errors,function (key,val) {
  279. $("#"+key).addClass("errinfo");
  280. $("#"+key).text(val[0]);
  281. });
  282. }
  283. else if(errorData.status==400) {//业务错误
  284. $("#message_mobile").addClass("errinfo");
  285. $("#message_mobile").text(errorData.responseJSON.message);
  286. is_need_geetest=errorData.responseJSON.errors.is_need_geetest;
  287. }
  288. }
  289. });
  290. }
  291. else if (type==3){
  292. $.ajax({
  293. method: 'post',
  294. url: $("#form_company").attr('action'),
  295. data: $("#form_company").serialize(),
  296. beforeSend:function () {
  297. //console.log('请求开始');
  298. clean_message();
  299. $('.login-company').addClass("btn-disabled").prop('disabled', true);
  300. $('.login-company').val("登录中...");
  301. },
  302. complete:function() {
  303. //console.log('请求结束');
  304. $('.login-company').val("登录");
  305. $('.login-company').removeClass("btn-disabled").prop('disabled', false);
  306. },
  307. success: function (data) {
  308. //console.log(data);
  309. $("#message_company").addClass("successinfo");
  310. $("#message_company").text("登录成功, 正在跳转...");
  311. location.href=data.data.redirect_url+'?token='+data.data.token;
  312. },
  313. error: function (errorData) {
  314. //console.log(errorData);
  315. if (is_need_geetest==1){
  316. captchaObj.reset();
  317. }
  318. if (errorData.status==422) {//验证错误
  319. $.each(errorData.responseJSON.errors,function (key,val) {
  320. $("#"+key).addClass("errinfo");
  321. $("#"+key).text(val[0]);
  322. });
  323. }
  324. else if(errorData.status==400) {//业务错误
  325. $("#message_company").addClass("errinfo");
  326. $("#message_company").text(errorData.responseJSON.message);
  327. is_need_geetest=errorData.responseJSON.errors.is_need_geetest;
  328. }
  329. }
  330. });
  331. }
  332. };
  333. });
  334. // 倒计时
  335. var countdown = 60;
  336. function settime() {
  337. if (countdown == 0) {
  338. $('.btn-getcode').prop("disabled", false);
  339. $('.btn-getcode').removeClass('btn-disabled');
  340. $('.btn-getcode').val('获取验证码');
  341. countdown = 60;
  342. return;
  343. } else {
  344. $('.btn-getcode').prop("disabled", true);
  345. $('.btn-getcode').addClass('btn-disabled');
  346. $('.btn-getcode').val('重新发送' + countdown + '秒');
  347. countdown--;
  348. }
  349. setTimeout(function() {
  350. settime()
  351. },1000)
  352. }
  353. $('.gohome').on('click', function () {
  354. location.href="{{route($sub_site.'home')}}";
  355. });
  356. </script>
  357. @endsection