|
|
@@ -87,7 +87,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { defineProps, reactive } from 'vue'
|
|
|
+import { defineProps, reactive, onMounted, onUnmounted } from 'vue'
|
|
|
import useUserInfo from '@/stores/modules/user'
|
|
|
import { useRouter } from 'vue-router'
|
|
|
import iconsz from './assets/shezhi@2x.png'
|
|
|
@@ -157,7 +157,6 @@ const menuType = reactive({
|
|
|
},
|
|
|
ota: {
|
|
|
name: '版本更新',
|
|
|
- icon: gengxin,
|
|
|
click: openOTA
|
|
|
}
|
|
|
})
|
|
|
@@ -254,6 +253,28 @@ function loginOut() {
|
|
|
useUserInfoStore.loginOut()
|
|
|
useUserInfoStore.updateLoginShow(true)
|
|
|
}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ document.addEventListener('click', handleOutsideClick)
|
|
|
+})
|
|
|
+
|
|
|
+onUnmounted(() => {
|
|
|
+ document.removeEventListener('click', handleOutsideClick)
|
|
|
+})
|
|
|
+
|
|
|
+function handleOutsideClick(event: MouseEvent) {
|
|
|
+ const menuElement = document.querySelector('.header-bar__menu')
|
|
|
+ if (menuElement && !menuElement.contains(event.target as Node)) {
|
|
|
+ // 关闭所有一级菜单
|
|
|
+ for (const key in submenuOpen) {
|
|
|
+ submenuOpen[key] = false
|
|
|
+ }
|
|
|
+ // 关闭所有三级菜单
|
|
|
+ for (const key in thirdLevelOpen) {
|
|
|
+ thirdLevelOpen[key] = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
@@ -384,6 +405,7 @@ function loginOut() {
|
|
|
border-radius: 4px;
|
|
|
overflow: hidden;
|
|
|
display: none;
|
|
|
+ margin-top: 5px;
|
|
|
|
|
|
&.submenu-open {
|
|
|
display: block;
|