29 lines
690 B
Vue
29 lines
690 B
Vue
<template>
|
||
<div class="app-shell" :class="{ 'app-locked': session.locked }">
|
||
<router-view />
|
||
<LockScreenModal v-if="session.locked" />
|
||
</div>
|
||
<!-- TODO: 预留聚合接口页面:/study/{id}/overview /subjects/{id}/detail /sites/{id}/summary -->
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
import { useSessionStore } from "./store/session";
|
||
import { initSessionManager } from "./session/sessionManager";
|
||
import LockScreenModal from "./components/LockScreenModal.vue";
|
||
|
||
initSessionManager();
|
||
const session = useSessionStore();
|
||
</script>
|
||
|
||
<style scoped>
|
||
.app-shell {
|
||
min-height: 100vh;
|
||
min-height: 100dvh;
|
||
}
|
||
|
||
.app-locked {
|
||
pointer-events: none;
|
||
user-select: none;
|
||
}
|
||
</style>
|