From 700163362595ddfe782782dda045b03ac123bb4a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E7=BA=A2=E4=B8=BD?= <1181930680@qq.com>
Date: Thu, 19 Dec 2024 10:25:36 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=B6=88=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/App.vue          | 16 ++--------------
 src/layout/index.vue | 16 +++++++++++++++-
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index 7162350..bc30e34 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -5,12 +5,11 @@
   <transition v-if="isLock && $route.name !== 'login'" name="slide-up">
     <LockScreen />
   </transition>
-  <global-websocket :uri="'/api/websocket/'+userInfo.id" @rollback="rollback" />
 </template>
 
 <script lang="ts" setup>
-  import { computed, onMounted, onUnmounted,defineAsyncComponent ,h } from 'vue';
-  import { ConfigProvider,notification } from 'ant-design-vue';
+  import { computed, onMounted, onUnmounted ,h } from 'vue';
+  import { ConfigProvider } from 'ant-design-vue';
   import { LockScreen } from '@/components/Lockscreen';
   import { useLockscreenStore } from '@/store/modules/lockscreen';
   import { useRoute } from 'vue-router';
@@ -19,16 +18,12 @@
   import dayjs from 'dayjs';
   import { useProjectSetting } from '@/hooks/setting/useProjectSetting';
   import Watermark from '@/utils/wartermark';
-  import { initWebSocket,sendWebSocket } from '@/components/Websocket/index';
-  const GlobalWebsocket = defineAsyncComponent(() => import('@/components/Websocket/index.vue'));
   import 'dayjs/locale/zh-cn';
   dayjs.locale('zh-cn');
 
   const route = useRoute();
   const locale = zhCN;
   const useLockscreen = useLockscreenStore();
-  const userStore = useUserStore();
-  const userInfo: object = userStore.getUserInfo || {};
   const isLock = computed(() => useLockscreen.isLock);
   const lockTime = computed(() => useLockscreen.lockTime);
   const {getIsWaterMark} = useProjectSetting();
@@ -51,13 +46,6 @@
       }
     }, 1000);
   };
-  const rollback = (msg)=>{
-    notification.info({
-        message: '通知',
-        description: () =>
-          h('div', msg),
-      });
-  }
   onMounted(() => {
     if(getIsWaterMark.value) {
       const waterText = import.meta.env.VITE_GLOB_APP_TITLE;
diff --git a/src/layout/index.vue b/src/layout/index.vue
index 6a2f9d1..030ead4 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -49,11 +49,13 @@
         />
       </div>
     </template>
+    <global-websocket :uri="'/api/websocket/'+userInfo.id" @rollback="rollback" />
   </div>
 </template>
 <script lang="ts" setup>
-  import { ref, unref, reactive, computed, provide, h, watchEffect, watch } from 'vue';
+  import { ref, unref, reactive, computed, provide, h, watchEffect, watch,defineAsyncComponent } from 'vue';
   import { useAsyncRouteStore } from '@/store/modules/asyncRoute';
+  import {notification } from 'ant-design-vue';
   import { generatorMenu } from '@/utils/index';
   import { useRouter } from 'vue-router';
   import { TabsView } from './components/TagsView';
@@ -66,12 +68,17 @@
   import { useProjectSettingStore } from '@/store/modules/projectSetting';
   import type { RouteContextProps } from '@ant-design-vue/pro-layout';
   import { useFullscreen } from '@vueuse/core';
+  import { useUserStore } from '@/store/modules/user';
   import ProjectSetting from './components/Header/ProjectSetting.vue';
   import { SettingOutlined } from '@ant-design/icons-vue';
+  import { initWebSocket } from '@/components/Websocket/index';
+  const GlobalWebsocket = defineAsyncComponent(() => import('@/components/Websocket/index.vue'));
 
   // 当前路由
   const router = useRouter();
   const settingStore = useProjectSettingStore();
+  const userStore = useUserStore();
+  const userInfo: object = userStore.getUserInfo || {};
   const {
     getLayout,
     getNavTheme,
@@ -166,6 +173,13 @@
     const { openDrawer } = drawerSetting.value;
     openDrawer();
   }
+  const rollback = (msg)=>{
+    notification.info({
+        message: '通知',
+        description: () =>
+          h('div', msg),
+      });
+  }
 </script>
 <style lang="less" scoped>
   .ant-admin-layout {