mirror of
https://github.com/chillzhuang/Saber.git
synced 2024-11-16 23:49:36 +08:00
108 lines
2.5 KiB
Vue
108 lines
2.5 KiB
Vue
|
<template>
|
||
|
<div class="lock-container">
|
||
|
<div class="lock-form animated bounceInDown">
|
||
|
<div class="animated"
|
||
|
:class="{'shake':passwdError,'bounceOut':pass}">
|
||
|
<h3 class="title">{{userInfo.username}}</h3>
|
||
|
<el-input placeholder="请输入登录密码"
|
||
|
type="password"
|
||
|
class="input-with-select animated"
|
||
|
v-model="passwd"
|
||
|
@keyup.enter.native="handleLogin">
|
||
|
<el-button slot="append"
|
||
|
icon="icon-bofangqi-suoping"
|
||
|
@click="handleLogin"></el-button>
|
||
|
<el-button slot="append"
|
||
|
icon="icon-tuichu"
|
||
|
@click="handleLogout"></el-button>
|
||
|
</el-input>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
</template>
|
||
|
<script>
|
||
|
import { mapGetters, mapState } from "vuex";
|
||
|
export default {
|
||
|
name: "lock",
|
||
|
data() {
|
||
|
return {
|
||
|
passwd: "",
|
||
|
passwdError: false,
|
||
|
pass: false
|
||
|
};
|
||
|
},
|
||
|
created() {},
|
||
|
mounted() {},
|
||
|
computed: {
|
||
|
...mapState({
|
||
|
userInfo: state => state.user.userInfo
|
||
|
}),
|
||
|
...mapGetters(["tag", "lockPasswd"])
|
||
|
},
|
||
|
props: [],
|
||
|
methods: {
|
||
|
handleLogout() {
|
||
|
this.$confirm("是否退出系统, 是否继续?", "提示", {
|
||
|
confirmButtonText: "确定",
|
||
|
cancelButtonText: "取消",
|
||
|
type: "warning"
|
||
|
}).then(() => {
|
||
|
this.$store.dispatch("LogOut").then(() => {
|
||
|
this.$router.push({ path: "/login" });
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
handleLogin() {
|
||
|
if (this.passwd != this.lockPasswd) {
|
||
|
this.passwd = "";
|
||
|
this.$message({
|
||
|
message: "解锁密码错误,请重新输入",
|
||
|
type: "error"
|
||
|
});
|
||
|
this.passwdError = true;
|
||
|
setTimeout(() => {
|
||
|
this.passwdError = false;
|
||
|
}, 1000);
|
||
|
return;
|
||
|
}
|
||
|
this.pass = true;
|
||
|
setTimeout(() => {
|
||
|
this.$store.commit("CLEAR_LOCK");
|
||
|
this.$router.push({
|
||
|
path: this.$router.$avueRouter.getPath({ src: this.tag.value })
|
||
|
});
|
||
|
}, 1000);
|
||
|
}
|
||
|
},
|
||
|
components: {}
|
||
|
};
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss">
|
||
|
.lock-container {
|
||
|
height: 100%;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
justify-content: center;
|
||
|
position: relative;
|
||
|
.title {
|
||
|
margin-bottom: 8px;
|
||
|
color: #333;
|
||
|
}
|
||
|
}
|
||
|
.lock-container::before {
|
||
|
z-index: -999;
|
||
|
content: "";
|
||
|
position: absolute;
|
||
|
left: 0;
|
||
|
top: 0;
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
background-image: url("/img/bg/login.png");
|
||
|
background-size: cover;
|
||
|
}
|
||
|
.lock-form {
|
||
|
width: 300px;
|
||
|
}
|
||
|
</style>
|