⚡ 修改表名.
This commit is contained in:
@@ -1,112 +0,0 @@
|
||||
import type { ClearRequest, DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
/**
|
||||
* 主机连接日志查询请求
|
||||
*/
|
||||
export interface HostConnectLogQueryRequest extends Pagination {
|
||||
id?: number;
|
||||
userId?: number;
|
||||
hostId?: number;
|
||||
hostAddress?: string;
|
||||
type?: string;
|
||||
token?: string;
|
||||
status?: string;
|
||||
startTimeRange?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机连接日志清理请求
|
||||
*/
|
||||
export interface HostConnectLogClearRequest extends HostConnectLogQueryRequest, ClearRequest {
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机连接日志查询响应
|
||||
*/
|
||||
export interface HostConnectLogQueryResponse extends TableData {
|
||||
id: number;
|
||||
userId: number;
|
||||
username: number;
|
||||
hostId: number;
|
||||
hostName: string;
|
||||
hostAddress: string;
|
||||
type: string;
|
||||
token: string;
|
||||
status: string;
|
||||
startTime: number;
|
||||
endTime: number;
|
||||
extra: HostConnectLogExtra;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机连接日志拓展对象
|
||||
*/
|
||||
export interface HostConnectLogExtra {
|
||||
traceId: string;
|
||||
channelId: string;
|
||||
sessionId: string;
|
||||
address: string;
|
||||
location: string;
|
||||
userAgent: string;
|
||||
errorMessage: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询主机连接日志
|
||||
*/
|
||||
export function getHostConnectLogPage(request: HostConnectLogQueryRequest) {
|
||||
return axios.post<DataGrid<HostConnectLogQueryResponse>>('/asset/host-connect-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部主机连接会话
|
||||
*/
|
||||
export function getHostConnectSessions(request: HostConnectLogQueryRequest) {
|
||||
return axios.post<Array<HostConnectLogQueryResponse>>('/asset/host-connect-log/session', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户最近连接的主机
|
||||
*/
|
||||
export function getLatestConnectHostId(type: string, limit: number) {
|
||||
return axios.post<Array<number>>('/asset/host-connect-log/latest-connect', {
|
||||
type,
|
||||
limit
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除主机连接日志
|
||||
*/
|
||||
export function deleteHostConnectLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/host-connect-log/delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机连接日志数量
|
||||
*/
|
||||
export function getHostConnectLogCount(request: HostConnectLogQueryRequest) {
|
||||
return axios.post<number>('/asset/host-connect-log/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空主机连接日志
|
||||
*/
|
||||
export function clearHostConnectLog(request: HostConnectLogClearRequest) {
|
||||
return axios.post<number>('/asset/host-connect-log/clear', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 强制断开主机连接
|
||||
*/
|
||||
export function hostForceOffline(request: HostConnectLogQueryRequest) {
|
||||
return axios.put('/asset/host-connect-log/force-offline', request);
|
||||
}
|
||||
112
orion-visor-ui/src/api/asset/terminal-connect-log.ts
Normal file
112
orion-visor-ui/src/api/asset/terminal-connect-log.ts
Normal file
@@ -0,0 +1,112 @@
|
||||
import type { ClearRequest, DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
/**
|
||||
* 终端连接日志查询请求
|
||||
*/
|
||||
export interface TerminalConnectLogQueryRequest extends Pagination {
|
||||
id?: number;
|
||||
userId?: number;
|
||||
hostId?: number;
|
||||
hostAddress?: string;
|
||||
type?: string;
|
||||
token?: string;
|
||||
status?: string;
|
||||
startTimeRange?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 终端连接日志清理请求
|
||||
*/
|
||||
export interface TerminalConnectLogClearRequest extends TerminalConnectLogQueryRequest, ClearRequest {
|
||||
}
|
||||
|
||||
/**
|
||||
* 终端连接日志查询响应
|
||||
*/
|
||||
export interface TerminalConnectLogQueryResponse extends TableData {
|
||||
id: number;
|
||||
userId: number;
|
||||
username: number;
|
||||
hostId: number;
|
||||
hostName: string;
|
||||
hostAddress: string;
|
||||
type: string;
|
||||
token: string;
|
||||
status: string;
|
||||
startTime: number;
|
||||
endTime: number;
|
||||
extra: TerminalConnectLogExtra;
|
||||
}
|
||||
|
||||
/**
|
||||
* 终端连接日志拓展对象
|
||||
*/
|
||||
export interface TerminalConnectLogExtra {
|
||||
traceId: string;
|
||||
channelId: string;
|
||||
sessionId: string;
|
||||
address: string;
|
||||
location: string;
|
||||
userAgent: string;
|
||||
errorMessage: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询终端连接日志
|
||||
*/
|
||||
export function getTerminalConnectLogPage(request: TerminalConnectLogQueryRequest) {
|
||||
return axios.post<DataGrid<TerminalConnectLogQueryResponse>>('/asset/terminal-connect-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部终端连接会话
|
||||
*/
|
||||
export function getTerminalConnectSessions(request: TerminalConnectLogQueryRequest) {
|
||||
return axios.post<Array<TerminalConnectLogQueryResponse>>('/asset/terminal-connect-log/session', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户最近连接的主机
|
||||
*/
|
||||
export function getLatestConnectHostId(type: string, limit: number) {
|
||||
return axios.post<Array<number>>('/asset/terminal-connect-log/latest-connect', {
|
||||
type,
|
||||
limit
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除终端连接日志
|
||||
*/
|
||||
export function deleteTerminalConnectLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/terminal-connect-log/delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询终端连接日志数量
|
||||
*/
|
||||
export function getTerminalConnectLogCount(request: TerminalConnectLogQueryRequest) {
|
||||
return axios.post<number>('/asset/terminal-connect-log/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空终端连接日志
|
||||
*/
|
||||
export function clearTerminalConnectLog(request: TerminalConnectLogClearRequest) {
|
||||
return axios.post<number>('/asset/terminal-connect-log/clear', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 强制断开终端连接
|
||||
*/
|
||||
export function hostForceOffline(request: TerminalConnectLogQueryRequest) {
|
||||
return axios.put('/asset/terminal-connect-log/force-offline', request);
|
||||
}
|
||||
@@ -172,14 +172,14 @@ export function batchDeleteUploadTask(idList: Array<number>) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机连接日志数量
|
||||
* 查询批量上传任务数量
|
||||
*/
|
||||
export function getUploadTaskCount(request: UploadTaskQueryRequest) {
|
||||
return axios.post<number>('/asset/upload-task/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空主机连接日志
|
||||
* 清空查询批量上传任务
|
||||
*/
|
||||
export function clearUploadTask(request: UploadTaskClearRequest) {
|
||||
return axios.post<number>('/asset/upload-task/clear', request);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<a-modal v-model:visible="visible"
|
||||
modal-class="modal-form-large"
|
||||
title-align="start"
|
||||
title="清空主机连接日志"
|
||||
title="清空终端连接日志"
|
||||
:align-center="false"
|
||||
:draggable="true"
|
||||
:mask-closable="false"
|
||||
@@ -76,12 +76,12 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { HostConnectLogQueryRequest } from '@/api/asset/host-connect-log';
|
||||
import type { TerminalConnectLogQueryRequest } from '@/api/asset/terminal-connect-log';
|
||||
import { ref } from 'vue';
|
||||
import useLoading from '@/hooks/loading';
|
||||
import useVisible from '@/hooks/visible';
|
||||
import { connectStatusKey, connectTypeKey, maxClearLimit } from '../types/const';
|
||||
import { getHostConnectLogCount, clearHostConnectLog } from '@/api/asset/host-connect-log';
|
||||
import { getTerminalConnectLogCount, clearTerminalConnectLog } from '@/api/asset/terminal-connect-log';
|
||||
import { Message, Modal } from '@arco-design/web-vue';
|
||||
import { useDictStore } from '@/store';
|
||||
import UserSelector from '@/components/user/user/selector/index.vue';
|
||||
@@ -93,7 +93,7 @@
|
||||
const { visible, setVisible } = useVisible();
|
||||
const { loading, setLoading } = useLoading();
|
||||
|
||||
const defaultForm = (): HostConnectLogQueryRequest => {
|
||||
const defaultForm = (): TerminalConnectLogQueryRequest => {
|
||||
return {
|
||||
userId: undefined,
|
||||
hostId: undefined,
|
||||
@@ -105,7 +105,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
const formModel = ref<HostConnectLogQueryRequest>({});
|
||||
const formModel = ref<TerminalConnectLogQueryRequest>({});
|
||||
|
||||
// 打开
|
||||
const open = (record: any) => {
|
||||
@@ -129,7 +129,7 @@
|
||||
setLoading(true);
|
||||
try {
|
||||
// 获取总数量
|
||||
const { data } = await getHostConnectLogCount(formModel.value);
|
||||
const { data } = await getTerminalConnectLogCount(formModel.value);
|
||||
if (data) {
|
||||
// 清空
|
||||
doClear(data);
|
||||
@@ -153,7 +153,7 @@
|
||||
setLoading(true);
|
||||
try {
|
||||
// 调用清空
|
||||
const { data } = await clearHostConnectLog(formModel.value);
|
||||
const { data } = await clearTerminalConnectLog(formModel.value);
|
||||
Message.success(`已成功清空 ${data} 条数据`);
|
||||
emits('clear');
|
||||
// 清空
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<a-drawer v-model:visible="visible"
|
||||
title="主机连接日志详情"
|
||||
title="终端连接日志详情"
|
||||
:width="442"
|
||||
:mask-closable="false"
|
||||
:unmount-on-close="true"
|
||||
@@ -98,7 +98,7 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { HostConnectLogQueryResponse } from '@/api/asset/host-connect-log';
|
||||
import type { TerminalConnectLogQueryResponse } from '@/api/asset/terminal-connect-log';
|
||||
import { ref } from 'vue';
|
||||
import useLoading from '@/hooks/loading';
|
||||
import useVisible from '@/hooks/visible';
|
||||
@@ -111,7 +111,7 @@
|
||||
const { visible, setVisible } = useVisible();
|
||||
const { loading, setLoading } = useLoading();
|
||||
|
||||
const record = ref<HostConnectLogQueryResponse>({} as HostConnectLogQueryResponse);
|
||||
const record = ref<TerminalConnectLogQueryResponse>({} as TerminalConnectLogQueryResponse);
|
||||
|
||||
// 打开
|
||||
const open = (s: any) => {
|
||||
|
||||
@@ -57,14 +57,14 @@
|
||||
<div class="table-left-bar-handle">
|
||||
<!-- 标题 -->
|
||||
<div class="table-title">
|
||||
主机连接日志
|
||||
终端连接日志
|
||||
</div>
|
||||
</div>
|
||||
<!-- 右侧操作 -->
|
||||
<div class="table-right-bar-handle">
|
||||
<a-space>
|
||||
<!-- 清空 -->
|
||||
<a-button v-permission="['asset:host-connect-log:management:clear']"
|
||||
<a-button v-permission="['asset:terminal-connect-log:management:clear']"
|
||||
status="danger"
|
||||
@click="openClear">
|
||||
清空
|
||||
@@ -77,7 +77,7 @@
|
||||
position="br"
|
||||
type="warning"
|
||||
@ok="deleteSelectRows">
|
||||
<a-button v-permission="['asset:host-connect-log:management:delete']"
|
||||
<a-button v-permission="['asset:terminal-connect-log:management:delete']"
|
||||
type="primary"
|
||||
status="danger"
|
||||
:disabled="selectedKeys.length === 0">
|
||||
@@ -162,12 +162,12 @@
|
||||
详情
|
||||
</a-button>
|
||||
<!-- 下线 -->
|
||||
<a-popconfirm v-if="record.status === HostConnectStatus.CONNECTING"
|
||||
<a-popconfirm v-if="record.status === TerminalConnectStatus.CONNECTING"
|
||||
content="确认要强制下线吗?"
|
||||
position="left"
|
||||
type="warning"
|
||||
@ok="forceOffline(record)">
|
||||
<a-button v-permission="['asset:host-connect-log:management:force-offline', 'asset:host-connect-session:management:force-offline']"
|
||||
<a-button v-permission="['asset:terminal-connect-log:management:force-offline', 'asset:terminal-connect-session:management:force-offline']"
|
||||
type="text"
|
||||
size="mini"
|
||||
status="danger">
|
||||
@@ -179,7 +179,7 @@
|
||||
position="left"
|
||||
type="warning"
|
||||
@ok="deleteRow(record)">
|
||||
<a-button v-permission="['asset:host-connect-log:management:delete']"
|
||||
<a-button v-permission="['asset:terminal-connect-log:management:delete']"
|
||||
type="text"
|
||||
size="mini"
|
||||
status="danger">
|
||||
@@ -199,10 +199,10 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { HostConnectLogQueryRequest, HostConnectLogQueryResponse } from '@/api/asset/host-connect-log';
|
||||
import type { TerminalConnectLogQueryRequest, TerminalConnectLogQueryResponse } from '@/api/asset/terminal-connect-log';
|
||||
import { reactive, ref, onMounted } from 'vue';
|
||||
import { deleteHostConnectLog, getHostConnectLogPage, hostForceOffline } from '@/api/asset/host-connect-log';
|
||||
import { connectStatusKey, connectTypeKey, HostConnectStatus } from '../types/const';
|
||||
import { deleteTerminalConnectLog, getTerminalConnectLogPage, hostForceOffline } from '@/api/asset/terminal-connect-log';
|
||||
import { connectStatusKey, connectTypeKey, TerminalConnectStatus } from '../types/const';
|
||||
import { useTablePagination, useRowSelection } from '@/hooks/table';
|
||||
import { useDictStore } from '@/store';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
@@ -220,10 +220,10 @@
|
||||
const { loading, setLoading } = useLoading();
|
||||
const { toOptions, getDictValue } = useDictStore();
|
||||
|
||||
const tableRenderData = ref<Array<HostConnectLogQueryResponse>>([]);
|
||||
const tableRenderData = ref<Array<TerminalConnectLogQueryResponse>>([]);
|
||||
const selectedKeys = ref<Array<number>>([]);
|
||||
|
||||
const formModel = reactive<HostConnectLogQueryRequest>({
|
||||
const formModel = reactive<TerminalConnectLogQueryRequest>({
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
hostId: undefined,
|
||||
@@ -234,10 +234,10 @@
|
||||
});
|
||||
|
||||
// 加载数据
|
||||
const doFetchTableData = async (request: HostConnectLogQueryRequest) => {
|
||||
const doFetchTableData = async (request: TerminalConnectLogQueryRequest) => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const { data } = await getHostConnectLogPage(request);
|
||||
const { data } = await getTerminalConnectLogPage(request);
|
||||
tableRenderData.value = data.rows;
|
||||
pagination.total = data.total;
|
||||
pagination.current = request.page;
|
||||
@@ -262,11 +262,11 @@
|
||||
};
|
||||
|
||||
// 强制下线
|
||||
const forceOffline = async (record: HostConnectLogQueryResponse) => {
|
||||
const forceOffline = async (record: TerminalConnectLogQueryResponse) => {
|
||||
try {
|
||||
setLoading(true);
|
||||
await hostForceOffline({ id: record.id });
|
||||
record.status = HostConnectStatus.FORCE_OFFLINE;
|
||||
record.status = TerminalConnectStatus.FORCE_OFFLINE;
|
||||
record.endTime = Date.now();
|
||||
Message.success('已下线');
|
||||
} catch (e) {
|
||||
@@ -280,7 +280,7 @@
|
||||
try {
|
||||
setLoading(true);
|
||||
// 调用删除接口
|
||||
await deleteHostConnectLog(selectedKeys.value);
|
||||
await deleteTerminalConnectLog(selectedKeys.value);
|
||||
Message.success(`成功删除 ${selectedKeys.value.length} 条数据`);
|
||||
selectedKeys.value = [];
|
||||
// 重新加载数据
|
||||
@@ -292,11 +292,11 @@
|
||||
};
|
||||
|
||||
// 删除当前行
|
||||
const deleteRow = async (record: HostConnectLogQueryResponse) => {
|
||||
const deleteRow = async (record: TerminalConnectLogQueryResponse) => {
|
||||
try {
|
||||
setLoading(true);
|
||||
// 调用删除接口
|
||||
await deleteHostConnectLog([record.id]);
|
||||
await deleteTerminalConnectLog([record.id]);
|
||||
Message.success('删除成功');
|
||||
selectedKeys.value = [];
|
||||
// 重新加载数据
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// 主机连接类型
|
||||
export const HostConnectType = {
|
||||
// 终端连接类型
|
||||
export const TerminalConnectType = {
|
||||
SSH: 'SSH',
|
||||
SFTP: 'SFTP',
|
||||
};
|
||||
|
||||
// 主机连接状态
|
||||
export const HostConnectStatus = {
|
||||
// 终端连接状态
|
||||
export const TerminalConnectStatus = {
|
||||
CONNECTING: 'CONNECTING',
|
||||
COMPLETE: 'COMPLETE',
|
||||
FAILED: 'FAILED',
|
||||
@@ -15,11 +15,11 @@ export const HostConnectStatus = {
|
||||
// 最大清理数量
|
||||
export const maxClearLimit = 2000;
|
||||
|
||||
// 主机连接状态 字典项
|
||||
export const connectStatusKey = 'hostConnectStatus';
|
||||
// 终端连接状态 字典项
|
||||
export const connectStatusKey = 'terminalConnectStatus';
|
||||
|
||||
// 主机连接类型 字典项
|
||||
export const connectTypeKey = 'hostConnectType';
|
||||
// 终端连接类型 字典项
|
||||
export const connectTypeKey = 'terminalConnectType';
|
||||
|
||||
// 加载的字典值
|
||||
export const dictKeys = [connectStatusKey, connectTypeKey];
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
position="left"
|
||||
type="warning"
|
||||
@ok="forceOffline(record)">
|
||||
<a-button v-permission="['asset:host-connect-log:management:force-offline', 'asset:host-connect-session:management:force-offline']"
|
||||
<a-button v-permission="['asset:terminal-connect-log:management:force-offline', 'asset:terminal-connect-session:management:force-offline']"
|
||||
type="text"
|
||||
size="mini"
|
||||
status="danger">
|
||||
@@ -120,9 +120,9 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { HostConnectLogQueryRequest, HostConnectLogQueryResponse } from '@/api/asset/host-connect-log';
|
||||
import type { TerminalConnectLogQueryRequest, TerminalConnectLogQueryResponse } from '@/api/asset/terminal-connect-log';
|
||||
import { reactive, ref, onMounted } from 'vue';
|
||||
import { getHostConnectSessions, hostForceOffline } from '@/api/asset/host-connect-log';
|
||||
import { getTerminalConnectSessions, hostForceOffline } from '@/api/asset/terminal-connect-log';
|
||||
import { connectTypeKey } from '../types/const';
|
||||
import { useDictStore } from '@/store';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
@@ -132,12 +132,12 @@
|
||||
import UserSelector from '@/components/user/user/selector/index.vue';
|
||||
import HostSelector from '@/components/asset/host/selector/index.vue';
|
||||
|
||||
const tableRenderData = ref<HostConnectLogQueryResponse[]>([]);
|
||||
const tableRenderData = ref<TerminalConnectLogQueryResponse[]>([]);
|
||||
|
||||
const { loading, setLoading } = useLoading();
|
||||
const { toOptions, getDictValue } = useDictStore();
|
||||
|
||||
const formModel = reactive<HostConnectLogQueryRequest>({
|
||||
const formModel = reactive<TerminalConnectLogQueryRequest>({
|
||||
userId: undefined,
|
||||
hostId: undefined,
|
||||
hostAddress: undefined,
|
||||
@@ -149,7 +149,7 @@
|
||||
const fetchTableData = async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const { data } = await getHostConnectSessions(formModel);
|
||||
const { data } = await getTerminalConnectSessions(formModel);
|
||||
tableRenderData.value = data;
|
||||
} catch (e) {
|
||||
} finally {
|
||||
@@ -158,7 +158,7 @@
|
||||
};
|
||||
|
||||
// 强制下线
|
||||
const forceOffline = async (record: HostConnectLogQueryResponse) => {
|
||||
const forceOffline = async (record: TerminalConnectLogQueryResponse) => {
|
||||
try {
|
||||
setLoading(true);
|
||||
// 下线
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// 主机连接类型 字典项
|
||||
export const connectTypeKey = 'hostConnectType';
|
||||
// 终端连接类型 字典项
|
||||
export const connectTypeKey = 'terminalConnectType';
|
||||
|
||||
// 加载的字典值
|
||||
export const dictKeys = [connectTypeKey];
|
||||
|
||||
Reference in New Issue
Block a user