login.blade.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <!DOCTYPE html>
  2. <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <link rel="icon" href="{{asset('icon/faviconc.ico')}}" type="image/x-icon"/>
  7. <!-- CSRF Token -->
  8. <meta name="csrf-token" content="{{ csrf_token() }}">
  9. <title>宝时物流网站</title>
  10. <link href="{{ mix('css/app.css') }}" rel="stylesheet">
  11. <link href="{{ mix('css/reset.css') }}" rel="stylesheet">
  12. <link href="{{ mix('css/swiper-bundle.min.css') }}" rel="stylesheet">
  13. <!--[if lt IE 9]>
  14. <script type="text/javascript" src="{{mix('js/login/html5.js')}}"></script>
  15. <script type="text/javascript" src="{{mix('js/login/respond.min.js')}}"></script>
  16. <script type="text/javascript" src="{{mix('js/login/PIE_IE678.js')}}"></script>
  17. <![endif]-->
  18. <script type="text/javascript" src="{{mix('js/login/jquery-1.9.min.js')}}"></script>
  19. <script type="text/javascript" src="{{mix('js/login/swiper-bundle.min.js')}}"></script>
  20. </head>
  21. <body>
  22. <div class="lgoinbox" id="list">
  23. <div class="left swiper-container">
  24. <div class="swiper-wrapper" id="swiper">
  25. <div class="swiper-slide" style="background-image: url('{{url("images/login/log01.jpg")}}');"><a href="#"></a></div>
  26. <!-- 将来需要轮播的时候,启用这段代码 -->
  27. <!-- <div class="swiper-slide" style="background-image: url(images/log01.jpg);"><a href="#"></a></div>
  28. <div class="swiper-slide" style="background-image: url(images/log01.jpg);"><a href="#"></a></div> -->
  29. </div>
  30. <!-- Add Pagination -->
  31. <!-- <div class="swiper-pagination"></div>-->
  32. </div>
  33. <div class="right">
  34. <div class="formbox">
  35. <div class="logo"><img src="{{url('images/login/loglogo.png')}}" alt=""></div>
  36. <ul>
  37. <li v-if="message"><div class="text-primary">
  38. @{{ message }}
  39. </div></li>
  40. <li v-if="errorMessage">
  41. <div class="text-danger">
  42. @{{ errorMessage }}
  43. </div>
  44. </li>
  45. <li>
  46. <input class="input" name="" type="text" placeholder="用户名" v-model="inputting.name" @click="errorMessage =null">
  47. <div class="bar"></div>
  48. </li>
  49. <li>
  50. <input class="input" name="" type="password" placeholder="密码" v-model="inputting.password" @click="errorMessage =null" @keydown.enter="login">
  51. <div class="bar"></div>
  52. </li>
  53. <li>
  54. <button class="inbtn" type="button" value="登录" @click="login">
  55. 登录
  56. </button>
  57. {{-- <input class="inbtn" name="" type="button" value="登录" onclick="loginSubmit"></li>--}}
  58. {{-- <li class="lia"><a href="#" class="a1">立即注册</a><a class="a2" href="#">忘记密码?</a></li>--}}
  59. </ul>
  60. </div>
  61. <div class="banquan">沪ICP备19020374号-1 Copyright © 2021</div>
  62. </div>
  63. </div>
  64. </body>
  65. <script type="text/javascript" src="{{mix('js/app.js')}}"></script>
  66. <script>
  67. let vue = new Vue({
  68. el: "#list",
  69. data: {
  70. inputting: {name: '', password: '', is_json: true},
  71. errors: {name: [], password: [],},
  72. message:null,
  73. errorMessage:null,
  74. bannerSwiper:null,
  75. },
  76. mounted: function () {
  77. this.bannerSwiper = new Swiper('.swiper-container', {
  78. pagination: '.swiper-pagination',
  79. paginationClickable: true,
  80. autoplay: 2500,
  81. autoplayDisableOnInteraction: false,
  82. loop: false,
  83. });
  84. document.onkeydown = (e)=> {
  85. var key = window.event.keyCode
  86. if (key === 13) {
  87. this.login();
  88. }
  89. }
  90. },
  91. methods: {
  92. passwordInput: function (e) {
  93. setTimeout(function () {
  94. vue.errors.password = ''
  95. }, 10);
  96. if (e.key === 'Enter') {
  97. loginSubmit()
  98. }
  99. },
  100. login(){
  101. this.message = '正在登录';
  102. window.axios.post('{{ route('login') .'?rand='.microtime(true)}}',this.inputting).then(res=>{
  103. this.message = null;
  104. if (res.data.success !== true) {
  105. if (res.data.errors) {
  106. let message = null;
  107. for (const resKey in res.data.errors) {
  108. if (message) break;
  109. if (res.data.errors[`${resKey}`]){
  110. message = res.data.errors[`${resKey}`][0];
  111. }
  112. }
  113. this.errorMessage = message;
  114. return;
  115. }
  116. if (res.data.message) {
  117. this.errorMessage = res.data.message;
  118. return;
  119. }
  120. } else {
  121. this.message = '登录成功!';
  122. localStorage.setItem("menus", JSON.stringify(res.data.menus));
  123. location = res.data.url;
  124. }
  125. }).catch(err=>{
  126. tempTip.setDuration(6000);
  127. tempTip.waitingTip('错误');
  128. });
  129. }
  130. }
  131. });
  132. function loginSubmit() {
  133. tempTip.setDuration(99999);
  134. tempTip.waitingTip('提交中');
  135. axios.post('{{ route('login') .'?rand='.microtime(true)}}', vue.inputting).then(function (response) {
  136. tempTip.setDuration(2000);
  137. tempTip.cancelWaitingTip();
  138. if (response.data.success !== true) {
  139. if (response.data.errors) {
  140. vue.errors = response.data.errors;
  141. return;
  142. }
  143. if (response.data.message) {
  144. tempTip.show(response.data.message)
  145. return;
  146. }
  147. } else {
  148. tempTip.setDuration(99999);
  149. tempTip.waitingTip('页面跳转中');
  150. localStorage.setItem("menus", JSON.stringify(response.data.menus));
  151. location = response.data.url;
  152. }
  153. }).catch(function (response) {
  154. tempTip.setDuration(6000);
  155. tempTip.waitingTip('错误');
  156. })
  157. }
  158. </script>
  159. </html>