From 4e06c09ca37ea3ef625691d5b6ff78243c94d32f Mon Sep 17 00:00:00 2001 From: lijun Date: Sun, 5 Apr 2026 22:57:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/vpn.ts | 5 +++ src/router/index.ts | 18 ++++----- src/views/system/vpn-online-connect.vue | 53 ++++++++++++++++++++----- 3 files changed, 58 insertions(+), 18 deletions(-) diff --git a/src/api/vpn.ts b/src/api/vpn.ts index 1e1529c..3be4389 100644 --- a/src/api/vpn.ts +++ b/src/api/vpn.ts @@ -105,6 +105,11 @@ export const LocalClientStatusHandler = () => { return local_request.get('/vpn/get_status') } +// 设置客户端配置 +export const SetClientConfigHandler = (Data) => { + return local_request.post('/vpn/set_client', Data) +} + // VPN Policy Management APIs // myVPNPolicyGroup := router.Group("/vpn_policy") // myVPNPolicyGroup.GET("/get", GetMyVPNPolicyHandler) diff --git a/src/router/index.ts b/src/router/index.ts index 6b9d0e6..4ff5755 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -172,15 +172,6 @@ const routes: RouteRecordRaw[] = [ permiss: '755', }, component: () => import(/* webpackChunkName: "system-user" */ '../views/system/vpn-server-online-user.vue'), - }, - { - path: '/vpn-policy', - name: 'vpn-policy', - meta: { - title: 'VPN策略', - permiss: '756', - }, - component: () => import(/* webpackChunkName: "system-user" */ '../views/system/vpn-policy.vue'), }, { path: '/vpn-status', @@ -191,6 +182,15 @@ const routes: RouteRecordRaw[] = [ }, component: () => import(/* webpackChunkName: "system-user" */ '../views/system/vpn-server-status.vue'), }, + { + path: '/vpn-policy', + name: 'vpn-policy', + meta: { + title: 'VPN策略', + permiss: '756', + }, + component: () => import(/* webpackChunkName: "system-user" */ '../views/system/vpn-policy.vue'), + }, { path: '/callback', diff --git a/src/views/system/vpn-online-connect.vue b/src/views/system/vpn-online-connect.vue index 5e12352..1005972 100644 --- a/src/views/system/vpn-online-connect.vue +++ b/src/views/system/vpn-online-connect.vue @@ -190,18 +190,30 @@ -
- +
+ + + +
+ 开启后,当VPN连接意外断开时,客户端将自动尝试重新连接 +
+
+
+
@@ -210,7 +222,7 @@ import { ref, onMounted, onUnmounted } from 'vue' import { ElMessage, ElMessageBox } from 'element-plus' import { Download, Monitor, Connection } from '@element-plus/icons-vue' -import { GetSurppotVPNServerOnlineListHandler, LocalClientConnectHandler, LocalClientStatusHandler,LocalClientDisConnectHandler,GetClientDownloadURLHandler } from '@/api/vpn' +import { GetSurppotVPNServerOnlineListHandler, LocalClientConnectHandler, LocalClientStatusHandler,LocalClientDisConnectHandler,GetClientDownloadURLHandler, SetClientConfigHandler } from '@/api/vpn' interface ServerInfo { /** 服务器名称 */ @@ -260,6 +272,7 @@ const onlineInfoData = ref({ const clientConfig = ref({ auto_reconnect: false, }) +const savingConfig = ref(false) // 格式化字节数显示 const formatBytes = (bytes: number): string => { @@ -281,6 +294,28 @@ const handleClientConfigDialogClose = () => { showClientConfigDialog.value = false } +const saveClientConfig = async () => { + savingConfig.value = true + try { + const requestData = { + auto_reconnect: clientConfig.value.auto_reconnect ? 1 : 0 + } + + const response = await SetClientConfigHandler(requestData) + if (response && response["code"] === 0) { + ElMessage.success('客户端配置保存成功') + showClientConfigDialog.value = false + } else { + ElMessage.error(response["message"] || '配置保存失败') + } + } catch (error) { + console.error('保存客户端配置错误:', error) + ElMessage.error('保存失败,请稍后重试') + } finally { + savingConfig.value = false + } +} + // 刷新在线信息 const refreshOnlineInfo = async () => { onlineInfoLoading.value = true