Appearance
会话超时 Hooks:useIdleTimeout
useIdleTimeout 监听页面活动(点击 / 按键 / 滚轮 / 触摸 / 移动节流),无操作接近超时时进入预警期(warnBefore 提前量),倒计时归零触发锁定;期间任何活动即重置。金融 / 政务合规端的「临时离席锁」标配,与 BizLockScreen 配合:onTimeout 锁屏、解锁后 unlock() 重新计时。
基本用法
vue
<script setup lang="ts">
import { ref } from 'vue'
import { useIdleTimeout } from 'vue3-ep-biz-lib'
const locked = ref(false)
const idle = useIdleTimeout({
timeout: 15 * 60 * 1000, // 15 分钟无操作超时
warnBefore: 60 * 1000, // 最后 1 分钟预警
onWarn: () => showMessage('长时间未操作,即将锁定屏幕'),
onTimeout: () => (locked.value = true),
})
const onUnlock = (): void => {
locked.value = false
idle.unlock() // 重新开始计时
}
</script>API
useIdleTimeout(options): UseIdleTimeoutReturn
| 成员 | 类型 | 说明 |
|---|---|---|
| remaining | Ref<number> | 剩余毫秒(秒级步进,可做倒计时展示) |
| warning | Ref<boolean> | 是否处于预警期 |
| locked | Ref<boolean> | 是否已锁定(超时或手动 lock) |
| reset | () => void | 手动重置计时(等同发生一次活动) |
| lock | () => void | 手动锁定(立即触发 onTimeout,不重复触发) |
| unlock | () => void | 解锁并重新计时 |
options
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| timeout | number | 1800000 | 无操作超时毫秒(30 分钟) |
| warnBefore | number | 60000 | 预警提前量毫秒(0 不预警) |
| events | string[] | click / keydown / wheel / touchstart / pointermove | 视为「活动」的事件 |
| onWarn | (remaining) => void | — | 进入预警期 |
| onTimeout | () => void | — | 超时(锁定 / 登出时机) |
| onCancel | () => void | — | 预警后有活动,取消倒计时 |