login.html 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. {include file="common/meta" /}
  5. <style type="text/css">
  6. body {
  7. color: #999;
  8. background-color: #f1f4fd;
  9. background-size: cover;
  10. }
  11. a {
  12. color: #444;
  13. }
  14. .login-screen {
  15. max-width: 400px;
  16. padding: 0;
  17. margin: 100px auto 0 auto;
  18. }
  19. .login-screen .well {
  20. border-radius: 3px;
  21. -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  22. box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  23. background: rgba(255,255,255, 0.2);
  24. }
  25. @media (max-width: 767px) {
  26. .login-screen {
  27. padding: 0 20px;
  28. }
  29. }
  30. .profile-img-card {
  31. width: 100px;
  32. height: 100px;
  33. display: block;
  34. -moz-border-radius: 50%;
  35. -webkit-border-radius: 50%;
  36. border-radius: 50%;
  37. margin: 10px auto;
  38. /*border: 5px solid #fff;*/
  39. }
  40. .profile-name-card {
  41. text-align: center;
  42. }
  43. .login-head {
  44. background: #899fe1;
  45. }
  46. /* .login-form {
  47. padding: 40px 30px;
  48. position: relative;
  49. z-index: 99;
  50. }*/
  51. #login-form {
  52. margin-top: 20px;
  53. }
  54. #login-form .input-group {
  55. margin-bottom: 15px;
  56. }
  57. #login-form .form-control {
  58. font-size: 13px;
  59. }
  60. #sms{
  61. display: none;
  62. }
  63. .change_login{
  64. margin: 0 auto;
  65. text-align: center;
  66. /*padding-top: 20px;*/
  67. font-size: 20px;
  68. }
  69. #pass_login{
  70. color: #fff;
  71. text-decoration: underline;
  72. cursor:pointer
  73. }
  74. #sms_login{
  75. cursor:pointer;
  76. color:#333;
  77. }
  78. #sms_login:hover,#pass_login:hover{
  79. color: #fff;
  80. text-decoration: underline;
  81. }
  82. #captcha{
  83. margin-top: 20px;
  84. }
  85. #captcha .input-group {
  86. margin-bottom: 15px;
  87. }
  88. </style>
  89. <!--@formatter:off-->
  90. {if $background}
  91. <style type="text/css">
  92. body{
  93. background-image: url('{$background}');
  94. }
  95. </style>
  96. {/if}
  97. <!--@formatter:on-->
  98. <script src="__CDN__/assets/js/jquery.js"></script>
  99. </head>
  100. <body>
  101. <div class="container">
  102. <div class="login-wrapper">
  103. <div class="login-screen">
  104. <div class="well">
  105. <!-- <div class="login-head">-->
  106. <div class="change_login"><span id="pass_login">密码登录</span> | <span id="sms_login">验证码登录</span></div>
  107. <!-- <img src="__CDN__/assets/img/login-head.png" style="width:100%;"/>-->
  108. <!-- </div>-->
  109. <div class="login-form" id="pass">
  110. <img id="profile-img" class="profile-img-card" src="/assets/img/avatar.png"/>
  111. <p id="profile-name" class="profile-name-card"></p>
  112. <form action="" method="post" id="login-form">
  113. <!--@AdminLoginFormBegin-->
  114. <div id="errtips" class="hide"></div>
  115. {:token()}
  116. <div class="input-group">
  117. <div class="input-group-addon"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></div>
  118. <input type="text" class="form-control" id="pd-form-username" placeholder="{:__('Username')}" name="username" autocomplete="off" value="" data-rule="{:__('Username')}:required;username"/>
  119. </div>
  120. <div class="input-group">
  121. <div class="input-group-addon"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></div>
  122. <input type="password" class="form-control" id="pd-form-password" placeholder="{:__('Password')}" name="password" autocomplete="off" value="" data-rule="{:__('Password')}:required;password"/>
  123. </div>
  124. <!--@CaptchaBegin-->
  125. {if $Think.config.fastadmin.login_captcha}
  126. <div class="input-group">
  127. <div class="input-group-addon"><span class="glyphicon glyphicon-option-horizontal" aria-hidden="true"></span></div>
  128. <input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="{:__('Captcha')}:required;length({$Think.config.captcha.length})" autocomplete="off"/>
  129. <span class="input-group-addon" style="padding:0;border:none;cursor:pointer;">
  130. <img src="{:rtrim('__PUBLIC__', '/')}/index.php?s=/captcha" width="100" height="30" onclick="this.src = '{:rtrim('__PUBLIC__', '/')}/index.php?s=/captcha&r=' + Math.random();"/>
  131. </span>
  132. </div>
  133. {/if}
  134. <!--@CaptchaEnd-->
  135. <div class="form-group checkbox">
  136. <label class="inline" for="keeplogin">
  137. <input type="checkbox" name="keeplogin" id="keeplogin" value="1"/>
  138. {:__('Keep login')}
  139. </label>
  140. </div>
  141. <div class="form-group">
  142. <button type="submit" class="btn btn-success btn-lg btn-block">{:__('Sign in')}</button>
  143. </div>
  144. <!--@AdminLoginFormEnd-->
  145. </form>
  146. </div>
  147. <!-- 验证码登录 -->
  148. <div class="login-form" id="sms">
  149. <img id="profile-img" class="profile-img-card" src="/assets/img/avatar.png" />
  150. <p id="profile-name" class="profile-name-card"></p>
  151. <form action="" method="post" id="captcha">
  152. <div id="errtips" class="hide"></div>
  153. {:token()}
  154. <div class="input-group">
  155. <div class="input-group-addon"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></div>
  156. <input type="text" class="form-control" id="pd-form-mobile" placeholder="{:__('Mobile')}" name="mobile" autocomplete="off" value="" />
  157. <div class="input-group-addon" id="getcaptcha" style="cursor:pointer;"><span id="get-captcha">{:__('Get captcha')}</span></div>
  158. </div>
  159. <div class="input-group">
  160. <div class="input-group-addon"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></div>
  161. <input type="password" class="form-control" id="pd-form-Captcha" placeholder="{:__('Captcha')}" name="captcha" autocomplete="off" value="" />
  162. </div>
  163. <div class="form-group checkbox">
  164. <label class="inline" for="keeplogin">
  165. <input type="checkbox" name="keeplogin" id="keeplogin" value="1"/>
  166. {:__('Keep login')}
  167. </label>
  168. </div>
  169. <div class="form-group">
  170. <button type="submit" class="btn btn-success btn-lg btn-block">{:__('Sign in')}</button>
  171. </div>
  172. </form>
  173. </div>
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. <script>
  179. // 切换选项卡
  180. $("#sms_login").click(function(){
  181. $(this).css('display','inline-block').css('text-decoration','underline').css('color','#fff');
  182. $("#pass_login").css('text-decoration','none').css('color','#333');
  183. $("#sms").css('display','block');
  184. $("#pass").css('display','none');
  185. })
  186. $("#pass_login").click(function(){
  187. $(this).css('display','inline-block').css('text-decoration','underline').css('color','#fff');
  188. $("#sms_login").css('text-decoration','none').css('color','#333');
  189. $("#sms").css('display','none');
  190. $("#pass").css('display','block');
  191. })
  192. //手机号失焦
  193. $("#pd-form-mobile").blur(()=>{
  194. let mobile = $("#pd-form-mobile").val()
  195. localStorage.setItem("mobile", mobile);
  196. })
  197. var sec=60;
  198. var countdown
  199. //获取验证码
  200. $("#getcaptcha").click(()=>{
  201. if(sec !== 60){
  202. return false;
  203. }
  204. let mobile = $("#pd-form-mobile").val()
  205. let regExp = new RegExp("^1[3578]\\d{9}$");
  206. if(regExp.test(mobile)){
  207. $.post('index/getCaptcha',{mobile:mobile},(res)=>{
  208. console.log(res);
  209. })
  210. //立马触发,,防止暴力点击
  211. setTimeout(()=>{
  212. $("#get-captcha").html('60秒后重新获取');
  213. sec--;
  214. },0)
  215. }else{
  216. layer.confirm('请输入正确的手机号');
  217. }
  218. countdown = setInterval(()=>{
  219. $("#get-captcha").html(sec+'秒后重新获取');
  220. sec--;
  221. // console.log(sec);
  222. if(sec < 0){
  223. clearInterval(countdown);
  224. sec=60;
  225. $("#get-captcha").html("{:__('Get captcha')}");
  226. }
  227. },1000)
  228. })
  229. //如果有缓存,读缓存,,,方便用户密码错误后不用重新输入电话号
  230. $(function(){
  231. let mobile = localStorage.getItem("mobile");
  232. if(mobile){
  233. $("#pd-form-mobile").val(mobile)
  234. }
  235. });
  236. </script>
  237. {include file="common/script" /}
  238. </body>
  239. </html>