修复用户主机信息显示,添加踢出用户询问
This commit is contained in:
parent
81a006a4cb
commit
8020d52adc
|
|
@ -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 = [];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue