diff --git a/src/api/monitor/online.js b/src/api/monitor/online.js new file mode 100644 index 0000000..9206517 --- /dev/null +++ b/src/api/monitor/online.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 查询在线用户列表 +export function list(query) { + return request({ + url: '/monitor/online/list', + method: 'get', + params: query + }) +} + +// 强退用户 +export function forceLogout(username, deviceSn) { + return request({ + url: '/monitor/online/' + username + '/' + deviceSn, + method: 'delete' + }) +} diff --git a/src/utils/request.js b/src/utils/request.js index 8b3f092..028845a 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -104,7 +104,7 @@ service.interceptors.response.use( ) { return res.data; } - if (code === 401) { + if (code === 401 || code === 4011) { if (!isRelogin.show) { isRelogin.show = true; ElMessageBox.confirm( @@ -129,6 +129,31 @@ service.interceptors.response.use( }); } return Promise.reject("无效的会话,或者会话已过期,请重新登录。"); + } else if (code === 4012) { + if (!isRelogin.show) { + isRelogin.show = true; + ElMessageBox.confirm( + "您以被挤下线", + "系统提示", + { + confirmButtonText: "重新登录", + cancelButtonText: "取消", + type: "warning", + } + ) + .then(() => { + isRelogin.show = false; + useUserStore() + .logOut() + .then(() => { + location.href = "/index"; + }); + }) + .catch(() => { + isRelogin.show = false; + }); + } + return Promise.reject("无效的会话,或者会话已过期,请重新登录。"); } else if (code === 500) { ElMessage({ message: msg, type: "error" }); return Promise.reject(new Error(msg)); diff --git a/src/views/monitor/online/index.vue b/src/views/monitor/online/index.vue new file mode 100644 index 0000000..b136d72 --- /dev/null +++ b/src/views/monitor/online/index.vue @@ -0,0 +1,89 @@ + + +