12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import { computed, onUnmounted, unref, watchEffect } from 'vue';
- import { useThrottle } from '/@/hooks/core/useThrottle';
- import { appStore } from '/@/store/modules/app';
- import { lockStore } from '/@/store/modules/lock';
- import { userStore } from '/@/store/modules/user';
- import { useRootSetting } from '../setting/useRootSetting';
- export function useLockPage() {
- const { getLockTime } = useRootSetting();
- let timeId: TimeoutHandle;
- function clear(): void {
- window.clearTimeout(timeId);
- }
- function resetCalcLockTimeout(): void {
- // not login
- if (!userStore.getTokenState) {
- clear();
- return;
- }
- const lockTime = appStore.getProjectConfig.lockTime;
- if (!lockTime || lockTime < 1) {
- clear();
- return;
- }
- clear();
- timeId = setTimeout(() => {
- lockPage();
- }, lockTime * 60 * 1000);
- }
- function lockPage(): void {
- lockStore.commitLockInfoState({
- isLock: true,
- pwd: undefined,
- });
- }
- watchEffect((onClean) => {
- if (userStore.getTokenState) {
- 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 {};
- }
- });
- }
|