From 5d36e1f987ef21e44ded2e8a1d06c28094ec1e76 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期六, 19 四月 2025 12:39:47 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 zhitan-vue/src/components/Avatar/index.vue |  100 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 100 insertions(+), 0 deletions(-)

diff --git a/zhitan-vue/src/components/Avatar/index.vue b/zhitan-vue/src/components/Avatar/index.vue
new file mode 100644
index 0000000..bb8a375
--- /dev/null
+++ b/zhitan-vue/src/components/Avatar/index.vue
@@ -0,0 +1,100 @@
+<template>
+  <div class="avatar-container">
+    <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
+      <div class="avatar-wrapper">
+        <img :src="userStore.avatar" class="user-avatar" />
+        <el-icon><caret-bottom /></el-icon>
+      </div>
+      <template #dropdown>
+        <el-dropdown-menu>
+          <router-link to="/user/profile">
+            <el-dropdown-item>涓汉涓績</el-dropdown-item>
+          </router-link>
+          <el-dropdown-item command="toggleTheme">
+            <span>椋庢牸鍒囨崲</span>
+          </el-dropdown-item>
+          <el-dropdown-item divided command="logout">
+            <span>閫�鍑虹櫥褰�</span>
+          </el-dropdown-item>
+        </el-dropdown-menu>
+      </template>
+    </el-dropdown>
+  </div>
+</template>
+
+<script setup>
+import { ElMessageBox } from "element-plus"
+import useUserStore from "@/store/modules/user"
+import useSettingsStore from "@/store/modules/settings"
+
+const userStore = useUserStore()
+const settingsStore = useSettingsStore()
+
+function handleCommand(command) {
+  switch (command) {
+    case "toggleTheme":
+      const newTheme = settingsStore.sideTheme === "theme-dark" ? "theme-light" : "theme-dark";
+      settingsStore.changeSetting({ key: "sideTheme", value: newTheme });
+      document.querySelector("body").className = newTheme === "theme-dark" ? "themeDark" : "themeLight";
+      break;
+    case "logout":
+      ElMessageBox.confirm("纭畾娉ㄩ攢骞堕��鍑虹郴缁熷悧锛�", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      })
+        .then(() => {
+          userStore.logOut().then(() => {
+            location.href = "/index";
+          });
+        })
+        .catch(() => {});
+      break;
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.avatar-container {
+  margin-right: 20px;
+  
+  .avatar-wrapper {
+    margin-top: 5px;
+    position: relative;
+    display: flex;
+    align-items: center;
+    
+    .user-avatar {
+      cursor: pointer;
+      width: 40px;
+      height: 40px;
+      border-radius: 10px;
+    }
+    
+    .el-icon {
+      cursor: pointer;
+      margin-left: 8px;
+      font-size: 12px;
+      color: #ffffff;
+    }
+  }
+}
+
+.right-menu-item {
+  display: inline-block;
+  padding: 0 8px;
+  height: 100%;
+  font-size: 18px;
+  color: #ffffff;
+  vertical-align: text-bottom;
+  
+  &.hover-effect {
+    cursor: pointer;
+    transition: background 0.3s;
+    
+    &:hover {
+      background: rgba(0, 0, 0, 0.1);
+    }
+  }
+}
+</style> 
\ No newline at end of file

--
Gitblit v1.9.3