|
@@ -1,9 +1,11 @@
|
|
|
<script lang="ts" setup>
|
|
|
import type { SetupContext } from 'vue';
|
|
|
+import type { RouteLocationNormalizedLoaded } from 'vue-router';
|
|
|
|
|
|
import type { MenuRecordRaw } from '@vben/types';
|
|
|
|
|
|
-import { computed, useSlots, watch } from 'vue';
|
|
|
+import { computed, onMounted, useSlots, watch } from 'vue';
|
|
|
+import { useRoute } from 'vue-router';
|
|
|
|
|
|
import { useRefresh } from '@vben/hooks';
|
|
|
import { $t, i18n } from '@vben/locales';
|
|
@@ -153,6 +155,23 @@ function clickLogo() {
|
|
|
emit('clickLogo');
|
|
|
}
|
|
|
|
|
|
+function autoCollapseMenuByRouteMeta(route: RouteLocationNormalizedLoaded) {
|
|
|
+ // 只在双列模式下生效
|
|
|
+ if (
|
|
|
+ preferences.app.layout === 'sidebar-mixed-nav' &&
|
|
|
+ route.meta &&
|
|
|
+ route.meta.hideInMenu
|
|
|
+ ) {
|
|
|
+ sidebarExtraVisible.value = false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const route = useRoute();
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ autoCollapseMenuByRouteMeta(route);
|
|
|
+});
|
|
|
+
|
|
|
watch(
|
|
|
() => preferences.app.layout,
|
|
|
async (val) => {
|