fix setting scroll
This commit is contained in:
@@ -60,7 +60,12 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
let settingTabScrollTop: number | undefined;
|
||||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onBeforeRouteLeave } from "vue-router";
|
||||
import { type Role as UserRole, RoleAPI, UserAPI, useUserStore } from "timi-web";
|
||||
import { buildFallbackAvatar } from "@/utils/avatar";
|
||||
import { moduleCode } from "@/store/permissionSettingsStore";
|
||||
@@ -84,8 +89,14 @@ defineOptions({
|
||||
});
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const userStore = useUserStore();
|
||||
|
||||
function getSettingTabPage(): HTMLElement | undefined {
|
||||
return Array.from(document.querySelectorAll<HTMLElement>(".page-transition .pages"))
|
||||
.find(element => !!element.querySelector(".management-tab"));
|
||||
}
|
||||
|
||||
const currentUser = computed(() => userStore.loginUser.user);
|
||||
|
||||
const currentUserAvatar = computed(() => buildUserAvatar(currentUser.value));
|
||||
@@ -250,9 +261,28 @@ async function go(item: MenuItem | string): Promise<void> {
|
||||
await router.push(item.path);
|
||||
}
|
||||
|
||||
function restoreScrollPosition(): void {
|
||||
if (settingTabScrollTop === undefined || route.path !== "/management") {
|
||||
return;
|
||||
}
|
||||
const scrollTop = settingTabScrollTop;
|
||||
const settingTabPage = getSettingTabPage();
|
||||
if (!settingTabPage) {
|
||||
return;
|
||||
}
|
||||
settingTabPage.scrollTop = scrollTop;
|
||||
settingTabScrollTop = undefined;
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
restoreScrollPosition();
|
||||
await loadCurrentRoleList();
|
||||
});
|
||||
onBeforeRouteLeave(() => {
|
||||
const settingTabPage = getSettingTabPage();
|
||||
const scrollElement = document.scrollingElement;
|
||||
settingTabScrollTop = settingTabPage?.scrollTop ?? scrollElement?.scrollTop ?? window.scrollY;
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
Reference in New Issue
Block a user