Login.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <template>
  2. <div class="login" id="login">
  3. <div class="limiter">
  4. <div class="container-login100">
  5. <div class="wrap-login100">
  6. <span class="login100-form-title p-b-26">WVP视频平台</span>
  7. <span class="login100-form-title p-b-48">
  8. <i class="fa fa-video-camera"></i>
  9. </span>
  10. <div class="wrap-input100 validate-input" data-validate = "Valid email is: a@b.c">
  11. <input :class="'input100 ' + (username==''?'':'has-val')" type="text" v-model="username" name="username">
  12. <span class="focus-input100" data-placeholder="用户名"></span>
  13. </div>
  14. <div class="wrap-input100 validate-input" data-validate="Enter password">
  15. <span class="btn-show-pass">
  16. <i :class="'fa ' + (!showPassword?'fa-eye':'fa-eye-slash')" @click="showPassword = !showPassword"></i>
  17. </span>
  18. <input :class="'input100 ' + (password==''?'':'has-val')" :type="(!showPassword?'password':'text')" v-model="password" name="password">
  19. <span class="focus-input100" data-placeholder="密码"></span>
  20. </div>
  21. <div class="container-login100-form-btn">
  22. <div class="wrap-login100-form-btn" :class="{'login-loading': isLoging}" v-loading="isLoging" element-loading-background="rgb(0 0 0 / 0%);" element-loading-custom-class="login-loading-class">
  23. <div class="login100-form-bgbtn"></div>
  24. <button class="login100-form-btn" @click="login">登录</button>
  25. </div>
  26. </div>
  27. </div>
  28. </div>
  29. </div>
  30. </div>
  31. </template>
  32. <script>
  33. import crypto from 'crypto'
  34. export default {
  35. name: 'Login',
  36. data(){
  37. return {
  38. isLoging: false,
  39. showPassword: false,
  40. loginLoading: false,
  41. username: '',
  42. password: ''
  43. }
  44. },
  45. created(){
  46. var that = this;
  47. document.onkeydown = function(e) {
  48. var key = window.event.keyCode;
  49. if (key == 13) {
  50. that.login();
  51. }
  52. }
  53. },
  54. methods:{
  55. //登录逻辑
  56. login(){
  57. if(this.username!='' && this.password!=''){
  58. this.toLogin();
  59. }
  60. },
  61. //登录请求
  62. toLogin(){
  63. //一般要跟后端了解密码的加密规则
  64. //这里例子用的哈希算法来自./js/sha1.min.js
  65. //需要想后端发送的登录参数
  66. let loginParam = {
  67. username: this.username,
  68. password: crypto.createHash('md5').update(this.password, "utf8").digest('hex')
  69. }
  70. var that = this;
  71. //设置在登录状态
  72. this.isLoging = true;
  73. this.$axios({
  74. method: 'get',
  75. url:"/api/user/login",
  76. params: loginParam
  77. }).then(function (res) {
  78. console.log(JSON.stringify(res));
  79. if (res.data.code == 0 && res.data.msg == "success") {
  80. that.$cookies.set("session", {"username": that.username}) ;
  81. //登录成功后
  82. that.cancelEnterkeyDefaultAction();
  83. that.$router.push('/');
  84. }else{
  85. that.isLoging = false;
  86. that.$message({
  87. showClose: true,
  88. message: '登录失败,用户名或密码错误',
  89. type: 'error'
  90. });
  91. }
  92. }).catch(function (error) {
  93. that.$message.error(error.response.data.msg);
  94. that.isLoging = false;
  95. });
  96. },
  97. setCookie: function (cname, cvalue, exdays) {
  98. var d = new Date();
  99. d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
  100. var expires = "expires=" + d.toUTCString();
  101. console.info(cname + "=" + cvalue + "; " + expires);
  102. document.cookie = cname + "=" + cvalue + "; " + expires;
  103. console.info(document.cookie);
  104. },
  105. cancelEnterkeyDefaultAction: function() {
  106. document.onkeydown = function(e) {
  107. var key = window.event.keyCode;
  108. if (key == 13) {
  109. return false;
  110. }
  111. }
  112. }
  113. }
  114. }
  115. </script>