index.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <el-dropdown @command="handleCommand">
  3. <span class="avatar-dropdown">
  4. <!--<el-avatar class="user-avatar" :src="avatar"></el-avatar>-->
  5. <img class="user-avatar" :src="avatar" alt="" />
  6. <div class="user-name">
  7. {{ username }}
  8. <i class="el-icon-arrow-down el-icon--right"></i>
  9. </div>
  10. </span>
  11. <el-dropdown-menu slot="dropdown">
  12. <el-dropdown-item command="logout" divided>
  13. <vab-icon :icon="['fas', 'sign-out-alt']"></vab-icon>
  14. 退出登录
  15. </el-dropdown-item>
  16. </el-dropdown-menu>
  17. </el-dropdown>
  18. </template>
  19. <script>
  20. import { mapGetters } from "vuex";
  21. import { recordRoute } from "@/config/settings";
  22. export default {
  23. name: "Avatar",
  24. computed: {
  25. ...mapGetters({
  26. avatar: "user/avatar",
  27. username: "user/username",
  28. }),
  29. },
  30. methods: {
  31. handleCommand(command) {
  32. switch (command) {
  33. case "logout":
  34. this.logout();
  35. break;
  36. case "personalCenter":
  37. this.personalCenter();
  38. break;
  39. }
  40. },
  41. personalCenter() {
  42. this.$router.push("/personalCenter/personalCenter");
  43. },
  44. logout() {
  45. this.$baseConfirm(
  46. "您确定要退出" + this.$baseTitle + "吗?",
  47. null,
  48. async () => {
  49. await this.$store.dispatch("user/logout");
  50. if (recordRoute) {
  51. const fullPath = this.$route.fullPath;
  52. this.$router.push(`/login?redirect=${fullPath}`);
  53. } else {
  54. this.$router.push("/login");
  55. }
  56. }
  57. );
  58. },
  59. },
  60. };
  61. </script>
  62. <style lang="scss" scoped>
  63. .avatar-dropdown {
  64. display: flex;
  65. align-content: center;
  66. align-items: center;
  67. justify-content: center;
  68. justify-items: center;
  69. height: 50px;
  70. padding: 0;
  71. .user-avatar {
  72. width: 40px;
  73. height: 40px;
  74. cursor: pointer;
  75. border-radius: 50%;
  76. }
  77. .user-name {
  78. position: relative;
  79. margin-left: 5px;
  80. margin-left: 5px;
  81. font-weight: 600;
  82. cursor: pointer;
  83. }
  84. }
  85. </style>