diff --git a/src/App.vue b/src/App.vue index 0ca0af0376de2dd16347b8ad1675e0133f74d3b2..f4f1f3e04f6e8bf2c8b3e7b7cfaeec962d86c283 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 0000000000000000000000000000000000000000..a35256f1a4db8092e88d8e6df091b5d8e4672c87 --- /dev/null +++ b/src/lipeng.vue @@ -0,0 +1,257 @@ + + + + diff --git a/src/page/index.vue b/src/page/index.vue index 31f068e54688fdec873797f7c67f2ff0422b2c15..5c2df27f99669a3bfc806429cef90a245b2cdbf5 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 63ab0539b856deabbc81a1a4c29e1741b8addf15..7b0ca0a6dd56a429c3a2eb6ab509710547d7613e 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(),