From bc07cf1a936795d229a0f51d24cd2032580db542 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 20 一月 2026 16:34:51 +0800
Subject: [PATCH] 湟水峡 1.头部修改

---
 src/layout/components/Navbar.vue |   94 +++++++++++++++++++++++++++++++---------------
 1 files changed, 63 insertions(+), 31 deletions(-)

diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 633024f..8d563c7 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -6,6 +6,30 @@
       <breadcrumb v-if="!settingsStore.topNav" id="breadcrumb-container" class="breadcrumb-container" />
     </div>
     <!--    <top-nav v-if="settingsStore.topNav" id="topmenu-container" class="topmenu-container" />-->
+    <div class="right-menu">
+      <!-- 娑堟伅閫氱煡 -->
+<!--      <el-popover-->
+<!--        v-model:visible="notificationVisible"-->
+<!--        :width="500"-->
+<!--        placement="bottom-end"-->
+<!--        trigger="click"-->
+<!--        :popper-options="{ modifiers: [{ name: 'offset', options: { offset: [0, 10] } }] }"-->
+<!--        popper-class="notification-popover"-->
+<!--      >-->
+<!--        <template #reference>-->
+<!--          <div class="notification-container right-menu-item hover-effect">-->
+<!--            <el-badge :value="unreadCount" :hidden="unreadCount === 0" class="notification-badge">-->
+<!--              <el-icon :size="20" style="cursor: pointer;">-->
+<!--                <Bell />-->
+<!--              </el-icon>-->
+<!--            </el-badge>-->
+<!--          </div>-->
+<!--        </template>-->
+<!--        <NotificationCenter-->
+<!--          @unreadCountChange="handleUnreadCountChange"-->
+<!--          ref="notificationCenterRef"-->
+<!--        />-->
+<!--      </el-popover>-->
       <div class="avatar-container">
         <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
           <div class="avatar-wrapper">
@@ -28,10 +52,12 @@
         </el-dropdown>
       </div>
     </div>
+  </div>
 </template>
 
 <script setup>
 import { ElMessageBox } from 'element-plus'
+import { Bell } from '@element-plus/icons-vue'
 import Breadcrumb from '@/components/Breadcrumb'
 import TopNav from '@/components/TopNav'
 import Hamburger from '@/components/Hamburger'
@@ -40,6 +66,7 @@
 import HeaderSearch from '@/components/HeaderSearch'
 import RuoYiGit from '@/components/RuoYi/Git'
 import RuoYiDoc from '@/components/RuoYi/Doc'
+// import NotificationCenter from './NotificationCenter/index.vue'
 import useAppStore from '@/store/modules/app'
 import useUserStore from '@/store/modules/user'
 import useSettingsStore from '@/store/modules/settings'
@@ -47,7 +74,9 @@
 const appStore = useAppStore()
 const userStore = useUserStore()
 const settingsStore = useSettingsStore()
-const factoryList = ref([])
+const notificationVisible = ref(false)
+const notificationCenterRef = ref(null)
+const unreadCount = ref(0)
 function toggleSideBar() {
   appStore.toggleSideBar()
 }
@@ -90,39 +119,42 @@
   settingsStore.toggleTheme()
 }
 
-// function getUserLoginFacotryList() {
-//   if (userStore.id) {
-//     userLoginFacotryList({ userId: userStore.id }).then(res => {
-//       console.log('res', res)
-//       factoryList.value = res.data
-//     })
-//   } else {
-//     factoryList.value = []
-//   }
-// }
-
-function handleFactoryChange(command) {
-  console.log('command', command)
-  handleLogin(command.deptId);
+// 娑堟伅閫氱煡鐩稿叧
+function handleUnreadCountChange(count) {
+  unreadCount.value = count
 }
 
-function handleLogin(currentFatoryId) {
-  const loginForm = {
-    username: Cookies.get("username"),
-    password: Cookies.get("password") === undefined ? null : decrypt(Cookies.get("password")),
-    currentFatoryId: currentFatoryId
-  }
-  userStore.loginCheckFactory(loginForm).then(res => {
-    forceReload();
-  }).catch((err) => {
-    console.log(err)
+// 缁勪欢鎸傝浇鏃跺姞杞芥湭璇绘暟閲忓拰瀹氭椂鍒锋柊
+let unreadCountTimer = null
+onMounted(() => {
+  // 寤惰繜鍔犺浇锛岀‘淇濈粍浠跺凡娓叉煋
+  nextTick(() => {
+    if (notificationCenterRef.value) {
+      notificationCenterRef.value.loadUnreadCount()
+    }
   })
-}
-function forceReload() {
-  const currentUrl = window.location.origin + window.location.pathname;
-  const timestamp = new Date().getTime();
-  window.location.href = `${currentUrl}?reload=${timestamp}`;
-}
+  // 瀹氭椂鍒锋柊鏈鏁伴噺锛堟瘡30绉掞級
+  unreadCountTimer = setInterval(() => {
+    if (notificationCenterRef.value) {
+      notificationCenterRef.value.loadUnreadCount()
+    }
+  }, 30000)
+})
+
+// 鐩戝惉 popover 鏄剧ず鐘舵�侊紝鎵撳紑鏃跺姞杞芥秷鎭垪琛�
+watch(notificationVisible, (val) => {
+  if (val && notificationCenterRef.value) {
+    nextTick(() => {
+      notificationCenterRef.value.loadMessages()
+    })
+  }
+})
+
+onUnmounted(() => {
+  if (unreadCountTimer) {
+    clearInterval(unreadCountTimer)
+  }
+})
 </script>
 
 <style lang='scss' scoped>

--
Gitblit v1.9.3