From 3849263b31a16a91ff08acaa42786ecfde76f33c Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期四, 27 十一月 2025 20:18:08 +0800
Subject: [PATCH] 提交

---
 ui/admin-ui3/src/layout/components/Navbar.vue |   87 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 85 insertions(+), 2 deletions(-)

diff --git a/ui/admin-ui3/src/layout/components/Navbar.vue b/ui/admin-ui3/src/layout/components/Navbar.vue
index 385d488..362753d 100644
--- a/ui/admin-ui3/src/layout/components/Navbar.vue
+++ b/ui/admin-ui3/src/layout/components/Navbar.vue
@@ -5,6 +5,36 @@
     <top-nav id="topmenu-container" class="topmenu-container" v-if="settingsStore.topNav" />
 
     <div class="right-menu">
+      <el-dropdown>
+        <el-badge :value="noCount" class="item" :hidden="noCount == 0" :offset="[-1, 15]">
+          <el-image style="width: 30px;height: 30px;" :src="tongzhi"></el-image>
+          <!--        <el-button>comments</el-button>-->
+        </el-badge>
+        <template #dropdown>
+          <el-dropdown-menu>
+            <el-dropdown-item disabled v-if="noCount == 0" >
+              <div style="margin: 0 auto;width: 325px;">
+                <el-empty :image-size="30" description="鏆傛棤閫氱煡" />
+              </div>
+            </el-dropdown-item>
+            <el-dropdown-item v-for="(item,index) in noList"
+      @click="itemClick(item)"
+                              :key="index" :divided="index > 0">
+              <div style="width: 200px;">
+                <div style="line-height: 16px;font-size: 14px;margin-top: 10px;">{{ item.createTime }}</div>
+                <div>
+                  <div style="line-height: 24px;font-size: 16px;font-weight: 700;">{{ item.title }}</div>
+                  <div
+                      style="line-height: 16px;display: block;font-size: 10px;  width: 100%;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;">
+                    {{ item.content }}</div>
+                </div>
+              </div>
+            </el-dropdown-item>
+            <el-dropdown-item v-if="noCount != 0">鏌ョ湅鏇村娑堟伅 銆�</el-dropdown-item>
+          </el-dropdown-menu>
+        </template>
+      </el-dropdown>
+
       <template v-if="device !== 'mobile'">
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
 
@@ -32,6 +62,19 @@
         </el-dropdown>
       </div>
     </div>
+
+    <el-dialog :title="onDetail.title" v-model="open" class="avue-dialog avue-dialog--top" width="50%">
+      <div style="font-size: 14px">
+        {{onDetail.content}}
+      </div>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary"   @click="goToDetail">
+            鏌ョ湅璇︽儏
+          </el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -42,11 +85,13 @@
 import Hamburger from '@/components/Hamburger/index.vue'
 import Screenfull from '@/components/Screenfull/index.vue'
 
-import {computed} from "vue";
+import {computed,ref} from "vue";
 import {useAppStore} from "@/store/modules/app";
 import {useSettingsStore} from "@/store/modules/settings";
 import {useUserStore} from "@/store/modules/user";
-
+import tongzhi from "@/assets/tongzhi.png"
+import {getNoCountApi, getReadApi} from "@/api/common";
+import router from "@/router";
 const userStore = useUserStore();
 const appStore = useAppStore();
 const settingsStore = useSettingsStore();
@@ -88,6 +133,39 @@
 function setLayout() {
   emits('setLayout');
 }
+const noCount = ref(0);
+const noList = ref([]);
+const onDetail = ref<any>({});
+const open = ref(false);
+
+/**
+ * 鏌ヨ鏈
+ */
+const getMessage = () => {
+  getNoCountApi().then(res=>{
+    let resData = res.data || {};
+    noCount.value = resData.count ;
+    noList.value  = resData.list;
+  })
+}
+getMessage();
+const itemClick = (item:any)=>{
+  getReadApi(item.id).then(res=>{
+    open.value = true;
+    onDetail.value = res.data || {};
+    getMessage();
+  })
+}
+
+const goToDetail = () => {
+  open.value =false;
+  let extraData:any = {};
+  if (onDetail.value.extraData){
+    extraData = JSON.parse(onDetail.value.extraData)
+  }
+  router.push("/customer/tmsContract?contactStatus=" + extraData.contactStatus);
+}
+
 </script>
 
 <style lang='scss' scoped>
@@ -178,4 +256,9 @@
     }
   }
 }
+.item {
+  display: flex;
+  align-items: center;
+  //margin-right: 20px;
+}
 </style>

--
Gitblit v1.8.0