login_mobile.blade.php 16 KB

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