userbar.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <div class="user-bar">
  3. <el-dropdown class="panel-item" trigger="click" @command="handleUser">
  4. <div class="user-avatar">
  5. <label>{{ userName }}</label>
  6. <el-icon class="el-icon--right"><el-icon-caret-bottom /></el-icon>
  7. </div>
  8. <template #dropdown>
  9. <el-dropdown-menu>
  10. <el-dropdown-item command="updatePassword" icon="el-icon-lock">修改密码</el-dropdown-item>
  11. <el-dropdown-item divided command="outLogin" icon="sc-icon-logout">退出登录</el-dropdown-item>
  12. </el-dropdown-menu>
  13. </template>
  14. </el-dropdown>
  15. </div>
  16. <UpdatePassword v-if="showPassword" @closed="showPassword = false" />
  17. </template>
  18. <script>
  19. import { defineAsyncComponent } from "vue"
  20. export default {
  21. components: {
  22. UpdatePassword: defineAsyncComponent(() => import("./updatePwd"))
  23. },
  24. data() {
  25. return {
  26. userName: this.$TOOL.data.get("USER_INFO") && this.$TOOL.data.get("USER_INFO").nickName || "",
  27. showPassword: false
  28. }
  29. },
  30. methods: {
  31. // 个人信息
  32. handleUser(command) {
  33. if (command == "updatePassword") this.showPassword = true
  34. if (command == "outLogin"){
  35. this.$confirm("确认是否退出当前用户?","提示", {
  36. type: "warning",
  37. confirmButtonText: "退出"
  38. }).then(() => {
  39. this.$TOOL.cookie.remove("TOKEN");
  40. this.$TOOL.data.remove("USER_INFO");
  41. this.$TOOL.data.remove("OA_USER_INFO");
  42. this.$TOOL.data.remove("APPLY_SQL");
  43. this.$router.replace({ path: "/login" });
  44. }).catch(() => {});
  45. }
  46. }
  47. }
  48. }
  49. </script>
  50. <style lang="scss" scoped>
  51. .user-bar {
  52. display: flex;
  53. align-items: center;
  54. height: 100%;
  55. .user-avatar {
  56. cursor: pointer;
  57. height: 48px;
  58. display: flex;
  59. align-items: center;
  60. label {
  61. cursor: pointer;
  62. display: inline-block;
  63. line-height: 48px;
  64. font-size: 14px;
  65. }
  66. i {
  67. font-size: 16px;
  68. }
  69. }
  70. }
  71. </style>