main-web/src/layouts/components/personal/useTokenAndLock.ts

53 lines
1.3 KiB
TypeScript
Raw Normal View History

2024-08-20 12:11:33 +00:00
import { computed, onMounted, onUnmounted } from 'vue'
import { useStore } from 'vuex'
import { useRouter, useRoute } from 'vue-router'
export default function () {
const store = useStore()
const router = useRouter()
const route = useRoute()
function init() {
store.commit('SET_OPERATETIME')
let lockData = localStorage.getItem('lockData')
if (lockData) {
lockData = JSON.parse(lockData)
if ((lockData as any).isLock) router.push({ name: 'LockMe' })
}
}
init()
const operateTime = computed(() => store.state.app.operateTime)
const lockScreenTime = computed(() => store.getters.systemConfig.lockScreenTime)
let timer: any = 0
function clearTimer() {
clearInterval(timer)
timer = 0
}
onMounted(() => {
timer = setInterval(() => {
// 锁屏
const interval = 1000 * 60 * Number(lockScreenTime.value)
// checkUserStatus()
if (interval && new Date().getTime() - operateTime.value >= interval) {
lockScreen()
}
}, 1000 * 20)
})
onUnmounted(clearTimer)
// 锁屏
function lockScreen() {
localStorage.setItem(
'lockData',
JSON.stringify({
path: route.fullPath,
isLock: true
})
)
router.push({ name: 'LockMe' })
}
return {
lockScreen
}
}