Login.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <template>
  2. <div class="login" id="login">
  3. <a href="javascript:;" class="log-close"><i class="icons close"></i></a>
  4. <div class="log-bg">
  5. <div class="log-cloud cloud1"></div>
  6. <div class="log-cloud cloud2"></div>
  7. <div class="log-cloud cloud3"></div>
  8. <div class="log-cloud cloud4"></div>
  9. <div class="log-logo">Welcome!</div>
  10. <div class="log-text"></div>
  11. </div>
  12. <div class="log-email" v-loading="isLoging" >
  13. <input type="text" placeholder="用户名" :class="'log-input' + (username==''?' log-input-empty':'')" v-model="username"><input type="password" placeholder="密码" :class="'log-input' + (password==''?' log-input-empty':'')" v-model="password">
  14. <a href="javascript:;" class="log-btn" @click="login" >登录</a>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. import crypto from 'crypto'
  20. export default {
  21. name: 'Login',
  22. data(){
  23. return {
  24. isLoging: false,
  25. username: '',
  26. password: ''
  27. }
  28. },
  29. created(){
  30. var that = this;
  31. document.onkeydown = function(e) {
  32. var key = window.event.keyCode;
  33. if (key == 13) {
  34. that.login();
  35. }
  36. }
  37. },
  38. methods:{
  39. //登录逻辑
  40. login(){
  41. if(this.username!='' && this.password!=''){
  42. this.toLogin();
  43. }
  44. },
  45. //登录请求
  46. toLogin(){
  47. //一般要跟后端了解密码的加密规则
  48. //这里例子用的哈希算法来自./js/sha1.min.js
  49. //需要想后端发送的登录参数
  50. let loginParam = {
  51. username: this.username,
  52. password: crypto.createHash('md5').update(this.password, "utf8").digest('hex')
  53. }
  54. var that = this;
  55. //设置在登录状态
  56. this.isLoging = true;
  57. this.$axios.get("/auth/login",{
  58. params: loginParam
  59. } )
  60. .then(function (res) {
  61. console.log(JSON.stringify(res));
  62. if (res.data == "success") {
  63. that.$cookies.set("session", {"username": that.username}) ;
  64. //登录成功后
  65. that.$router.push('/');
  66. }
  67. })
  68. .catch(function (error) {
  69. that.$message.error(error.response.statusText);
  70. that.isLoging = false;
  71. });
  72. },
  73. setCookie: function (cname, cvalue, exdays) {
  74. var d = new Date();
  75. d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
  76. var expires = "expires=" + d.toUTCString();
  77. console.info(cname + "=" + cvalue + "; " + expires);
  78. document.cookie = cname + "=" + cvalue + "; " + expires;
  79. console.info(document.cookie);
  80. },
  81. }
  82. }
  83. </script>
  84. <style scoped>
  85. .login{position: fixed; overflow: hidden;left: 50%; margin-left: -250px; top:50%; margin-top: -350px; width: 500px; min-height: 555px; z-index: 10; right: 140px; background: #fff;-webkit-border-radius: 5px;
  86. -moz-border-radius: 5px;
  87. -ms-border-radius: 5px;
  88. -o-border-radius: 5px;
  89. border-radius: 5px; -webkit-box-shadow: 0px 3px 16px -5px #070707; box-shadow: 0px 3px 16px -5px #070707}
  90. .log-close{display: block; position: absolute; top:12px; right: 12px; opacity: 1;}
  91. .log-close:hover .icons{transform: rotate(180deg);}
  92. .log-close .icons{opacity: 1; transition: all .3s}
  93. .log-cloud{background-image: url(../assets/login-cloud.png); width: 63px ;height: 40px; position: absolute; z-index: 1}
  94. .login .cloud1{top:21px; left: -30px; transform: scale(.6); animation: cloud1 20s linear infinite;}
  95. .login .cloud2{top:87px; right: 20px; animation: cloud2 19s linear infinite;}
  96. .login .cloud3{top:160px; left: 5px;transform: scale(.8);animation: cloud3 21s linear infinite;}
  97. .login .cloud4{top:150px; left: -40px;transform: scale(.4);animation: cloud4 19s linear infinite;}
  98. .log-bg{background: url(../assets/login-bg.jpg); width: 100%; height: 312px; overflow: hidden;}
  99. .log-logo{height: 80px; margin: 120px auto 25px; text-align: center; color: #1fcab3; font-weight: bold; font-size: 40px;}
  100. .log-text{color: #57d4c3; font-size: 13px; text-align: center; margin: 0 auto;}
  101. .log-logo,.log-text{z-index: 2}
  102. .icons{background:url(../assets/icons.png) no-repeat; display: inline-block;}
  103. .close{height:16px;width:16px;background-position:-13px 0;}
  104. .login-email{height:17px;width:29px;background-position:-117px 0;}
  105. .log-btns{padding: 15px 0; margin: 0 auto;}
  106. .log-btn{width:402px; display: block; text-align: left; line-height: 50px;margin:0 auto 15px; height:50px; color:#fff; font-size:13px;-webkit-border-radius: 5px; background-color: #3B5999;
  107. -moz-border-radius: 5px;
  108. -ms-border-radius: 5px;
  109. -o-border-radius: 5px;
  110. border-radius: 5px;
  111. position: relative;}
  112. .log-btn.tw{background-color: #13B4E9}
  113. .log-btn.email{background-color: #50E3CE}
  114. .log-btn:hover,.log-btn:focus{color: #fff; opacity: .8;}
  115. .log-email{text-align: center; margin-top: 20px;}
  116. .log-email .log-btn{background-color: #50E3CE;text-align: center;}
  117. .log-input-empty{border: 1px solid #f37474 !important;}
  118. .isloading{background: #d6d6d6}
  119. .log-btn .icons{margin-left: 30px; vertical-align: middle;}
  120. .log-btn .text{left: 95px; line-height: 50px; text-align: left; position: absolute;}
  121. .log-input{width: 370px;overflow: hidden; padding: 0 15px;font-size: 13px; border: 1px solid #EBEBEB; margin:0 auto 15px; height: 48px; line-height: 48px; -webkit-border-radius: 5px;
  122. -moz-border-radius: 5px;
  123. -ms-border-radius: 5px;
  124. -o-border-radius: 5px;
  125. border-radius: 5px;}
  126. .log-input.warn{border: 1px solid #f88787}
  127. @-webkit-keyframes cloud1 {
  128. 0%{left: 200px}
  129. 100%{left:-130px;}
  130. }
  131. @keyframes cloud1{
  132. 0%{left: 200px}
  133. 100%{left:-130px;}
  134. }
  135. @-webkit-keyframes cloud2 {
  136. 0%{left:500px;}
  137. 100%{left:-90px;}
  138. }
  139. @keyframes cloud2{
  140. 0%{left:500px;}
  141. 100%{left:-90px;}
  142. }
  143. @-webkit-keyframes cloud3 {
  144. 0%{left:620px;}
  145. 100%{left:-70px;}
  146. }
  147. @keyframes cloud3{
  148. 0%{left:620px;}
  149. 100%{left:-70px;}
  150. }@-webkit-keyframes cloud4 {
  151. 0%{left:100px;}
  152. 100%{left:-70px;}
  153. }
  154. @keyframes cloud4{
  155. 0%{left:100px;}
  156. 100%{left:-70px;}
  157. }
  158. </style>