App.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <el-config-provider size="default" :zIndex="zIndex">
  3. <AppProvider>
  4. <RouterView v-if="!isLock" />
  5. <transition v-if="isLock && $route.name !== LoginName" name="slide-up">
  6. <LockScreen />
  7. </transition>
  8. </AppProvider>
  9. </el-config-provider>
  10. </template>
  11. <script lang="ts" setup>
  12. import { computed, onMounted, onUnmounted, ref } from 'vue';
  13. import { ElConfigProvider } from 'element-plus';
  14. import { LockScreen } from '@/components/Lockscreen';
  15. import { AppProvider } from '@/components/Application';
  16. import { useLockscreenStore } from '@/store/modules/lockscreen';
  17. import { useRoute } from 'vue-router';
  18. import { PageEnum } from '@/enums/pageEnum';
  19. import { useGlobSetting } from './hooks/setting';
  20. const route = useRoute();
  21. const useLockscreen = useLockscreenStore();
  22. const { title } = useGlobSetting();
  23. /** 设置不锁屏幕 */
  24. // const isLock = computed(() => useLockscreen.isLock);
  25. const isLock = ref(false);
  26. const lockTime = computed(() => useLockscreen.lockTime);
  27. const zIndex = ref(3000);
  28. const LoginName = PageEnum.BASE_LOGIN_NAME;
  29. let timer;
  30. const timekeeping = () => {
  31. clearInterval(timer);
  32. if (route.name === LoginName || isLock.value) return;
  33. // 设置不锁屏
  34. useLockscreen.setLock(false);
  35. // 重置锁屏时间
  36. useLockscreen.setLockTime();
  37. timer = setInterval(() => {
  38. // 锁屏倒计时递减
  39. useLockscreen.setLockTime(lockTime.value - 1);
  40. if (lockTime.value <= 0) {
  41. // 设置锁屏
  42. useLockscreen.setLock(true);
  43. return clearInterval(timer);
  44. }
  45. }, 1000);
  46. };
  47. onMounted(() => {
  48. document.addEventListener('mousedown', timekeeping);
  49. document.title = title;
  50. });
  51. onUnmounted(() => {
  52. document.removeEventListener('mousedown', timekeeping);
  53. });
  54. </script>
  55. <style lang="scss">
  56. #nprogress .bar {
  57. background: var(--el-color-primary);
  58. }
  59. </style>