修复用户主机信息显示,添加踢出用户询问

This commit is contained in:
lj124 2026-03-31 21:19:53 +08:00
parent 81a006a4cb
commit 8020d52adc
1 changed files with 93 additions and 34 deletions

View File

@ -191,7 +191,7 @@
<script setup lang="ts">
import { ref, reactive, onMounted, onUnmounted } from 'vue';
import { ElMessage } from 'element-plus';
import { ElMessage, ElMessageBox } from 'element-plus';
import { GetVPNServerConfigHandler, GetVPNServerOnlineListHandler,GetServerOnlineUsers,KickOutOnlineUser } from '@/api/vpn';
import { on } from 'events';
import { VPNStatus, OnlineUserInfo, OnlineUserInfoList, ServerConfig, HostInfo } from '@/types/vpn';
@ -222,11 +222,31 @@ const getServerConfigs = async () => {
const showHostInfo = (user:OnlineUserInfoList) =>{
show_host_info.value = true;
hostInfo.value = user.host_info;
hostInfo.value = user.host_info || createEmptyHostInfo();
activeHostInfoTab.value = 'basic';
console.log(user);
}
// HostInfo
const createEmptyHostInfo = (): HostInfo => {
return {
hostname: '',
uptime: 0,
bootTime: 0,
procs: 0,
os: '',
platform: '',
platformFamily: '',
platformVersion: '',
kernelVersion: '',
kernelArch: '',
virtualizationSystem: '',
virtualizationRole: '',
hostId: '',
client_version: ''
};
}
//
const formatUptime = (uptime: number): string => {
if (!uptime || uptime <= 0) return '-';
@ -261,46 +281,77 @@ const formatBootTime = (bootTime: number): string => {
}
const KickOutAllOnlineUser = async() =>{
let req = {
server_id: selectedServer.value.server_id,
type: 1, //all
session: [{
"user_id": 1,
"session": "kickout all"
}]
}
try{
let resp = await KickOutOnlineUser(req);
if (resp &&resp["code"] == 0){
ElMessage.success("踢出成功");
}else{
ElMessage.error(resp["message"] || "踢出失败");
//
const result = await ElMessageBox.confirm(
`确定要踢出所有在线用户吗?此操作将强制断开所有用户的连接。`,
'确认踢出所有用户',
{
confirmButtonText: '确认踢出',
cancelButtonText: '取消',
type: 'warning',
}
);
if (result === 'confirm') {
let req = {
server_id: selectedServer.value.server_id,
type: 1, //all
session: [{
"user_id": 1,
"session": "kickout all"
}]
}
let resp = await KickOutOnlineUser(req);
if (resp && resp["code"] == 0){
ElMessage.success("踢出成功");
}else{
ElMessage.error(resp["message"] || "踢出失败");
}
}
}catch(error){
ElMessage.error("踢出失败");
console.error(error);
//
if (error !== 'cancel') {
ElMessage.error("踢出失败");
console.error(error);
}
}
}
const KickOutSomeUser = async(user:OnlineUserInfoList) =>{
let req = {
server_id: selectedServer.value.server_id,
sessions: [{
"user_id": user.user_id,
"session": user.uuid
}]
}
try{
let resp = await KickOutOnlineUser(req);
if (resp &&resp["code"] == 0){
ElMessage.success("踢出成功");
}else{
ElMessage.error(resp["message"] || "踢出失败");
//
const result = await ElMessageBox.confirm(
`确定要踢出用户 "${user.user_name}" 吗?此操作将强制断开该用户的连接。`,
'确认踢出用户',
{
confirmButtonText: '确认踢出',
cancelButtonText: '取消',
type: 'warning',
}
);
if (result === 'confirm') {
let req = {
server_id: selectedServer.value.server_id,
sessions: [{
"user_id": user.user_id,
"session": user.uuid
}]
}
let resp = await KickOutOnlineUser(req);
if (resp && resp["code"] == 0){
ElMessage.success("踢出成功");
}else{
ElMessage.error(resp["message"] || "踢出失败");
}
}
}catch(error){
ElMessage.error("踢出失败");
console.error(error);
//
if (error !== 'cancel') {
ElMessage.error("踢出失败");
console.error(error);
}
}
}
@ -325,7 +376,11 @@ const getOnlineUsers = async (serverId: string) => {
const response = await GetServerOnlineUsers(serverId);
if (response["code"] === 0) {
if(response.data){
onlineUsers.value = response.data;
// host_info
onlineUsers.value = response.data.map((user: any) => ({
...user,
host_info: user.host_info || createEmptyHostInfo()
}));
}else{
onlineUsers.value = [];
}
@ -349,7 +404,11 @@ const getOnlineUsers2 = async (serverId: string) => {
const response = await GetServerOnlineUsers(serverId);
if (response["code"] === 0) {
if(response.data){
onlineUsers.value = response.data;
// host_info
onlineUsers.value = response.data.map((user: any) => ({
...user,
host_info: user.host_info || createEmptyHostInfo()
}));
}else{
onlineUsers.value = [];
}