修复用户主机信息显示,添加踢出用户询问
This commit is contained in:
parent
81a006a4cb
commit
8020d52adc
|
|
@ -191,7 +191,7 @@
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted, onUnmounted } from 'vue';
|
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 { GetVPNServerConfigHandler, GetVPNServerOnlineListHandler,GetServerOnlineUsers,KickOutOnlineUser } from '@/api/vpn';
|
||||||
import { on } from 'events';
|
import { on } from 'events';
|
||||||
import { VPNStatus, OnlineUserInfo, OnlineUserInfoList, ServerConfig, HostInfo } from '@/types/vpn';
|
import { VPNStatus, OnlineUserInfo, OnlineUserInfoList, ServerConfig, HostInfo } from '@/types/vpn';
|
||||||
|
|
@ -222,11 +222,31 @@ const getServerConfigs = async () => {
|
||||||
|
|
||||||
const showHostInfo = (user:OnlineUserInfoList) =>{
|
const showHostInfo = (user:OnlineUserInfoList) =>{
|
||||||
show_host_info.value = true;
|
show_host_info.value = true;
|
||||||
hostInfo.value = user.host_info;
|
hostInfo.value = user.host_info || createEmptyHostInfo();
|
||||||
activeHostInfoTab.value = 'basic';
|
activeHostInfoTab.value = 'basic';
|
||||||
console.log(user);
|
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 => {
|
const formatUptime = (uptime: number): string => {
|
||||||
if (!uptime || uptime <= 0) return '-';
|
if (!uptime || uptime <= 0) return '-';
|
||||||
|
|
@ -261,46 +281,77 @@ const formatBootTime = (bootTime: number): string => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const KickOutAllOnlineUser = async() =>{
|
const KickOutAllOnlineUser = async() =>{
|
||||||
let req = {
|
|
||||||
server_id: selectedServer.value.server_id,
|
|
||||||
type: 1, //all
|
|
||||||
session: [{
|
|
||||||
"user_id": 1,
|
|
||||||
"session": "kickout all"
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
try{
|
try{
|
||||||
let resp = await KickOutOnlineUser(req);
|
// 询问用户是否确认踢出所有用户
|
||||||
if (resp &&resp["code"] == 0){
|
const result = await ElMessageBox.confirm(
|
||||||
ElMessage.success("踢出成功");
|
`确定要踢出所有在线用户吗?此操作将强制断开所有用户的连接。`,
|
||||||
}else{
|
'确认踢出所有用户',
|
||||||
ElMessage.error(resp["message"] || "踢出失败");
|
{
|
||||||
|
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){
|
}catch(error){
|
||||||
ElMessage.error("踢出失败");
|
// 如果用户点击取消,则不显示错误信息
|
||||||
console.error(error);
|
if (error !== 'cancel') {
|
||||||
|
ElMessage.error("踢出失败");
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const KickOutSomeUser = async(user:OnlineUserInfoList) =>{
|
const KickOutSomeUser = async(user:OnlineUserInfoList) =>{
|
||||||
let req = {
|
|
||||||
server_id: selectedServer.value.server_id,
|
|
||||||
sessions: [{
|
|
||||||
"user_id": user.user_id,
|
|
||||||
"session": user.uuid
|
|
||||||
}]
|
|
||||||
|
|
||||||
}
|
|
||||||
try{
|
try{
|
||||||
let resp = await KickOutOnlineUser(req);
|
// 询问用户是否确认踢出该用户
|
||||||
if (resp &&resp["code"] == 0){
|
const result = await ElMessageBox.confirm(
|
||||||
ElMessage.success("踢出成功");
|
`确定要踢出用户 "${user.user_name}" 吗?此操作将强制断开该用户的连接。`,
|
||||||
}else{
|
'确认踢出用户',
|
||||||
ElMessage.error(resp["message"] || "踢出失败");
|
{
|
||||||
|
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){
|
}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);
|
const response = await GetServerOnlineUsers(serverId);
|
||||||
if (response["code"] === 0) {
|
if (response["code"] === 0) {
|
||||||
if(response.data){
|
if(response.data){
|
||||||
onlineUsers.value = response.data;
|
// 处理每个用户对象,确保 host_info 字段有有效的值
|
||||||
|
onlineUsers.value = response.data.map((user: any) => ({
|
||||||
|
...user,
|
||||||
|
host_info: user.host_info || createEmptyHostInfo()
|
||||||
|
}));
|
||||||
}else{
|
}else{
|
||||||
onlineUsers.value = [];
|
onlineUsers.value = [];
|
||||||
}
|
}
|
||||||
|
|
@ -349,7 +404,11 @@ const getOnlineUsers2 = async (serverId: string) => {
|
||||||
const response = await GetServerOnlineUsers(serverId);
|
const response = await GetServerOnlineUsers(serverId);
|
||||||
if (response["code"] === 0) {
|
if (response["code"] === 0) {
|
||||||
if(response.data){
|
if(response.data){
|
||||||
onlineUsers.value = response.data;
|
// 处理每个用户对象,确保 host_info 字段有有效的值
|
||||||
|
onlineUsers.value = response.data.map((user: any) => ({
|
||||||
|
...user,
|
||||||
|
host_info: user.host_info || createEmptyHostInfo()
|
||||||
|
}));
|
||||||
}else{
|
}else{
|
||||||
onlineUsers.value = [];
|
onlineUsers.value = [];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue