fix(dashboard): correct overview data and states

This commit is contained in:
2026-08-05 09:29:34 +08:00
parent 14a2ed7df8
commit d88e18bd09
8 changed files with 77 additions and 42 deletions

View File

@@ -1,5 +1,5 @@
<script lang="tsx">
import { compile, computed, defineComponent, h, ref } from 'vue';
import { compile, computed, defineComponent, h, ref, watch } from 'vue';
import type { RouteMeta } from 'vue-router';
import { type RouteRecordRaw, useRoute, useRouter } from 'vue-router';
import { useAppStore } from '@/store';
@@ -67,21 +67,24 @@ export default defineComponent({
});
return result;
};
listenerRouteChange((newRoute) => {
const syncMenuSelection = (newRoute: typeof route) => {
const { requiresAuth, activeMenu, hideInMenu } = newRoute.meta;
if (requiresAuth && (!hideInMenu || activeMenu)) {
const target = (activeMenu || newRoute.name) as string;
const menuOpenKeys = findMenuOpenKeys(
(activeMenu || newRoute.name) as string,
target,
);
if (!menuOpenKeys.length) return;
const keySet = new Set([...menuOpenKeys, ...openKeys.value]);
openKeys.value = [...keySet];
selectedKey.value = [
activeMenu || menuOpenKeys[menuOpenKeys.length - 1],
];
selectedKey.value = [target];
}
}, true);
};
listenerRouteChange(syncMenuSelection, true);
watch(menuTree, () => syncMenuSelection(route), { deep: true, flush: 'post' });
const setCollapse = (val: boolean) => {
if (appStore.device === 'desktop')
appStore.updateSettings({ menuCollapse: val });