From e4af79bc99931bf63e5b2df3bce19afd271dd02a Mon Sep 17 00:00:00 2001 From: lipeng Date: Wed, 17 May 2023 17:27:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=AA=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=8E=A8=E5=87=BA=E7=B3=BB=E7=BB=9F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 61 +++++++++- src/lipeng.vue | 257 +++++++++++++++++++++++++++++++++++++++ src/page/index.vue | 46 +++---- src/page/login/index.vue | 1 + 4 files changed, 332 insertions(+), 33 deletions(-) create mode 100644 src/lipeng.vue diff --git a/src/App.vue b/src/App.vue index 0ca0af0..f4f1f3e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -46,6 +46,9 @@ import login from "@/page/login/index.vue"; import page404 from "@/page/404.vue"; import register from "@/page/register/index.vue"; import password from "@/page/password/index.vue"; +import { clearCookie } from "@/services/cookie.js"; +import { resetRouter } from "@/router/index"; + export default { components: { bgMenu, @@ -111,8 +114,64 @@ export default { created() { // this.initMsg() }, - mounted() {}, + mounted() { + this.getSysOptions(); + }, methods: { + /** + * 设置用户多久不操作就跳转到登录界面 + * limit:用户无操作时常限制(分钟) + */ + + exitSystemAfterLimit(limit) { + window.lastOperateTime = new Date(); + window.onload = this.addOperateListener; + this.setTimer(limit); + }, + //绑定用户操作事件 + addOperateListener() { + document.addEventListener("mousemove", this.resetStartTime); + document.addEventListener("keydown", this.resetStartTime); + document.addEventListener("scroll", this.resetStartTime); + document.addEventListener("touchstart", this.resetStartTime); + }, + //重置起始时间 + resetStartTime() { + window.lastOperateTime = new Date(); + }, + //设置定时器 + setTimer(limit) { + window.logTimer = setInterval(() => { + var currentTime = new Date(); + var timeDiff = currentTime.getTime() - lastOperateTime.getTime(); + if (timeDiff > limit * 60 * 1000) { + clearInterval(window.logTimer); + this.$axios.post(`/apaas/system/v5/user/logout`).then((res) => { + if (res.data.code == "200") { + window.location.href = `/apaas/manage/ui/#/login`; + this.$store.commit("setUserInfo", null); + clearCookie("bgToken"); + this.$message.success("退出成功"); + resetRouter(); + } else { + this.$message.error("退出失败"); + } + }); + } + }, 1000); + }, + + getSysOptions() { + axios.get(`/apaas/system/v5/sysOptions`).then((res) => { + if (res.data.code == 200) { + const result = res.data.data || {}; + if (result.session_validity) this.exitSystemAfterLimit(result.session_validity); + } else { + this.$message.error(res.data.data); + } + }); + }, + openMsg(data) { this.readFlag = !this.readFlag; }, diff --git a/src/lipeng.vue b/src/lipeng.vue new file mode 100644 index 0000000..a35256f --- /dev/null +++ b/src/lipeng.vue @@ -0,0 +1,257 @@ + + + + diff --git a/src/page/index.vue b/src/page/index.vue index 31f068e..5c2df27 100644 --- a/src/page/index.vue +++ b/src/page/index.vue @@ -1,40 +1,22 @@ - + diff --git a/src/page/login/index.vue b/src/page/login/index.vue index 63ab053..7b0ca0a 100644 --- a/src/page/login/index.vue +++ b/src/page/login/index.vue @@ -107,6 +107,7 @@ const getSysOptions = () => { axios.get(`/apaas/system/v5/sysOptions`).then((res) => { if (res.data.code == 200) { const result = res.data.data || {}; + if (result.session_validity) exitSystemAfterLimit(result.session_validity); if (result.license_dead_date && result.license_inform_day) { calculateValidityDays( new Date().getTime(), -- 2.26.0