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
109
| <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-jiesuo"
| @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: "取消",
| closeOnClickModal:false,
| 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 {
| text-align: center;
| margin-bottom: 8px;
| }
| }
| .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>
|
|