123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { computed, onUnmounted, unref, watchEffect } from 'vue';
- import { useThrottle } from '/@/hooks/core/useThrottle';
- import { useAppStore } from '/@/store/modules/app';
- import { useLockStore } from '/@/store/modules/lock';
- import { useUserStore } from '/@/store/modules/user';
- import { useRootSetting } from '../setting/useRootSetting';
- export function useLockPage() {
- const { getLockTime } = useRootSetting();
- 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.getToken) {
- clear();
- return;
- }
- const lockTime = appStore.getProjectConfig.lockTime;
- if (!lockTime || lockTime < 1) {
- clear();
- return;
- }
- clear();
- timeId = setTimeout(() => {
- lockPage();
- }, lockTime * 60 * 1000);
- }
- function lockPage(): void {
- lockStore.setLockInfo({
- isLock: true,
- pwd: undefined,
- });
- }
- watchEffect((onClean) => {
- if (userStore.getToken) {
- resetCalcLockTimeout();
- } else {
- clear();
- }
- onClean(() => {
- clear();
- });
- });
- onUnmounted(() => {
- clear();
- });
- const [keyupFn] = useThrottle(resetCalcLockTimeout, 2000);
- return computed(() => {
- if (unref(getLockTime)) {
- return { onKeyup: keyupFn, onMousemove: keyupFn };
- } else {
- clear();
- return {};
- }
- });
- }
|