个人主页跳转,通知移入登录后显示

main
lee-zt 1 week ago
parent d3158ec4f9
commit 95a38a1c0e

@ -32,23 +32,27 @@
</ul>
</div>
<router-link to="/feedback" class="nav-btn">反馈站</router-link>
<router-link to="/notificationlist" class="nav-btn">通知</router-link>
</div>
<!-- 登录/注册按钮 -->
<div class="nav-section">
<button v-if="!isLoggedIn" @click="showModal" class="login-btn">/</button>
<div v-else class="user-avatar" @mouseenter="showDropdown" @mouseleave="hideDropdown">
<img :src="userInfo.avatar || defaultAvatar" alt="用户头像" class="avatar-img" />
<!-- 悬浮板块 -->
<div class="user-dropdown-menu" v-show="isDropdownVisible">
<p class="user-name">{{ userInfo.userName }}</p>
<div class="button-container">
<button @click="goToProfile" class="dropdown-btn">个人中心</button>
<button @click="logout" class="dropdown-btn">退出登录</button>
<div v-else class="user-menu">
<router-link to="/notificationlist" class="nav-btn">通知</router-link>
<div class="user-avatar" @mouseenter="showDropdown" @mouseleave="hideDropdown">
<img :src="userInfo.avatar || defaultAvatar" alt="用户头像" class="avatar-img" />
<!-- 悬浮板块 -->
<div class="user-dropdown-menu" v-show="isDropdownVisible">
<p class="user-name">{{ userInfo.userName }}</p>
<div class="button-container">
<button @click="goToProfile" class="dropdown-btn">个人中心</button>
<button @click="logout" class="dropdown-btn">退出登录</button>
</div>
</div>
</div>
</div>
</div>
<!-- 登录/注册模态框组件仅在 isModalVisible true 时显示 -->
@ -56,14 +60,14 @@
</header>
</template>
<script setup name="Header">
<script lang="js" setup name="Header">
import { ref, computed } from 'vue';
import { useUserStore } from '@/stores/user.js';
import LoginRegisterModal from './LoginRegisterModal.vue';
import { useRouter } from 'vue-router';
//
const userStore = useUserStore();
const router = useRouter();
//
const isModalVisible = ref(false);
const isDropdownVisible = ref(false);
@ -87,7 +91,7 @@ const colleges = ref([
]);
//
const defaultAvatar = '@/assets/default-avatar/boy_4.png';
const defaultAvatar = require("@/assets/default-avatar/boy_4.png");
//
const isLoggedIn = computed(() => userStore.isLoggedIn);
@ -103,12 +107,13 @@ const hideModal = () => {
};
const goToProfile = () => {
//
//window.location.href = '/profile';
router.push({name: 'UserPage',params: { userId: userInfo.value.userid }});
isDropdownVisible.value = false; //
};
const logout = () => {
userStore.logout();
router.push({ name: 'Home' }); //
isDropdownVisible.value = false; //
};
@ -116,7 +121,6 @@ let showTimer = null; // 用于控制显示的定时器
let hideTimer = null; //
const showDropdown = () => {
console.log('showDropdown');
clearTimeout(hideTimer); //
showTimer = setTimeout(() => {
isDropdownVisible.value = true; // 0.5
@ -316,6 +320,13 @@ const hideDropdown = () => {
color: #6fbd87;
background: #f0f0f0;
}
.user-menu{
display: flex;
justify-content: space-between;
align-items: center;
position: relative;
}
.avatar-img {
width: 35px;
height: 35px;

@ -183,7 +183,8 @@ async function sendCode() {
function Login1() {
userStore.login({
avatar:require('@/assets/default-avatar/boy_1.png'),
userName: '珈人一号'
userName: '珈人一号',
userid:1
});
emit('LoginSuccess');
}
@ -212,9 +213,10 @@ async function login() {
userStore.login({
avatar: '/assets/default-avatar/boy_1.png',
userName: '珈人一号'
userName: '珈人一号',
userid:1
});
emit('LoginSuccess'); //
ElMessage({
message: '登录成功',
type: 'success',

@ -28,7 +28,7 @@ const routes = [
component: PostDetail
},
{
path: '/user',
path: '/user/:userId',
name: 'UserPage',
component: UserPage
},

@ -6,6 +6,7 @@ export const useUserStore = defineStore('user', {
userInfo: {
avatar: '', // 用户头像 URL
username: '', // 用户名
userid: 0, // 用户 ID
},
}),
actions: {
@ -15,7 +16,7 @@ export const useUserStore = defineStore('user', {
},
logout() {
this.isLoggedIn = false;
this.userInfo = { avatar: '', username: '' };
this.userInfo = { avatar: '', username: '' , userid: 0 };
},
},
});
Loading…
Cancel
Save