diff --git a/src/api/vpn.ts b/src/api/vpn.ts
index 3be4389..f08b0b3 100644
--- a/src/api/vpn.ts
+++ b/src/api/vpn.ts
@@ -163,4 +163,20 @@ export const DeleteMyVPNPolicyHandler = (data) => {
export const MatchVPNPolicyHandler = (data) => {
return request.post('/vpn_policy/match', data)
+}
+
+/**
+ * 获取VPN日志
+ * @param {Object} params 查询参数
+ * @param {number} params.page 页码
+ * @param {number} params.page_size 每页数量
+ * @param {string} params.user_id 用户ID
+ * @param {string} params.server_id 服务器ID
+ * @param {string} params.event_type 事件类型
+ * @param {string} params.start_time 开始时间
+ * @param {string} params.end_time 结束时间
+ * @returns {Promise} 包含VPN日志的Promise对象
+ */
+export const GetVPNLogsHandler = (params) => {
+ return request.get('/vpn/get_vpn_logs', { params })
}
\ No newline at end of file
diff --git a/src/components/menu.ts b/src/components/menu.ts
index a8c4085..34b9ff8 100644
--- a/src/components/menu.ts
+++ b/src/components/menu.ts
@@ -115,6 +115,12 @@ export const menuData: Menus[] = [
index: '/vpn-status',
title: 'VPN服务器状态',
},
+ {
+ id: '758',
+ pid: '75',
+ index: '/vpn-logs',
+ title: 'VPN连接日志',
+ },
],
},
{
diff --git a/src/router/index.ts b/src/router/index.ts
index 4ff5755..76d145c 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -191,6 +191,15 @@ const routes: RouteRecordRaw[] = [
},
component: () => import(/* webpackChunkName: "system-user" */ '../views/system/vpn-policy.vue'),
},
+ {
+ path: '/vpn-logs',
+ name: 'vpn-logs',
+ meta: {
+ title: 'VPN连接日志',
+ permiss: '758',
+ },
+ component: () => import(/* webpackChunkName: "system-user" */ '../views/system/vpn-logs.vue'),
+ },
{
path: '/callback',
diff --git a/src/store/permiss.ts b/src/store/permiss.ts
index 5d048e4..a3b3b24 100644
--- a/src/store/permiss.ts
+++ b/src/store/permiss.ts
@@ -68,6 +68,7 @@ export const usePermissStore = defineStore("permiss", {
"755", //VPN在线用户连接
"756", //VPN策略
"757", //VPN服务器状态
+ "758", //VPN连接日志
],
user: ["0", "8", "7", "9", "51" ,"53","55" ,"56", "57", "58", "59", "61", "71", "754"],
},
diff --git a/src/types/vpn.ts b/src/types/vpn.ts
index a308b06..7ba5c7d 100644
--- a/src/types/vpn.ts
+++ b/src/types/vpn.ts
@@ -82,4 +82,26 @@ export interface HostInfo {
virtualizationRole: string;
hostId: string;
client_version: string;
+}
+
+export interface VPNLogItem {
+ ID: number;
+ CreatedAt: string;
+ UpdatedAt: string;
+ DeletedAt: any;
+ user_id: number;
+ user_name: string;
+ host_id: string;
+ server_id: string;
+ session_id: string;
+ client_ip: string;
+ private_ip: string;
+ event: number;
+}
+
+export interface VPNLogsResponse {
+ total: number;
+ page: number;
+ page_size: number;
+ list: VPNLogItem[];
}
\ No newline at end of file
diff --git a/src/views/system/sqlEditor.vue b/src/views/system/sqlEditor.vue
index 0df46dc..bbc3a4f 100644
--- a/src/views/system/sqlEditor.vue
+++ b/src/views/system/sqlEditor.vue
@@ -8,12 +8,12 @@
:tab-size="2"
:extensions="extensions"
@keydown="handleKeydown"
- @update:value="handleChange"
+ @update:modelValue="handleChange"
/>
+
+