From 20cfb19d192127e304a081ceb60ca9052f813bf7 Mon Sep 17 00:00:00 2001
From: he wei <858544502@qq.com>
Date: 星期三, 15 一月 2025 13:32:43 +0800
Subject: [PATCH] U 修改完成

---
 src/layout/index.vue |  177 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 104 insertions(+), 73 deletions(-)

diff --git a/src/layout/index.vue b/src/layout/index.vue
index ffda442..2de5a66 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -1,7 +1,7 @@
 <template>
   <div :class="classObj" class="app-wrapper">
     <div v-if="device === 'mobile' && sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
-<!--    <sidebar class="sidebar-container" />-->
+    <!--    <sidebar class="sidebar-container" />-->
     <div :class="{ hasTagsView: needTagsView }" class="main-container">
       <div :class="{ 'fixed-header': fixedHeader }">
         <navbar />
@@ -13,89 +13,120 @@
       </right-panel>
     </div>
   </div>
-  <el-drawer
-      v-model="isCollapse"
-      title="I am the title"
-      direction="ltr"
-      size="300px"
-      :with-header="false"
-      :before-close="handleClose">
+  <el-drawer v-model="isCollapseM" title="I am the title" direction="ltr" size="300px" :with-header="false"
+    :before-close="handleClose">
     <sidebar class="sidebar-container" />
   </el-drawer>
 </template>
 
 <script>
-import RightPanel from '@/components/RightPanel';
-import { AppMain, Navbar, Settings, TagsView, Sidebar } from './components';
-import ResizeMixin from './mixin/ResizeHandler';
-import { mapState } from 'pinia';
-import store from '@/store';
-import { defineComponent } from 'vue';
-import changeTheme from '@/utils/changeTheme.js';
+	import RightPanel from "@/components/RightPanel";
+	import { AppMain, Navbar, Settings, TagsView, Sidebar } from "./components";
+	import ResizeMixin from "./mixin/ResizeHandler";
+	import { mapState } from "pinia";
+	import store from "@/store";
+	import { defineComponent } from "vue";
+	import changeTheme from "@/utils/changeTheme.js";
+	import { throttle } from "@/utils/throttle.js";
+	import { pingpong } from "@/api/user";
+	import config from '@/utils/config.js';
+	const { ukey, face } = config;
 
-export default defineComponent({
-  name: 'LayoutIndex',
-  components: {
-    AppMain,
-    Navbar,
-    RightPanel,
-    Settings,
-    TagsView,
-    Sidebar
-  },
-  watch: {
-    theme() {
-      changeTheme(this.theme);
-    }
-  },
-  mixins: [ResizeMixin],
-  computed: {
-    ...mapState(store.app, ['sidebar']),
-    ...mapState(store.app, ['sidebar', 'device']),
-    ...mapState(store.settings, {
-      theme: 'theme',
-      showSettings: 'showSettings',
-      needTagsView: 'tagsView',
-      fixedHeader: 'fixedHeader',
-      secondMenuPopup: 'secondMenuPopup'
-    }),
-    classObj() {
-      return {
-        hideSidebar: !this.sidebar.opened,
-        openSidebar: this.sidebar.opened,
-        withoutAnimation: this.sidebar.withoutAnimation,
-        mobile: this.device === 'mobile'
-      };
-    },
-    isCollapse() {
-      if (this.secondMenuPopup) {
-        return true;
+	const throttleConect = throttle(pingpong, 1000);
+
+	export default defineComponent({
+		name: "LayoutIndex",
+		components: {
+			AppMain,
+			Navbar,
+			RightPanel,
+			Settings,
+			TagsView,
+			Sidebar,
+		},
+		watch: {
+			theme() {
+				changeTheme(this.theme);
+			},
+			isCollapse: {
+				handler(val) {
+					this.isCollapseM = val;
+				},
+				immediate: true,
+			},
+      isIn: {
+       async handler(val) {
+         if (ukey && !val) {
+           await store.user().logout();
+           // console.log('logout', '=============');
+ 
+           router.push(`/login?redirect=${route.fullPath}`);
+         }
+       },
+        immediate: true
       }
-      return !this.sidebar.opened;
-    }
-  },
-  methods: {
-    handleClickOutside() {
-      store.app().closeSidebar({ withoutAnimation: false });
-    },
-    handleClose() {
-      store.app().toggleSidebar();
-    }
-  },
-  beforeMount() {
-    changeTheme(this.theme);
-  },
-  mounted() {
-
-  }
-});
+		},
+		mixins: [ResizeMixin],
+		computed: {
+			...mapState(store.app, ["sidebar"]),
+			...mapState(store.app, ["sidebar", "device"]),
+			...mapState(store.ukey, ["isIn"]),
+			...mapState(store.settings, {
+				theme: "theme",
+				showSettings: "showSettings",
+				needTagsView: "tagsView",
+				fixedHeader: "fixedHeader",
+				secondMenuPopup: "secondMenuPopup",
+			}),
+			classObj() {
+				return {
+					hideSidebar: !this.sidebar.opened,
+					openSidebar: this.sidebar.opened,
+					withoutAnimation: this.sidebar.withoutAnimation,
+					mobile: this.device === "mobile",
+				};
+			},
+			isCollapse() {
+				if (this.secondMenuPopup) {
+					return true;
+				}
+				return !this.sidebar.opened;
+			},
+		},
+		data() {
+			return {
+				isCollapseM: false,
+			};
+		},
+		methods: {
+			handleClickOutside() {
+				store.app().closeSidebar({ withoutAnimation: false });
+			},
+			handleClose() {
+				store.app().toggleSidebar();
+			},
+		},
+		beforeMount() {
+			changeTheme(this.theme);
+		},
+		mounted() {
+			document.addEventListener("click", throttleConect);
+			document.addEventListener("mousemove", throttleConect);
+			document.addEventListener("keydown", throttleConect);
+		},
+		unMounted() {
+			document.removeEventListener("click", throttleConect);
+			document.removeEventListener("mousemove", throttleConect);
+			document.removeEventListener("keydown", throttleConect);
+		},
+	});
 </script>
 
 <style lang="scss" scoped>
-@import "@/styles/mixin.scss";
+@use "@/styles/mixin.scss";
 
 .app-wrapper {
-  @include clearfix;
+  // @include clearfix;
   position: relative;
   height: 100%;
   width: 100%;
@@ -126,7 +157,7 @@
 }
 
 .hideSidebar .fixed-header {
-  width: calc(100%)
+  width: calc(100%);
 }
 
 .mobile .fixed-header {

--
Gitblit v1.9.1