From b795f534a00c39ff97ff6069aca7908fbf44141c Mon Sep 17 00:00:00 2001
From: ldj_willow <ldj_willow@163.com>
Date: Thu, 3 Nov 2022 13:25:24 +0800
Subject: [PATCH] =?UTF-8?q?15=E5=88=86=E9=92=9F=E6=9C=AA=E6=93=8D=E4=BD=9C?=
 =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=A6=96=E9=A1=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 acs/nladmin-ui/src/App.vue | 76 +++++++++++---------------------------
 lms/nladmin-ui/src/App.vue | 76 +++++++++++---------------------------
 2 files changed, 42 insertions(+), 110 deletions(-)

diff --git a/acs/nladmin-ui/src/App.vue b/acs/nladmin-ui/src/App.vue
index 3f8e408..2f82bcc 100644
--- a/acs/nladmin-ui/src/App.vue
+++ b/acs/nladmin-ui/src/App.vue
@@ -1,5 +1,5 @@
 <template>
-  <div id="app">
+  <div id="app" @mousemove="moveEvent" @click="moveEvent">
     <router-view />
   </div>
 </template>
@@ -7,63 +7,29 @@
 <script>
 export default {
   name: 'App',
-  created() {
-    this.webSocket() // token过期提示
+  data() {
+    return {
+      timmer: null
+    }
   },
   methods: {
-    webSocket() {
-      const that = this
-      if (typeof (WebSocket) === 'undefined') {
-        this.$notify({
-          title: '提示',
-          message: '当前浏览器无法接收实时报警信息,请使用谷歌浏览器!',
-          type: 'warning',
-          duration: 0
-        })
-      } else {
-        const id = 'exp-token'
-        // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改
-        // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送
-        // const socketUrl = process.env.VUE_APP_WS_API + id
-        const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + id
-        this.socket = new WebSocket(wsUri)
-        // 监听socket打开
-        this.socket.onopen = function() {
-          that.socket.send('测试客户端发送消息')
-        }
-        const _this = this
-        // 监听socket消息接收
-        this.socket.onmessage = function(msg) {
-          const data = JSON.parse(msg.data)
-          _this.$confirm(data.msg, '提示', {
-            confirmButtonText: '确定',
-            closeOnClickModal: false,
-            showCancelButton: false,
-            type: 'warning'
-          }).then(() => {
-            _this.$router.push('/login')
-          }).catch(() => {
-            this.$message({
-              type: 'info',
-              message: '已取消'
-            })
-          })
-        }
-
-        // 监听socket错误
-        this.socket.onerror = function() {
-          that.$notify({
-            title: '错误',
-            message: '服务器错误,无法接收实时报警信息',
-            type: 'error',
-            duration: 0
-          })
-        }
-        // 监听socket关闭
-        this.socket.onclose = function() {
-          console.log('WebSocket已关闭')
-        }
+    moveEvent: function() {
+      const path = ['/login']
+      if (!path.includes(this.$route.path)) {
+        clearTimeout(this.timmer)
+        this.init()
       }
+    },
+    init: function() {
+      this.timmer = setTimeout(() => {
+        sessionStorage.clear()
+        this.logout()
+      }, 1000 * 60 * 15) // 15分钟 https://blog.csdn.net/qq_42345108/article/details/103496456
+    },
+    logout() {
+      this.$store.dispatch('LogOut').then(() => {
+        location.reload()
+      })
     }
   }
 }
diff --git a/lms/nladmin-ui/src/App.vue b/lms/nladmin-ui/src/App.vue
index 3f8e408..2f82bcc 100644
--- a/lms/nladmin-ui/src/App.vue
+++ b/lms/nladmin-ui/src/App.vue
@@ -1,5 +1,5 @@
 <template>
-  <div id="app">
+  <div id="app" @mousemove="moveEvent" @click="moveEvent">
     <router-view />
   </div>
 </template>
@@ -7,63 +7,29 @@
 <script>
 export default {
   name: 'App',
-  created() {
-    this.webSocket() // token过期提示
+  data() {
+    return {
+      timmer: null
+    }
   },
   methods: {
-    webSocket() {
-      const that = this
-      if (typeof (WebSocket) === 'undefined') {
-        this.$notify({
-          title: '提示',
-          message: '当前浏览器无法接收实时报警信息,请使用谷歌浏览器!',
-          type: 'warning',
-          duration: 0
-        })
-      } else {
-        const id = 'exp-token'
-        // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改
-        // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送
-        // const socketUrl = process.env.VUE_APP_WS_API + id
-        const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + id
-        this.socket = new WebSocket(wsUri)
-        // 监听socket打开
-        this.socket.onopen = function() {
-          that.socket.send('测试客户端发送消息')
-        }
-        const _this = this
-        // 监听socket消息接收
-        this.socket.onmessage = function(msg) {
-          const data = JSON.parse(msg.data)
-          _this.$confirm(data.msg, '提示', {
-            confirmButtonText: '确定',
-            closeOnClickModal: false,
-            showCancelButton: false,
-            type: 'warning'
-          }).then(() => {
-            _this.$router.push('/login')
-          }).catch(() => {
-            this.$message({
-              type: 'info',
-              message: '已取消'
-            })
-          })
-        }
-
-        // 监听socket错误
-        this.socket.onerror = function() {
-          that.$notify({
-            title: '错误',
-            message: '服务器错误,无法接收实时报警信息',
-            type: 'error',
-            duration: 0
-          })
-        }
-        // 监听socket关闭
-        this.socket.onclose = function() {
-          console.log('WebSocket已关闭')
-        }
+    moveEvent: function() {
+      const path = ['/login']
+      if (!path.includes(this.$route.path)) {
+        clearTimeout(this.timmer)
+        this.init()
       }
+    },
+    init: function() {
+      this.timmer = setTimeout(() => {
+        sessionStorage.clear()
+        this.logout()
+      }, 1000 * 60 * 15) // 15分钟 https://blog.csdn.net/qq_42345108/article/details/103496456
+    },
+    logout() {
+      this.$store.dispatch('LogOut').then(() => {
+        location.reload()
+      })
     }
   }
 }