uniapp 长时间不操作,自动退出登录页

news/2024/10/18 0:35:29/

store 下的inex.js文件

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)const store = new Vuex.Store({state: {// 记录最后一次点击时间的元素lastTime: new Date().getTime(),},mutations: {//点击事件调用,刷新最后一次点击时间lastTimeUpdata: (state, lastTime) => {state.lastTime = lastTime;}},actions: {}
})
export default store

time.js

import store from '../store/index.js';
export const timeOut = () => {let WebviewList = [];// 上一次点击时间let lastTime = null// 当前时间let currentTime = null// 超时时间【可以自己设置】// let sys_timeout = 5 * 1000let sys_timeout = 30 * 60 * 1000// 每隔多长时间检查是否超时【可以自己设置】let check_time = 1000// 计时器【此为功能实现的方法,现在为空】	let goOut = nullconst isTimeOut = () => {// 页面上一次的点击时间lastTime = store.state.lastTimecurrentTime = new Date().getTime()// 超时了if ((currentTime - lastTime) > sys_timeout) {return true;} else {return false;}}const isLoginOut = () => {clearInterval(goOut);//setInterval方法来确定多长时间检测一次有没有超时goOut = setInterval(() => {// #ifdef APP-PLUSvar pages = getCurrentPages();var page = pages[pages.length - 1];var currentWebview = page.$getAppWebview();// console.log(currentWebview); //获得当前webview的id// 判断一下是否超时,如果超时了就退出if (isTimeOut()) {if (currentWebview.__uniapp_route != 'pages/index/index') {// 需要转到的页面【这里用你自己的跳转方法和地址】uni.reLaunch({url: `/pages/index/index`,});}//已经超时跳转到相应界面,不需要计时了// clearInterval(goOut)} else {}let flag = false;for (let webview of WebviewList) {if (webview.__uniapp_route == currentWebview.__uniapp_route) {flag = true;}}if (!flag) {WebviewList.push(currentWebview);currentWebview.addEventListener('touchstart', function() {console.log('点击了');store.commit('lastTimeUpdata', new Date().getTime());}, false);currentWebview.addEventListener('close', function() {// console.log('关闭了');for (var i = 0; i < WebviewList.length; i++) {if (WebviewList[i].__uniapp_route == currentWebview.__uniapp_route) {WebviewList.splice(i, 1);}}}, false);}// #endif// #ifdef H5if (isTimeOut()) {// 需要转到的页面【这里用你自己的跳转方法和地址】uni.reLaunch({url: `/pages/index/index`,});//已经超时跳转到相应界面,不需要计时了// clearInterval(goOut)}// #endif}, check_time);}isLoginOut();
}

main.js 挂载全局

import store from './store/index.js'
Vue.prototype.$store = store

app.vue文件引用

<script>
import { timeOut } from './common/time.js';
export default {onLaunch: function() {let that = this;console.log('App Launch');timeOut();// #ifdef H5// /* 实现全局点击事件监听 */setTimeout(function() {var body_ = document.getElementsByTagName('body')[0];body_.addEventListener('click', function() {that.$store.commit('lastTimeUpdata', new Date().getTime());});}, 1000);// #endif},onShow: function() {console.log('App Show');},onHide: function() {console.log('App Hide');}
};
</script>

http://www.ppmy.cn/news/998220.html

相关文章

时间装饰器

import timedef timer_decorator(func):def wrapper(*args, **kwargs):start_time time.time()result func(*args, **kwargs)end_time time.time()execution_time end_time - start_timeprint(f"函数 {func.__name__} 的执行时间为&#xff1a;{execution_time:.2f} 秒…

LeetCode_贪心算法_中等_763.划分字母区间

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍…

HTML拖拽

拖拽的流程&#xff1a;鼠标按下(mousedown)→鼠标移动(mousemove)→鼠标松开(moveup) 需要理解的几个api&#xff1a; clientX/clientY: 相对于浏览器视窗内的位置坐标&#xff08;不包括浏览器收藏夹和顶部网址部分&#xff09;pageX/pageY: 该属性会考虑滚动&#xff0c;如…

<C++> 三、内存管理

1.C/C内存分布 我们先来看下面的一段代码和相关问题 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";const char *pChar3 "abcd";int *ptr1…

Devops系统中jira平台迁移

需求:把aws中的devops系统迁移到华为云中,其中主要是jira系统中的数据迁移,主要方法为在华为云中建立一套 与aws相同的devops平台,再把数据库和文件系统中的数据迁移,最后进行测试。 主要涉及到的服务集群CCE、数据库mysql、弹性文件服务SFS、数据复制DRS、弹性负载均衡ELB。 迁…

MyBatis的使用方法

文章目录 一、MyBatis的创建准备工作 二、MyBatis的使用1.项目分层2.业务代码1&#xff09;使用XML的方法2&#xff09;直接使用注解 总结 一、MyBatis的创建 准备工作 1.添加依赖 旧项目 方法一&#xff1a;在pom.xml中添加MyBatis和MySQL Diver依赖 <!-- 添加 MyBati…

ubuntu2204中vscode无法输入中文

解决方法&#xff1a;重新安装VSCode。 我一开始是在ubuntu商店下载的&#xff0c;结果上网查了了下&#xff0c;商店里的VSCode是阉割版的&#xff0c;想要输入中文就要重新安装。 安装流程&#xff1a;先删除再安装。 1.可以在商店里已安装界面下选择移除&#xff0c;或者…

TypeScript基础学习

目录 一、安装 1、下载国内镜像 2、安装 3、查看安装情况 4、使用例子 二、变量声明 1、规则 2、声明的四种方式 3、注意 4、类型断言 5、类型推断 6、变量作用域 三、基础类型&#xff08;共11种&#xff09; 1、Any 类型 2、Null 和 Undefined 3、never 类型…