Blame view

src/views/Login.vue 3.44 KB
e7ab2c09a   alexYang   权限部分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  <template>
    <el-form :model="loginForm" :rules="fieldRules" ref="loginForm" label-position="left" label-width="0px" class="demo-ruleForm login-container">
      <span class="tool-bar">
      </span>
      <h2 class="title" style="padding-left:22px;" >系统登录</h2>
      <el-form-item prop="account">
        <el-input type="text" v-model="loginForm.account" auto-complete="off" placeholder="账号"></el-input>
      </el-form-item>
      <el-form-item prop="password">
        <el-input type="password" v-model="loginForm.password" auto-complete="off" placeholder="密码"></el-input>
      </el-form-item>
      <el-form-item >
        <el-col :span="12">
          <el-form-item prop="captcha">
            <el-input type="test" v-model="loginForm.captcha" auto-complete="off" placeholder="验证码, 单击图片刷新"
              style="width: 100%;">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col class="line" :span="1">&nbsp;</el-col>
        <el-col :span="11">
          <el-form-item>
              <img style="width: 100%;" class="pointer" :src="loginForm.src" @click="refreshCaptcha">
          </el-form-item>
        </el-col>
      </el-form-item>
      <el-form-item style="width:100%;">
        <el-button type="primary" style="width:48%;" @click.native.prevent="reset">重 置</el-button>
        <el-button type="primary" style="width:48%;" @click.native.prevent="login" :loading="loading">登 录</el-button>
      </el-form-item>
    </el-form>
  </template>
  
  <script>
  import Cookies from "js-cookie"
  export default {
    name: 'Login',
    data() {
      return {
        loading: false,
        loginForm: {
          account: 'admin',
          password: 'admin',
          captcha:'',
          src: ''
        },
        fieldRules: {
          account: [
            { required: true, message: '请输入账号', trigger: 'blur' }
          ],
          password: [
            { required: true, message: '请输入密码', trigger: 'blur' }
          ]
        },
        checked: true
      }
    },
    methods: {
      login() {
        this.loading = true
        let userInfo = { account:this.loginForm.account, password:this.loginForm.password, 
          captcha:this.loginForm.captcha }
        this.$api.login.login(userInfo).then((res) => {  // 调用登录接口
            if(res.msg != null) {
              this.$message({ message: res.msg, type: 'error' })
            } else {
              Cookies.set('token', res.data.token) // 放置token到Cookie
              sessionStorage.setItem('user', userInfo.account) // 保存用户到本地会话
              this.$store.commit('menuRouteLoaded', false) // 要求重新加载导航菜单
              this.$router.push('/')  // 登录成功,跳转到主页
            }
            this.loading = false
          }).catch((res) => {
            this.$message({ message: res.message, type: 'error' })
          })
      },
      refreshCaptcha: function(){
        this.loginForm.src = this.global.baseUrl + "/captcha.jpg?t=" + new Date().getTime();
      },
      reset() {
        this.$refs.loginForm.resetFields()
      }
    },
    mounted() {
      this.refreshCaptcha()
    }
  }
  </script>
  
  <style lang="scss" scoped>
    .login-container {
      -webkit-border-radius: 5px;
      border-radius: 5px;
      -moz-border-radius: 5px;
      background-clip: padding-box;
      margin: 100px auto;
      width: 350px;
      padding: 35px 35px 15px 35px;
      background: #fff;
      border: 1px solid #eaeaea;
      box-shadow: 0 0 25px #cac6c6;
      .title {
        margin: 0px auto 30px auto;
        text-align: center;
        color: #505458;
      }
    }
  </style>