1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import { computed, onUnmounted, unref, watchEffect } from "vue";
- import { useThrottleFn } from "@vueuse/core";
- // import { useAppStore } from '/@/store/modules/app';
- import { useLockStore } from "@/stores/modules/lock";
- // import { useUserStore } from '/@/store/modules/user';
- // import { useRootSetting } from '../setting/useRootSetting';
- import { useUserStore } from "@/stores/modules/user";
- import { useGlobalStore } from "@/stores/modules/global";
- import type { TimeoutHandle } from "@/typings/global";
- export function useLockPage() {
- const { autoLockTime } = useGlobalStore();
- const lockStore = useLockStore();
- const userStore = useUserStore();
- // const appStore = useAppStore();
- let timeId: TimeoutHandle;
- function clear(): void {
- window.clearTimeout(timeId);
- }
- function resetCalcLockTimeout(): void {
- // not login
- if (!userStore.token) {
- clear();
- return;
- }
- // const lockTime = appStore.getProjectConfig.lockTime;
- const lockTime = autoLockTime;
- if (!lockTime || lockTime < 1) {
- clear();
- return;
- }
- clear();
- timeId = setTimeout(() => {
- lockPage();
- }, lockTime * 60 * 1000);
- }
- function lockPage(): void {
- lockStore.setLockInfo({
- isLock: true,
- psw: undefined
- });
- }
- watchEffect(onClean => {
- if (userStore.token) {
- resetCalcLockTimeout();
- } else {
- clear();
- }
- onClean(() => {
- clear();
- });
- });
- onUnmounted(() => {
- clear();
- });
- const keyupFn = useThrottleFn(resetCalcLockTimeout, 2000);
- return computed(() => {
- if (unref(autoLockTime)) {
- return { onKeyup: keyupFn, onMousemove: keyupFn };
- } else {
- clear();
- return {};
- }
- });
- }
|