From 53310b6f8b2274c3d68674648446451761edea21 Mon Sep 17 00:00:00 2001
From: he wei <858544502@qq.com>
Date: 星期五, 25 四月 2025 10:07:35 +0800
Subject: [PATCH] U onActivated'

---
 src/components/HdwTree/index.vue     |   58 ++++++++++++++-----
 src/views/device/threadManage.vue    |    4 
 src/views/general/log/index.vue      |   12 ++--
 src/views/device/locks/addEdit.vue   |    1 
 src/views/general/alarm/alarmRt.vue  |    4 
 src/views/device/keys/index.vue      |    4 
 src/views/device/locks/index.vue     |    4 
 src/views/device/realtime/index.vue  |    2 
 src/views/system/logs.vue            |    4 
 src/store/user.js                    |    4 
 src/store/permission.js              |    6 +-
 src/utils/permission.js              |    1 
 src/views/general/alarm/alarmHis.vue |   14 ++--
 src/views/device/locks/task.vue      |    4 
 14 files changed, 76 insertions(+), 46 deletions(-)

diff --git a/src/components/HdwTree/index.vue b/src/components/HdwTree/index.vue
index 694f6f3..8be5da3 100644
--- a/src/components/HdwTree/index.vue
+++ b/src/components/HdwTree/index.vue
@@ -1,8 +1,12 @@
 <script setup>
-  import { ref, onMounted, reactive, nextTick, watch } from "vue";
+  import { ref, onMounted, reactive, nextTick, watch, onBeforeUnmount } from "vue";
   import { getSiteList } from "@/api/common";
   import { formatAreaTree } from "@/utils/tree";
 import { format } from "echarts";
+
+import useWebSocket from "@/hooks/useWebsocket.js";
+const { sendData, message: listMessage } = useWebSocket("leftStation");
+
   import { useRoute, useRouter } from "vue-router";
   const route = useRoute();
   const router = useRouter();
@@ -20,7 +24,7 @@
   const currentId = ref();
 
   onMounted(() => {
-    getTree();
+    // getTree();
   });
 
   watch(
@@ -65,17 +69,14 @@
     return null;
   }
 
-  async function getTree() {
-    try {
-      const res = await getSiteList();
+  watch(
+    () => listMessage.value,
+    async () => {
       let _data = [];
-      if (res.code === 1 && res.data) {
-        _data = res.data2;
+      if (listMessage.value) {
+        _data = JSON.parse(listMessage.value)?.data2;
       }
-      console.log('_data', _data, '=============');
-      
       const treeList = formatAreaTree(_data);
-      console.log(treeList, "treeList");
       data.value = treeList;
       await nextTick();
       const firstLeafId = currentId.value || findFirstLeafNode(treeList);
@@ -87,13 +88,39 @@
         // treeRef.value.setCurrentNode(node);
 
         handleNodeClick(node.data, node, treeRef.value);
-        
-        // handleNodeClick(node.data);
       }
-    } catch (e) {
-      console.log(e);
     }
-  }
+  );
+
+  // async function getTree() {
+  //   try {
+  //     const res = await getSiteList();
+  //     let _data = [];
+  //     if (res.code === 1 && res.data) {
+  //       _data = res.data2;
+  //     }
+  //     console.log('_data', _data, '=============');
+      
+  //     const treeList = formatAreaTree(_data);
+  //     console.log(treeList, "treeList");
+  //     data.value = treeList;
+  //     await nextTick();
+  //     const firstLeafId = currentId.value || findFirstLeafNode(treeList);
+      
+  //     if (firstLeafId) {
+  //       const node = treeRef.value.getNode(firstLeafId);
+  //       expandParentNodes(firstLeafId);
+  //       treeRef.value.setCurrentKey(firstLeafId);
+  //       // treeRef.value.setCurrentNode(node);
+
+  //       handleNodeClick(node.data, node, treeRef.value);
+        
+  //       // handleNodeClick(node.data);
+  //     }
+  //   } catch (e) {
+  //     console.log(e);
+  //   }
+  // }
 
 
   const expandParentNodes = (nodeId) => {
@@ -115,6 +142,7 @@
     }
   }
 
+
   defineExpose({ setCurrent });
 
 </script>
diff --git a/src/store/permission.js b/src/store/permission.js
index 9c11d0d..22f2b55 100644
--- a/src/store/permission.js
+++ b/src/store/permission.js
@@ -9,8 +9,8 @@
  */
 function hasPermission(roles, route) {
   console.trace('hasPermission');
-  console.log('hasPermission', roles, route, '=============');
-  debugger;
+  // console.log('hasPermission', roles, route, '=============');
+  // debugger;
   if (route.meta && route.meta.roles) {
     const rolesArr = route.meta.roles;
     return roles.some(role => rolesArr.includes(role));
@@ -51,7 +51,7 @@
   }
   function generateRoutes(roles) {
     let accessedRoutes;
-    debugger;
+    // debugger;
     if (roles.includes('admin')) {
       console.log('1', '=============');
       
diff --git a/src/store/user.js b/src/store/user.js
index aca73d1..fc9e5d2 100644
--- a/src/store/user.js
+++ b/src/store/user.js
@@ -53,7 +53,7 @@
           uname.value = name;
           setUname(name);
           let _token = 'someone';
-          debugger;
+          // debugger;
           if (response.data2.uid && response.data2.uid <= 10000) {
             _token = 'manager';
             if (response.data2.uid <= 100) {
@@ -124,7 +124,7 @@
   }
 
   async function changeRoles(role) {
-    debugger;
+    // debugger;
     const _token = role + '-token';
 
     token.value = _token;
diff --git a/src/utils/permission.js b/src/utils/permission.js
index 8fe76af..edc48f6 100644
--- a/src/utils/permission.js
+++ b/src/utils/permission.js
@@ -1,7 +1,6 @@
 import { storeToRefs } from "pinia";
 import pinia from '@/utils/pinia';
 import { useUserStore } from "@/store/user";
-debugger;
 const userStore = useUserStore(pinia);
 const { roles } = storeToRefs(userStore);
 
diff --git a/src/views/device/keys/index.vue b/src/views/device/keys/index.vue
index c5a7303..9e48bc9 100644
--- a/src/views/device/keys/index.vue
+++ b/src/views/device/keys/index.vue
@@ -1,5 +1,5 @@
 <script setup name="KeyManage">
-import { ref, onMounted, reactive, computed, watchEffect, nextTick } from 'vue';
+import { ref, onActivated, reactive, computed, watchEffect, nextTick } from 'vue';
 import addEdit from './addEdit.vue';
 import { storeToRefs } from "pinia";
 import useElement from "@/hooks/useElement.js";
@@ -202,7 +202,7 @@
 	sendMessage();
 }
 
-onMounted(() => {
+onActivated(() => {
 	sendMessage();
 });
 </script>
diff --git a/src/views/device/locks/addEdit.vue b/src/views/device/locks/addEdit.vue
index b3af0bf..f64e340 100644
--- a/src/views/device/locks/addEdit.vue
+++ b/src/views/device/locks/addEdit.vue
@@ -290,6 +290,7 @@
     stationName2: formLock.stationName2,
     stationName3: formLock.stationName3,
     stationName4: formLock.stationName4,
+    lockId: formLock.lockId,
     lockIp: formLock.lockIp,
 		longitude: formLock.longitude || 0,
 		latitude: formLock.latitude || 0,
diff --git a/src/views/device/locks/index.vue b/src/views/device/locks/index.vue
index 77047e5..2c7d810 100644
--- a/src/views/device/locks/index.vue
+++ b/src/views/device/locks/index.vue
@@ -1,5 +1,5 @@
 <script setup name="LockManage">
-	import { ref, onMounted, reactive, computed, watchEffect, nextTick } from "vue";
+	import { ref, onActivated, reactive, computed, watchEffect, nextTick } from "vue";
 	import useStation from "@/hooks/useStationList.js";
 	const { stationName1, stationName2, stationName3, stationName4,
 		stationList1, stationList2, stationList3, stationList4,
@@ -57,7 +57,7 @@
   // 鏄惁鏈夋帶鍒舵潈闄�
 let isCanControl = isHasPermit("control_permit", permits.value);
 
-	onMounted(() => {
+	onActivated(() => {
 		// setTimeout(() => {
 		// 	console.log('onMounted', stationName1, stationName2, stationName3, stationName4, '=============');
 
diff --git a/src/views/device/locks/task.vue b/src/views/device/locks/task.vue
index 67b20d7..a063dc5 100644
--- a/src/views/device/locks/task.vue
+++ b/src/views/device/locks/task.vue
@@ -1,5 +1,5 @@
 <script setup name="LockTask">
-import { ref, onMounted, reactive, computed, watchEffect, nextTick } from "vue";
+import { ref, onActivated, reactive, computed, watchEffect, nextTick } from "vue";
 import addTask from "./addTask.vue";
 import {
 	getLockBl,
@@ -99,7 +99,7 @@
 	getList();
 }
 
-onMounted(() => {
+onActivated(() => {
 	getList();
 });
 </script>
diff --git a/src/views/device/realtime/index.vue b/src/views/device/realtime/index.vue
index c58228e..09fa315 100644
--- a/src/views/device/realtime/index.vue
+++ b/src/views/device/realtime/index.vue
@@ -263,6 +263,8 @@
 
 		tree.value.setCurrent(baojiId.value + '-' + stationId.value);
 	}
+
+  sendMessage();
 	// console.log('baojiId, stationId', baojiId.value, stationId.value, '=============real');
 
 })
diff --git a/src/views/device/threadManage.vue b/src/views/device/threadManage.vue
index 71cab85..7e20b3d 100644
--- a/src/views/device/threadManage.vue
+++ b/src/views/device/threadManage.vue
@@ -1,5 +1,5 @@
 <script setup name="threadManage">
-	import { ref, onMounted, reactive, computed, watchEffect } from "vue";
+	import { ref, onActivated, reactive, computed, watchEffect } from "vue";
 	import useWebSocket from "@/hooks/useWebsocket.js";
 	import formatSeconds from '@/utils/formatSeconds';
 
@@ -155,7 +155,7 @@
 		dialogVisible.value = true;
 	}
 
-	onMounted(() => {
+	onActivated(() => {
 		sendMessage();
 	});
 
diff --git a/src/views/general/alarm/alarmHis.vue b/src/views/general/alarm/alarmHis.vue
index a5b267e..726024f 100644
--- a/src/views/general/alarm/alarmHis.vue
+++ b/src/views/general/alarm/alarmHis.vue
@@ -1,5 +1,5 @@
 <script setup name="alarmHis">
-	import { ref, reactive, onMounted, watchEffect, nextTick } from "vue";
+	import { ref, reactive, onActivated, watchEffect, nextTick } from "vue";
 	import useWebSocket from "@/hooks/useWebsocket.js";
 	import useElement from "@/hooks/useElement.js";
 	import { confirmAlm, cancelAlm, delAlm } from '@/api/alarm.js';
@@ -171,7 +171,7 @@
 		});
 	}
 
-	onMounted(() => {
+	onActivated(() => {
 		endTime.value = moment().format('YYYY-MM-DD');
 		getList();
 	});
@@ -189,7 +189,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">鐪侊細</div>
                 <div class="filter-content">
-                  <el-select v-model="stationName1" clearable  placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="stationName1" clearable  placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in stationList1" :key="'province_' + idx" :label="item" :value="item" />
                   </el-select>
@@ -198,7 +198,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">甯傦細</div>
                 <div class="filter-content">
-                  <el-select v-model="stationName2" clearable  placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="stationName2" clearable  placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in stationList2" :key="'city_' + idx" :label="item" :value="item" />
                   </el-select>
@@ -207,7 +207,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">鍖哄幙锛�</div>
                 <div class="filter-content">
-                  <el-select v-model="stationName3" clearable placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="stationName3" clearable placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in stationList3" :key="'list2_' + idx" :label="item" :value="item" />
                   </el-select>
@@ -216,7 +216,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">鏈烘埧锛�</div>
                 <div class="filter-content">
-                  <el-select v-model="stationName4" clearable placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="stationName4" clearable placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in stationList4" :key="'list3_' + idx" :label="item" :value="item" />
                   </el-select>
@@ -226,7 +226,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">閿佸叿鍚嶇О锛�</div>
                 <div class="filter-content">
-                  <el-select v-model="lockName" clearable filterable placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="lockName" clearable filterable placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in lockList" :key="'list3_' + idx" :label="item.lockName" :value="item.lockName" />
                   </el-select>
diff --git a/src/views/general/alarm/alarmRt.vue b/src/views/general/alarm/alarmRt.vue
index 65ca9b4..f7f20f9 100644
--- a/src/views/general/alarm/alarmRt.vue
+++ b/src/views/general/alarm/alarmRt.vue
@@ -1,5 +1,5 @@
 <script setup name="alarmRt">
-import { ref, reactive, onMounted, watchEffect, nextTick } from "vue";
+import { ref, reactive, onActivated, watchEffect, nextTick } from "vue";
 import useWebSocket from "@/hooks/useWebsocket.js";
 import useElement from "@/hooks/useElement.js";
 import { confirmAlm, cancelAlm, delAlm } from '@/api/alarm.js';
@@ -184,7 +184,7 @@
 	});
 }
 
-onMounted(() => {
+onActivated(() => {
 	sendMessage();
 });
 </script>
diff --git a/src/views/general/log/index.vue b/src/views/general/log/index.vue
index cfbae7d..632b694 100644
--- a/src/views/general/log/index.vue
+++ b/src/views/general/log/index.vue
@@ -1,5 +1,5 @@
 <script setup name="LogManage">
-	import { ref, onMounted } from 'vue';
+	import { ref, onActivated } from 'vue';
 	import { getLockLog } from "@/api/loginfo";
 	import { getLinfById } from '@/api/lockManager.js';
 	import { getUinfById } from '@/api/user';
@@ -93,7 +93,7 @@
 		getList();
 	}
 
-	onMounted(() => {
+	onActivated(() => {
     getList();
 	});
 
@@ -143,7 +143,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">鐪侊細</div>
                 <div class="filter-content">
-                  <el-select v-model="stationName1" clearable  placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="stationName1" clearable  placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in stationList1" :key="'province_' + idx" :label="item" :value="item" />
                   </el-select>
@@ -152,7 +152,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">甯傦細</div>
                 <div class="filter-content">
-                  <el-select v-model="stationName2" clearable  placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="stationName2" clearable  placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in stationList2" :key="'city_' + idx" :label="item" :value="item" />
                   </el-select>
@@ -161,7 +161,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">鍖哄幙锛�</div>
                 <div class="filter-content">
-                  <el-select v-model="stationName3" clearable placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="stationName3" clearable placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in stationList3" :key="'list2_' + idx" :label="item" :value="item" />
                   </el-select>
@@ -170,7 +170,7 @@
               <div class="tools-filter-item">
                 <div class="filter-label">鏈烘埧锛�</div>
                 <div class="filter-content">
-                  <el-select v-model="stationName4" clearable placeholder="璇烽�夋嫨" @change="() => nextTick(() => sendMessage())" size="small"
+                  <el-select v-model="stationName4" clearable placeholder="璇烽�夋嫨" @change="() => nextTick(() => getList())" size="small"
                     style="width: 180px">
                     <el-option v-for="(item, idx) in stationList4" :key="'list3_' + idx" :label="item" :value="item" />
                   </el-select>
diff --git a/src/views/system/logs.vue b/src/views/system/logs.vue
index b34f93e..93f6c60 100644
--- a/src/views/system/logs.vue
+++ b/src/views/system/logs.vue
@@ -1,5 +1,5 @@
 <script setup>
-	import { ref, onMounted } from "vue";
+	import { ref, onActivated } from "vue";
 	import { getBaojiUserByUid } from "@/api/user";
 	import { getAreaUserLock } from '@/api/lockManager.js';
 
@@ -71,7 +71,7 @@
 		userList.value = _list;
 	}
 
-	onMounted(() => {
+	onActivated(() => {
 		getUsers();
 		getTypeList();
 		getList();

--
Gitblit v1.9.1