AdaKing88
2023-08-23 9cad48db6c56c3e2796a9d6da881817ef13b6eca
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
<template>
  <div class="header-wrap">
    <div class="wrap">
      <span class="menu-btn" @click="switchAside">
        <svg-icon iconName="menuBtn" className="icon-menu-svg"></svg-icon>
      </span>
    </div>
    <div class="wrap">
      <div class="user-info">
        <div class="face-info">
          <!-- <img src="../../assets/images/logo-min.png" alt="409019683@qq.com" /> -->
          <span class="name">{{ username }}</span>
        </div>
        <span class="logout" @click="handlerLogout">
          <svg-icon iconName="logout" className="icon-logout"></svg-icon>
        </span>
      </div>
    </div>
  </div>
</template>
 
<script>
import { ref, getCurrentInstance } from "vue";
import { useStore } from "vuex";
import { useRouter } from "vue-router";
export default {
  name: "Header",
  components: {},
  props: {},
  setup() {
    // 获取实例上下文
    const { proxy } = getCurrentInstance();
    // Vuex
    const store = useStore();
    // 引入router
    const { replace } = useRouter();
    // 菜单按钮
    const switchAside = () => {
      store.commit("app/SET_COLLAPSE");
    };
    // 用户名
    const username = ref(store.state.app.username);
    // 登出
    const handlerLogout = () => {
      proxy
        .$confirm("确认退出管理后台", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        })
        .then(() => {
          replace({
            name: "Login",
          });
        })
        .catch((error) => {});
    };
 
    return {
      switchAside,
      handlerLogout,
      username,
    };
  },
};
</script>
<style lang="scss" scoped>
.header-wrap {
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.user-info {
  float: right;
  display: flex;
  align-items: center;
}
.face-info {
  span,
  img {
    display: inline-block;
    vertical-align: middle;
  }
  span {
    margin-left: 15px;
  }
}
.logout {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 75px;
  height: 75px;
  cursor: pointer;
}
.menu-btn {
  cursor: pointer;
} // 手势
.icon-menu-svg {
  font-size: 24px;
}
.icon-logout {
  font-size: 24px;
}
</style>