53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
|
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
|
||
|
}
|
||
|
}
|