From d751c14f7bc712f7d7ede7ae4a9f17956a45f73d Mon Sep 17 00:00:00 2001 From: AN <1983933789@qq.com> Date: Sun, 27 Apr 2025 23:28:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=B9=E6=8E=A5=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/elegant/imports.ts | 1 + src/router/elegant/routes.ts | 9 + src/router/elegant/transform.ts | 1 + src/service/api/monitor/online.ts | 22 +++ src/typings/api/monitor.api.d.ts | 29 +++ src/typings/elegant-router.d.ts | 2 + src/views/monitor/login-infor/index.vue | 4 +- .../modules/login-infor-search.vue | 3 - .../modules/login-infor-view-drawer.vue | 4 - src/views/monitor/online/index.vue | 170 ++++++++++++++++++ .../monitor/online/modules/online-search.vue | 66 +++++++ .../oper-log/modules/oper-log-search.vue | 4 - 12 files changed, 302 insertions(+), 13 deletions(-) create mode 100644 src/service/api/monitor/online.ts create mode 100644 src/views/monitor/online/index.vue create mode 100644 src/views/monitor/online/modules/online-search.vue diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index afbf52da..65324440 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -24,6 +24,7 @@ export const views: Record Promise import("@/views/home/index.vue"), monitor_cache: () => import("@/views/monitor/cache/index.vue"), "monitor_login-infor": () => import("@/views/monitor/login-infor/index.vue"), + monitor_online: () => import("@/views/monitor/online/index.vue"), "monitor_oper-log": () => import("@/views/monitor/oper-log/index.vue"), system_client: () => import("@/views/system/client/index.vue"), system_config: () => import("@/views/system/config/index.vue"), diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index d0ffea60..e5027219 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -102,6 +102,15 @@ export const generatedRoutes: GeneratedRoute[] = [ i18nKey: 'route.monitor_login-infor' } }, + { + name: 'monitor_online', + path: '/monitor/online', + component: 'view.monitor_online', + meta: { + title: 'monitor_online', + i18nKey: 'route.monitor_online' + } + }, { name: 'monitor_oper-log', path: '/monitor/oper-log', diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index f4bbd43c..fe3f4a31 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -172,6 +172,7 @@ const routeMap: RouteMap = { "monitor": "/monitor", "monitor_cache": "/monitor/cache", "monitor_login-infor": "/monitor/login-infor", + "monitor_online": "/monitor/online", "monitor_oper-log": "/monitor/oper-log", "social-callback": "/social-callback", "system": "/system", diff --git a/src/service/api/monitor/online.ts b/src/service/api/monitor/online.ts new file mode 100644 index 00000000..89561869 --- /dev/null +++ b/src/service/api/monitor/online.ts @@ -0,0 +1,22 @@ +import { request } from '@/service/request'; + +/** 获取在线用户列表 */ +export function fetchGetOnlineUserList(params?: Api.Monitor.OnlineUserSearchParams) { + return request({ + url: '/monitor/online/list', + method: 'get', + params + }); +} + +/** + * 强制下线 + * + * @param tokenId - 令牌ID + */ +export function fetchForceLogout(tokenId: string) { + return request({ + url: `/monitor/online/${tokenId}`, + method: 'delete' + }); +} diff --git a/src/typings/api/monitor.api.d.ts b/src/typings/api/monitor.api.d.ts index ff913823..8fc454cc 100644 --- a/src/typings/api/monitor.api.d.ts +++ b/src/typings/api/monitor.api.d.ts @@ -134,5 +134,34 @@ declare namespace Api { value: number; }[]; }>; + + type OnlineUser = Common.CommonRecord<{ + /** 用户账号 */ + userName: string; + /** 登录IP地址 */ + ipaddr: string; + /** 登录地点 */ + loginLocation: string; + /** 浏览器类型 */ + browser: string; + /** 操作系统 */ + os: string; + /** 所在部门 */ + deptName: string; + /** 设备类型 */ + deviceType: string; + /** 登录时间 */ + loginTime: string; + /** 令牌ID */ + tokenId: string; + }>; + + /** online user list */ + type OnlineUserList = Api.Common.PaginatingQueryRecord; + + /** online user search params */ + type OnlineUserSearchParams = CommonType.RecordNullable< + Pick & Api.Common.CommonSearchParams + >; } } diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index 2bd7b6b3..f386ae60 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -26,6 +26,7 @@ declare module "@elegant-router/types" { "monitor": "/monitor"; "monitor_cache": "/monitor/cache"; "monitor_login-infor": "/monitor/login-infor"; + "monitor_online": "/monitor/online"; "monitor_oper-log": "/monitor/oper-log"; "social-callback": "/social-callback"; "system": "/system"; @@ -110,6 +111,7 @@ declare module "@elegant-router/types" { | "home" | "monitor_cache" | "monitor_login-infor" + | "monitor_online" | "monitor_oper-log" | "system_client" | "system_config" diff --git a/src/views/monitor/login-infor/index.vue b/src/views/monitor/login-infor/index.vue index 0bea725d..677a4251 100644 --- a/src/views/monitor/login-infor/index.vue +++ b/src/views/monitor/login-infor/index.vue @@ -91,7 +91,7 @@ const { minWidth: 120, render: row => { return ( -
+
{row.browser}
@@ -109,7 +109,7 @@ const { render: row => { const osName = row.os?.split(' or ')[0] ?? ''; return ( -
+
{osName}
diff --git a/src/views/monitor/login-infor/modules/login-infor-search.vue b/src/views/monitor/login-infor/modules/login-infor-search.vue index 63ac7613..ff131804 100644 --- a/src/views/monitor/login-infor/modules/login-infor-search.vue +++ b/src/views/monitor/login-infor/modules/login-infor-search.vue @@ -1,6 +1,5 @@ + + + + diff --git a/src/views/monitor/online/modules/online-search.vue b/src/views/monitor/online/modules/online-search.vue new file mode 100644 index 00000000..4cbedac1 --- /dev/null +++ b/src/views/monitor/online/modules/online-search.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/src/views/monitor/oper-log/modules/oper-log-search.vue b/src/views/monitor/oper-log/modules/oper-log-search.vue index 688d84dd..fbd3a0ab 100644 --- a/src/views/monitor/oper-log/modules/oper-log-search.vue +++ b/src/views/monitor/oper-log/modules/oper-log-search.vue @@ -1,15 +1,11 @@