From 2839044a1269268e277f23f66cf2b86dcf85de3b Mon Sep 17 00:00:00 2001
From: tanghaolin <1723298894@qq.com>
Date: 星期日, 09 三月 2025 13:53:27 +0800
Subject: [PATCH] 修改购物车功能

---
 src/components/AppHeader.vue |  144 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 122 insertions(+), 22 deletions(-)

diff --git a/src/components/AppHeader.vue b/src/components/AppHeader.vue
index a6ce4b7..74f36e6 100644
--- a/src/components/AppHeader.vue
+++ b/src/components/AppHeader.vue
@@ -1,37 +1,53 @@
 <template>
-	<header class="bg-white shadow-sm">
-		<div class="container mx-auto px-40">
-			<div class="flex items-center justify-between h-16">
+	<header class="bg-white shadow-sm flex items-center">
+		<div class="flex w-full">
+			<div class="flex items-center h-20 mx-auto">
 				<!-- Logo -->
-				<div class="flex items-center">
+				<div class="flex items-center cursor-pointer">
 					<router-link to="/">
-						<img src="/logo.svg" alt="Logo" class="h-8 w-auto" />
+						<img :src="headerLogo" alt="Logo" class="h-20 w-auto" />
 					</router-link>
+					<!-- <span class="text-extra-large font-bold">宸ヤ笟澶ф暟鎹钩鍙�</span> -->
 				</div>
 
 				<!-- Navigation Menu -->
-				<nav class="flex-1 ml-8">
+				<nav class="flex ml-8">
 					<el-menu mode="horizontal" :ellipsis="false" class="border-none" router :default-active="activeRoute">
-						<el-menu-item index="/" class="!px-4">棣栭〉</el-menu-item>
-						<el-menu-item index="/industrial-software" class="!px-4">宸ヤ笟杞欢|宸ヤ笟APP</el-menu-item>
-						<el-menu-item index="/supply-demand" class="!px-4">渚涢渶瀵规帴</el-menu-item>
-						<el-menu-item index="/application" class="!px-4">搴旂敤鎺ㄥ箍</el-menu-item>
-						<el-menu-item index="/public-service" class="!px-4">鍏叡鏈嶅姟</el-menu-item>
+						<el-menu-item index="/home" class="!px-4">棣栭〉</el-menu-item>
+						<el-menu-item index="/certified-products" class="!px-4">鑳芥晥浜у搧</el-menu-item>
+						<el-menu-item index="/eec-label-search" class="!px-4">璇佷功鏌ヨ</el-menu-item>
+						<el-menu-item index="/news-detail/99" class="!px-4">鏀跨瓥鏂囦欢</el-menu-item>
+						<el-menu-item index="/select-selpara" class="!px-4" @click="linkClick">娉甸�夊瀷</el-menu-item>
 					</el-menu>
 				</nav>
 
 				<!-- Search and User Actions -->
-				<div class="flex items-center space-x-4">
-					<el-input v-model="searchQuery" placeholder="鎵惧伐涓�/鎵惧ぇ鏁版嵁" class="w-48">
+				<div class="flex items-center space-x-8 ml-[65px]">
+					<el-input v-model="searchQuery" placeholder="鏌ヨ瘉涔�" class="w-48" v-if="false">
 						<template #suffix>
-							<el-icon><Search /></el-icon>
+							<el-icon class="cursor-pointer" @click="handleSearch"><Search /></el-icon>
 						</template>
 					</el-input>
 
-					<div class="flex items-center text-gray-600 text-sm">
-						<a href="#" class="hover:text-blue-500">娉ㄥ唽</a>
-						<span class="mx-2">路</span>
-						<a href="#" class="hover:text-blue-500">鐧诲綍</a>
+					<!-- Add shopping cart icon here -->
+					<div class="flex items-center gap-4" @click="goToCart">
+						<el-badge :value="cartCount" :max="99" class="cart-badge">
+							<el-button class="flex items-center" link>
+								<el-icon class="text-lg" style="font-size: 20px;"><ShoppingCart /></el-icon>
+							</el-button>
+						</el-badge>
+					</div>
+
+					<div class="flex items-center text-gray-600 text-sm text-nowrap">
+						<template v-if="!userInfo.Token">
+							<!-- <a href="#" class="hover:text-blue-500">娉ㄥ唽</a>
+							<span class="mx-2">路</span> -->
+							<a @click="toLogin" class="hover:text-blue-500">鐧诲綍</a>
+						</template>
+						<template v-else>
+							<span class="text-blue-500 mr-2">{{ userInfo.RealName }}</span>
+							<a href="#" class="hover:text-blue-500" @click.prevent="handleLogout">閫�鍑�</a>
+						</template>
 					</div>
 				</div>
 			</div>
@@ -40,14 +56,80 @@
 </template>
 
 <script setup lang="ts">
-import { ref, computed } from 'vue';
-import { useRoute } from 'vue-router';
-import { Search } from '@element-plus/icons-vue';
+import headerLogo from '@/assets/logo/header_logo.png';
+import { Search, ShoppingCart } from '@element-plus/icons-vue';
+import { ElMessage } from 'element-plus';
+import { computed, ref, watch } from 'vue';
+import { useRoute, useRouter } from 'vue-router';
+import { useLogin } from '@/stores/useLogin';
+import { useCartStore } from '@/stores/useCartStore';
+
+const loginStore = useLogin();
+const cartStore = useCartStore();
 
 const route = useRoute();
+const router = useRouter();
 const searchQuery = ref('');
-
+const handleSearch = () => {
+	if (!searchQuery.value) {
+		searchQuery.value = '鏌ヨ瘉涔�';
+	}
+	router.push(`/eec-label-search`);
+};
 const activeRoute = computed(() => route.path);
+
+// 鑾峰彇鐢ㄦ埛淇℃伅
+const userInfo = computed(() => {
+	const UserInfo = loginStore.getUserInfo();
+	return UserInfo ? UserInfo : null;
+});
+
+const toLogin = () => {
+	router.replace({
+		path: '/login',
+		query: {
+			redirectPath: route.fullPath,
+		},
+	});
+};
+// 澶勭悊鐧诲嚭
+const handleLogout = () => {
+	loginStore.logOut();
+	ElMessage.success('宸查��鍑虹櫥褰�');
+	router.replace({
+		path: '/login',
+		query: { redirectPath: route.fullPath },
+	});
+};
+
+const linkClick = () => {
+	if (userInfo.value.Token) {
+		router.push('/select-selpara');
+	} else {
+		loginStore.logOut();
+		router.replace({
+			path: '/login',
+			query: { redirectPath: route.fullPath },
+		});
+	}
+};
+
+// 浠� Pinia store 鑾峰彇璐墿杞︽暟閲�
+const cartCount = computed(() => cartStore.cartItemCount);
+
+const goToCart = () => {
+	if (userInfo.value.Token) {
+		router.push('/cart');
+	} else {
+		loginStore.logOut();
+		router.replace({
+			path: '/login',
+			query: { redirectPath: route.fullPath },
+		});
+		return
+	}
+	
+};
 </script>
 
 <style scoped>
@@ -60,4 +142,22 @@
 :deep(.el-menu--horizontal) {
 	border-bottom: none;
 }
+
+.cart-badge :deep(.el-badge__content) {
+	animation: cartBadgeAnimation 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+}
+
+@keyframes cartBadgeAnimation {
+	0% {
+		transform: scale(0);
+		opacity: 0;
+	}
+	50% {
+		transform: scale(1.2);
+	}
+	100% {
+		transform: scale(1);
+		opacity: 1;
+	}
+}
 </style>

--
Gitblit v1.9.3