🎉 重构前端代码.
This commit is contained in:
@@ -36,6 +36,21 @@ export interface HostSshConfig extends HostBaseConfig {
|
||||
fileContentCharset?: string;
|
||||
}
|
||||
|
||||
// 主机 RDP 配置
|
||||
export interface HostRdpConfig extends HostBaseConfig {
|
||||
identityId?: number;
|
||||
versionGt81?: boolean;
|
||||
timezone?: string;
|
||||
keyboardLayout?: string;
|
||||
clipboardNormalize?: string;
|
||||
domain?: string;
|
||||
preConnectionId?: string;
|
||||
preConnectionBlob?: string;
|
||||
remoteApp?: string;
|
||||
remoteAppDir?: string;
|
||||
remoteAppArgs?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新主机配置
|
||||
*/
|
||||
|
||||
@@ -25,6 +25,13 @@ export interface HostSshExtraSettingModel {
|
||||
identityId: number;
|
||||
}
|
||||
|
||||
// RDP 额外配置
|
||||
export interface HostRdpExtraSettingModel {
|
||||
authType: string;
|
||||
identityId: number;
|
||||
lowBandwidthMode: boolean;
|
||||
}
|
||||
|
||||
// 标签额外配置
|
||||
export interface HostLabelExtraSettingModel {
|
||||
alias: string;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { HostExtraUpdateRequest, HostSpecExtraModel } from './host-extra';
|
||||
import type { TableData } from '@arco-design/web-vue';
|
||||
import type { DataGrid, OrderDirection, Pagination } from '@/types/global';
|
||||
import type { DataGrid, FavoriteItem, OrderDirection, Pagination } from '@/types/global';
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
@@ -58,9 +58,9 @@ export interface HostQueryRequest extends Pagination, OrderDirection {
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机查询响应
|
||||
* 主机查询基础响应
|
||||
*/
|
||||
export interface HostQueryResponse extends TableData, HostQueryResponseExtra {
|
||||
export interface HostQueryBaseResponse {
|
||||
id: number;
|
||||
types: Array<string>;
|
||||
osType: string;
|
||||
@@ -74,7 +74,12 @@ export interface HostQueryResponse extends TableData, HostQueryResponseExtra {
|
||||
updateTime: number;
|
||||
creator: string;
|
||||
updater: string;
|
||||
favorite: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机查询响应
|
||||
*/
|
||||
export interface HostQueryResponse extends HostQueryBaseResponse, TableData, FavoriteItem, HostQueryResponseExtra {
|
||||
alias: string;
|
||||
color: string;
|
||||
tags: Array<{ id: number, name: string }>;
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
import axios from 'axios';
|
||||
import { createAppWebSocket } from '@/utils/http';
|
||||
|
||||
// 终端主题
|
||||
export interface TerminalTheme {
|
||||
name: string;
|
||||
dark: boolean;
|
||||
schema: TerminalThemeSchema;
|
||||
}
|
||||
|
||||
// 终端主题 schema
|
||||
export interface TerminalThemeSchema {
|
||||
background: string;
|
||||
foreground: string;
|
||||
cursor: string;
|
||||
cursorAccent?: string;
|
||||
selectionBackground?: string;
|
||||
selectionForeground?: string;
|
||||
selectionInactiveBackground?: string;
|
||||
black: string;
|
||||
red: string;
|
||||
green: string;
|
||||
yellow: string;
|
||||
blue: string;
|
||||
magenta: string;
|
||||
cyan: string;
|
||||
white: string;
|
||||
brightBlack: string;
|
||||
brightRed: string;
|
||||
brightGreen: string;
|
||||
brightYellow: string;
|
||||
brightBlue: string;
|
||||
brightMagenta: string;
|
||||
brightCyan: string;
|
||||
brightWhite: string;
|
||||
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取终端主题
|
||||
*/
|
||||
export function getTerminalThemes() {
|
||||
return axios.get<Array<TerminalTheme>>('/asset/terminal/themes');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取终端 accessToken
|
||||
*/
|
||||
export function getTerminalAccessToken() {
|
||||
return axios.get<string>('/asset/terminal/access');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取终端 transferToken
|
||||
*/
|
||||
export function getTerminalTransferToken() {
|
||||
return axios.get<string>('/asset/terminal/transfer');
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开终端 websocket
|
||||
*/
|
||||
export const openTerminalAccessChannel = (accessToken: string) => {
|
||||
return createAppWebSocket(`/terminal/access/${accessToken}`);
|
||||
};
|
||||
|
||||
/**
|
||||
* 打开终端传输 websocket
|
||||
*/
|
||||
export const openTerminalTransferChannel = (accessToken: string) => {
|
||||
return createAppWebSocket(`/terminal/transfer/${accessToken}`);
|
||||
};
|
||||
@@ -14,35 +14,35 @@ import qs from 'query-string';
|
||||
* 分页查询批量执行日志
|
||||
*/
|
||||
export function getExecCommandLogPage(request: ExecLogQueryRequest) {
|
||||
return axios.post<DataGrid<ExecLogQueryResponse>>('/asset/exec-command-log/query', request);
|
||||
return axios.post<DataGrid<ExecLogQueryResponse>>('/exec/exec-command-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询批量执行日志
|
||||
*/
|
||||
export function getExecCommandLog(id: number) {
|
||||
return axios.get<ExecLogQueryResponse>('/asset/exec-command-log/get', { params: { id } });
|
||||
return axios.get<ExecLogQueryResponse>('/exec/exec-command-log/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机计划任务日志
|
||||
*/
|
||||
export function getExecCommandHostLog(id: number) {
|
||||
return axios.get<ExecHostLogQueryResponse>('/asset/exec-command-log/get-host', { params: { id } });
|
||||
return axios.get<ExecHostLogQueryResponse>('/exec/exec-command-log/get-host', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机批量执行日志
|
||||
*/
|
||||
export function getExecCommandHostLogList(logId: number) {
|
||||
return axios.get<Array<ExecHostLogQueryResponse>>('/asset/exec-command-log/host-list', { params: { logId } });
|
||||
return axios.get<Array<ExecHostLogQueryResponse>>('/exec/exec-command-log/host-list', { params: { logId } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询命令执行状态
|
||||
*/
|
||||
export function getExecCommandLogStatus(idList: Array<number>) {
|
||||
return axios.get<ExecLogStatusResponse>('/asset/exec-command-log/status', {
|
||||
return axios.get<ExecLogStatusResponse>('/exec/exec-command-log/status', {
|
||||
params: { idList },
|
||||
promptBizErrorMessage: false,
|
||||
promptRequestErrorMessage: false,
|
||||
@@ -56,21 +56,21 @@ export function getExecCommandLogStatus(idList: Array<number>) {
|
||||
* 查询历史批量执行日志
|
||||
*/
|
||||
export function getExecCommandLogHistory(limit: number) {
|
||||
return axios.get<Array<ExecLogQueryResponse>>('/asset/exec-command-log/history', { params: { page: 1, limit } });
|
||||
return axios.get<Array<ExecLogQueryResponse>>('/exec/exec-command-log/history', { params: { page: 1, limit } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除批量执行日志
|
||||
*/
|
||||
export function deleteExecCommandLog(id: number) {
|
||||
return axios.delete('/asset/exec-command-log/delete', { params: { id } });
|
||||
return axios.delete('/exec/exec-command-log/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除批量执行日志
|
||||
*/
|
||||
export function batchDeleteExecCommandLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/exec-command-log/batch-delete', {
|
||||
return axios.delete('/exec/exec-command-log/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
@@ -82,21 +82,21 @@ export function batchDeleteExecCommandLog(idList: Array<number>) {
|
||||
* 删除主机批量执行日志
|
||||
*/
|
||||
export function deleteExecCommandHostLog(id: number) {
|
||||
return axios.delete('/asset/exec-command-log/delete-host', { params: { id } });
|
||||
return axios.delete('/exec/exec-command-log/delete-host', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询批量执行日志数量
|
||||
*/
|
||||
export function getExecCommandLogCount(request: ExecLogQueryRequest) {
|
||||
return axios.post<number>('/asset/exec-command-log/count', request);
|
||||
return axios.post<number>('/exec/exec-command-log/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空批量执行日志
|
||||
*/
|
||||
export function clearExecCommandLog(request: ExecLogClearRequest) {
|
||||
return axios.post<number>('/asset/exec-command-log/clear', request, {
|
||||
return axios.post<number>('/exec/exec-command-log/clear', request, {
|
||||
timeout: 60000,
|
||||
});
|
||||
}
|
||||
@@ -105,14 +105,14 @@ export function clearExecCommandLog(request: ExecLogClearRequest) {
|
||||
* 查看批量执行日志
|
||||
*/
|
||||
export function getExecCommandLogTailToken(id: number) {
|
||||
return axios.get<string>('/asset/exec-command-log/tail', { params: { id } });
|
||||
return axios.get<string>('/exec/exec-command-log/tail', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载批量执行日志文件
|
||||
*/
|
||||
export function downloadExecCommandLogFile(id: number) {
|
||||
return axios.get('/asset/exec-command-log/download', {
|
||||
return axios.get('/exec/exec-command-log/download', {
|
||||
unwrap: true,
|
||||
responseType: 'blob',
|
||||
params: { id },
|
||||
@@ -123,12 +123,12 @@ export function downloadExecCommandLogFile(id: number) {
|
||||
* 中断执行命令
|
||||
*/
|
||||
export function interruptExecCommand(request: ExecLogInterruptRequest) {
|
||||
return axios.put('/asset/exec-command-log/interrupt', request);
|
||||
return axios.put('/exec/exec-command-log/interrupt', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 中断执行主机命令
|
||||
*/
|
||||
export function interruptHostExecCommand(request: ExecLogInterruptRequest) {
|
||||
return axios.put('/asset/exec-command-log/interrupt-host', request);
|
||||
return axios.put('/exec/exec-command-log/interrupt-host', request);
|
||||
}
|
||||
|
||||
@@ -18,12 +18,12 @@ export interface ExecCommandRequest {
|
||||
* 批量执行命令
|
||||
*/
|
||||
export function batchExecCommand(request: ExecCommandRequest) {
|
||||
return axios.post<ExecLogQueryResponse>('/asset/exec-command/exec', request);
|
||||
return axios.post<ExecLogQueryResponse>('/exec/exec-command/exec', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新执行命令
|
||||
*/
|
||||
export function reExecCommand(request: ExecCommandRequest) {
|
||||
return axios.post<ExecLogQueryResponse>('/asset/exec-command/re-exec', request);
|
||||
return axios.post<ExecLogQueryResponse>('/exec/exec-command/re-exec', request);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import type {
|
||||
ExecLogQueryRequest,
|
||||
ExecLogQueryResponse,
|
||||
ExecLogStatusResponse,
|
||||
} from './exec-log';
|
||||
} from '../exec/exec-log';
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
@@ -14,35 +14,35 @@ import qs from 'query-string';
|
||||
* 分页查询计划任务日志
|
||||
*/
|
||||
export function getExecJobLogPage(request: ExecLogQueryRequest) {
|
||||
return axios.post<DataGrid<ExecLogQueryResponse>>('/asset/exec-job-log/query', request);
|
||||
return axios.post<DataGrid<ExecLogQueryResponse>>('/exec/exec-job-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询计划任务日志
|
||||
*/
|
||||
export function getExecJobLog(id: number) {
|
||||
return axios.get<ExecLogQueryResponse>('/asset/exec-job-log/get', { params: { id } });
|
||||
return axios.get<ExecLogQueryResponse>('/exec/exec-job-log/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机计划任务日志
|
||||
*/
|
||||
export function getExecJobHostLog(id: number) {
|
||||
return axios.get<ExecHostLogQueryResponse>('/asset/exec-job-log/get-host', { params: { id } });
|
||||
return axios.get<ExecHostLogQueryResponse>('/exec/exec-job-log/get-host', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机计划任务日志
|
||||
*/
|
||||
export function getExecJobHostLogList(logId: number) {
|
||||
return axios.get<Array<ExecHostLogQueryResponse>>('/asset/exec-job-log/host-list', { params: { logId } });
|
||||
return axios.get<Array<ExecHostLogQueryResponse>>('/exec/exec-job-log/host-list', { params: { logId } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询命令执行状态
|
||||
*/
|
||||
export function getExecJobLogStatus(idList: Array<number>) {
|
||||
return axios.get<ExecLogStatusResponse>('/asset/exec-job-log/status', {
|
||||
return axios.get<ExecLogStatusResponse>('/exec/exec-job-log/status', {
|
||||
params: { idList },
|
||||
promptBizErrorMessage: false,
|
||||
promptRequestErrorMessage: false,
|
||||
@@ -56,14 +56,14 @@ export function getExecJobLogStatus(idList: Array<number>) {
|
||||
* 删除计划任务日志
|
||||
*/
|
||||
export function deleteExecJobLog(id: number) {
|
||||
return axios.delete('/asset/exec-job-log/delete', { params: { id } });
|
||||
return axios.delete('/exec/exec-job-log/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除计划任务日志
|
||||
*/
|
||||
export function batchDeleteExecJobLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/exec-job-log/batch-delete', {
|
||||
return axios.delete('/exec/exec-job-log/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
@@ -75,21 +75,21 @@ export function batchDeleteExecJobLog(idList: Array<number>) {
|
||||
* 删除主机计划任务日志
|
||||
*/
|
||||
export function deleteExecJobHostLog(id: number) {
|
||||
return axios.delete('/asset/exec-job-log/delete-host', { params: { id } });
|
||||
return axios.delete('/exec/exec-job-log/delete-host', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询计划任务日志数量
|
||||
*/
|
||||
export function getExecJobLogCount(request: ExecLogQueryRequest) {
|
||||
return axios.post<number>('/asset/exec-job-log/count', request);
|
||||
return axios.post<number>('/exec/exec-job-log/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空计划任务日志
|
||||
*/
|
||||
export function clearExecJobLog(request: ExecLogClearRequest) {
|
||||
return axios.post<number>('/asset/exec-job-log/clear', request, {
|
||||
return axios.post<number>('/exec/exec-job-log/clear', request, {
|
||||
timeout: 60000,
|
||||
});
|
||||
}
|
||||
@@ -98,14 +98,14 @@ export function clearExecJobLog(request: ExecLogClearRequest) {
|
||||
* 查看计划任务日志
|
||||
*/
|
||||
export function getExecJobLogTailToken(id: number) {
|
||||
return axios.get<string>('/asset/exec-job-log/tail', { params: { id } });
|
||||
return axios.get<string>('/exec/exec-job-log/tail', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载计划任务日志文件
|
||||
*/
|
||||
export function downloadExecJobLogFile(id: number) {
|
||||
return axios.get('/asset/exec-job-log/download', {
|
||||
return axios.get('/exec/exec-job-log/download', {
|
||||
unwrap: true,
|
||||
responseType: 'blob',
|
||||
params: { id },
|
||||
@@ -116,12 +116,12 @@ export function downloadExecJobLogFile(id: number) {
|
||||
* 中断计划任务执行
|
||||
*/
|
||||
export function interruptExecJob(request: ExecLogInterruptRequest) {
|
||||
return axios.put('/asset/exec-job-log/interrupt', request);
|
||||
return axios.put('/exec/exec-job-log/interrupt', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 中断计划任务执行主机
|
||||
*/
|
||||
export function interruptHostExecJob(request: ExecLogInterruptRequest) {
|
||||
return axios.put('/asset/exec-job-log/interrupt-host', request);
|
||||
return axios.put('/exec/exec-job-log/interrupt-host', request);
|
||||
}
|
||||
|
||||
@@ -81,63 +81,70 @@ export interface ExecJobQueryResponse extends TableData {
|
||||
* 创建计划任务
|
||||
*/
|
||||
export function createExecJob(request: ExecJobCreateRequest) {
|
||||
return axios.post('/asset/exec-job/create', request);
|
||||
return axios.post('/exec/exec-job/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新计划任务
|
||||
*/
|
||||
export function updateExecJob(request: ExecJobUpdateRequest) {
|
||||
return axios.put('/asset/exec-job/update', request);
|
||||
return axios.put('/exec/exec-job/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新计划任务状态
|
||||
*/
|
||||
export function updateExecJobStatus(request: ExecJobUpdateStatusRequest) {
|
||||
return axios.put('/asset/exec-job/update-status', request);
|
||||
return axios.put('/exec/exec-job/update-status', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新计划任务执行用户
|
||||
*/
|
||||
export function updateExecJobExecUser(request: ExecJobUpdateExecUserRequest) {
|
||||
return axios.put<number>('/asset/exec-job/update-exec-user', request);
|
||||
return axios.put<number>('/exec/exec-job/update-exec-user', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询计划任务
|
||||
*/
|
||||
export function getExecJob(id: number) {
|
||||
return axios.get<ExecJobQueryResponse>('/asset/exec-job/get', { params: { id } });
|
||||
return axios.get<ExecJobQueryResponse>('/exec/exec-job/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部计划任务
|
||||
*/
|
||||
export function getExecJobList() {
|
||||
return axios.get<Array<ExecJobQueryResponse>>('/asset/exec-job/list');
|
||||
return axios.get<Array<ExecJobQueryResponse>>('/exec/exec-job/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询计划任务
|
||||
*/
|
||||
export function getExecJobPage(request: ExecJobQueryRequest) {
|
||||
return axios.post<DataGrid<ExecJobQueryResponse>>('/asset/exec-job/query', request);
|
||||
return axios.post<DataGrid<ExecJobQueryResponse>>('/exec/exec-job/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询计划任务数量
|
||||
*/
|
||||
export function getExecJobCount(request: ExecJobQueryRequest) {
|
||||
return axios.post<number>('/exec/exec-job/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除计划任务
|
||||
*/
|
||||
export function deleteExecJob(id: number) {
|
||||
return axios.delete('/asset/exec-job/delete', { params: { id } });
|
||||
return axios.delete('/exec/exec-job/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除计划任务
|
||||
*/
|
||||
export function batchDeleteExecJob(idList: Array<number>) {
|
||||
return axios.delete('/asset/exec-job/batch-delete', {
|
||||
return axios.delete('/exec/exec-job/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
@@ -149,5 +156,5 @@ export function batchDeleteExecJob(idList: Array<number>) {
|
||||
* 手动触发计划任务
|
||||
*/
|
||||
export function triggerExecJob(id: number) {
|
||||
return axios.post('/asset/exec-job/trigger', { id });
|
||||
return axios.post('/exec/exec-job/trigger', { id });
|
||||
}
|
||||
|
||||
@@ -52,49 +52,56 @@ export interface ExecTemplateQueryResponse extends TableData {
|
||||
* 创建执行模板
|
||||
*/
|
||||
export function createExecTemplate(request: ExecTemplateCreateRequest) {
|
||||
return axios.post('/asset/exec-template/create', request);
|
||||
return axios.post('/exec/exec-template/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新执行模板
|
||||
*/
|
||||
export function updateExecTemplate(request: ExecTemplateUpdateRequest) {
|
||||
return axios.put('/asset/exec-template/update', request);
|
||||
return axios.put('/exec/exec-template/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询执行模板
|
||||
*/
|
||||
export function getExecTemplate(id: number) {
|
||||
return axios.get<ExecTemplateQueryResponse>('/asset/exec-template/get', { params: { id } });
|
||||
return axios.get<ExecTemplateQueryResponse>('/exec/exec-template/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询执行模板
|
||||
*/
|
||||
export function getExecTemplateWithAuthorized(id: number) {
|
||||
return axios.get<ExecTemplateQueryResponse>('/asset/exec-template/get-with-authorized', { params: { id } });
|
||||
return axios.get<ExecTemplateQueryResponse>('/exec/exec-template/get-with-authorized', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询执行模板
|
||||
*/
|
||||
export function getExecTemplatePage(request: ExecTemplateQueryRequest) {
|
||||
return axios.post<DataGrid<ExecTemplateQueryResponse>>('/asset/exec-template/query', request);
|
||||
return axios.post<DataGrid<ExecTemplateQueryResponse>>('/exec/exec-template/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询执行模板数量
|
||||
*/
|
||||
export function getExecTemplateCount(request: ExecTemplateQueryRequest) {
|
||||
return axios.post<number>('/exec/exec-template/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除执行模板
|
||||
*/
|
||||
export function deleteExecTemplate(id: number) {
|
||||
return axios.delete('/asset/exec-template/delete', { params: { id } });
|
||||
return axios.delete('/exec/exec-template/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除执行模板
|
||||
*/
|
||||
export function batchDeleteExecTemplate(idList: Array<number>) {
|
||||
return axios.delete('/asset/exec-template/batch-delete', {
|
||||
return axios.delete('/exec/exec-template/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
|
||||
@@ -110,48 +110,48 @@ export interface UploadTaskStatusResponse extends TableData {
|
||||
* 创建上传任务
|
||||
*/
|
||||
export function createUploadTask(request: UploadTaskCreateRequest) {
|
||||
return axios.post<UploadTaskCreateResponse>('/asset/upload-task/create', request);
|
||||
return axios.post<UploadTaskCreateResponse>('/exec/upload-task/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建上传任务
|
||||
*/
|
||||
export function startUploadTask(id: number) {
|
||||
return axios.post('/asset/upload-task/start', { id });
|
||||
return axios.post('/exec/upload-task/start', { id });
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建上传任务
|
||||
*/
|
||||
export function cancelUploadTask(id: number, failed: boolean) {
|
||||
return axios.post('/asset/upload-task/cancel', { id, failed });
|
||||
return axios.post('/exec/upload-task/cancel', { id, failed });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询上传任务
|
||||
*/
|
||||
export function getUploadTask(id: number) {
|
||||
return axios.get<UploadTaskQueryResponse>('/asset/upload-task/get', { params: { id } });
|
||||
return axios.get<UploadTaskQueryResponse>('/exec/upload-task/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询上传任务
|
||||
*/
|
||||
export function getUploadTaskPage(request: UploadTaskQueryRequest) {
|
||||
return axios.post<DataGrid<UploadTaskQueryResponse>>('/asset/upload-task/query', request);
|
||||
return axios.post<DataGrid<UploadTaskQueryResponse>>('/exec/upload-task/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询上传任务状态
|
||||
*/
|
||||
export function getUploadTaskStatus(idList: Array<number>, queryFiles: boolean) {
|
||||
return axios.get<Array<UploadTaskStatusResponse>>('/asset/upload-task/status', {
|
||||
return axios.get<Array<UploadTaskStatusResponse>>('/exec/upload-task/status', {
|
||||
params: { idList, queryFiles },
|
||||
promptBizErrorMessage: false,
|
||||
promptRequestErrorMessage: false,
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -159,14 +159,14 @@ export function getUploadTaskStatus(idList: Array<number>, queryFiles: boolean)
|
||||
* 删除上传任务
|
||||
*/
|
||||
export function deleteUploadTask(id: number) {
|
||||
return axios.delete('/asset/upload-task/delete', { params: { id } });
|
||||
return axios.delete('/exec/upload-task/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除上传任务
|
||||
*/
|
||||
export function batchDeleteUploadTask(idList: Array<number>) {
|
||||
return axios.delete('/asset/upload-task/batch-delete', {
|
||||
return axios.delete('/exec/upload-task/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
@@ -178,14 +178,14 @@ export function batchDeleteUploadTask(idList: Array<number>) {
|
||||
* 查询批量上传任务数量
|
||||
*/
|
||||
export function getUploadTaskCount(request: UploadTaskQueryRequest) {
|
||||
return axios.post<number>('/asset/upload-task/count', request);
|
||||
return axios.post<number>('/exec/upload-task/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空查询批量上传任务
|
||||
* 清空批量上传任务
|
||||
*/
|
||||
export function clearUploadTask(request: UploadTaskClearRequest) {
|
||||
return axios.post<number>('/asset/upload-task/clear', request, {
|
||||
return axios.post<number>('/exec/upload-task/clear', request, {
|
||||
timeout: 60000,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,26 +1,9 @@
|
||||
import type { LineSingleChartData } from '@/types/global';
|
||||
import type { TerminalConnectLogQueryResponse } from '@/api/asset/terminal-connect-log';
|
||||
import type { ExecLogQueryResponse } from '@/api/exec/exec-log';
|
||||
import type { PieChartData } from '@/types/global';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 资产模块工作台响应
|
||||
* 查询主机类型图表
|
||||
*/
|
||||
export interface AssetWorkplaceStatisticsResponse {
|
||||
execJobCount: number;
|
||||
todayTerminalConnectCount: number;
|
||||
todayExecCommandCount: number;
|
||||
weekTerminalConnectCount: number;
|
||||
weekExecCommandCount: number;
|
||||
execCommandChart: LineSingleChartData;
|
||||
terminalConnectChart: LineSingleChartData;
|
||||
terminalConnectList: Array<TerminalConnectLogQueryResponse>;
|
||||
execLogList: Array<ExecLogQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询资产模块工作台统计信息
|
||||
*/
|
||||
export function getAssetWorkplaceStatisticsData() {
|
||||
return axios.get<AssetWorkplaceStatisticsResponse>('/asset/statistics/get-workplace');
|
||||
export function getHostTypeChart() {
|
||||
return axios.get<PieChartData>('/asset/statistics/host-type-chart');
|
||||
}
|
||||
|
||||
21
orion-visor-ui/src/api/statistics/exec-statistics.ts
Normal file
21
orion-visor-ui/src/api/statistics/exec-statistics.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { LineSingleChartData } from '@/types/global';
|
||||
import type { ExecLogQueryResponse } from '@/api/exec/exec-log';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 执行模块工作台响应
|
||||
*/
|
||||
export interface ExecWorkplaceStatisticsResponse {
|
||||
execJobCount: number;
|
||||
todayExecCommandCount: number;
|
||||
weekExecCommandCount: number;
|
||||
execCommandChart: LineSingleChartData;
|
||||
execLogList: Array<ExecLogQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询执行模块工作台统计信息
|
||||
*/
|
||||
export function getExecWorkplaceStatisticsData() {
|
||||
return axios.get<ExecWorkplaceStatisticsResponse>('/exec/statistics/get-workplace');
|
||||
}
|
||||
23
orion-visor-ui/src/api/statistics/terminal-statistics.ts
Normal file
23
orion-visor-ui/src/api/statistics/terminal-statistics.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { LineSingleChartData } from '@/types/global';
|
||||
import type { TerminalConnectLogQueryResponse } from '@/api/terminal/terminal-connect-log';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 终端模块工作台响应
|
||||
*/
|
||||
export interface TerminalWorkplaceStatisticsResponse {
|
||||
todayTerminalConnectCount: number;
|
||||
todayTerminalCommandCount: number;
|
||||
weekTerminalConnectCount: number;
|
||||
weekTerminalCommandCount: number;
|
||||
terminalConnectChart: LineSingleChartData;
|
||||
terminalCommandChart: LineSingleChartData;
|
||||
terminalConnectList: Array<TerminalConnectLogQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询终端模块工作台统计信息
|
||||
*/
|
||||
export function getTerminalWorkplaceStatisticsData() {
|
||||
return axios.get<TerminalWorkplaceStatisticsResponse>('/terminal/statistics/get-workplace');
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { DataGrid, Options, OrderDirection, Pagination } from '@/types/global';
|
||||
import type { DataGrid, OrderDirection, Options, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue';
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
@@ -28,27 +28,27 @@ export interface CommandSnippetGroupQueryResponse {
|
||||
* 创建命令片段分组
|
||||
*/
|
||||
export function createCommandSnippetGroup(request: CommandSnippetGroupCreateRequest) {
|
||||
return axios.post('/asset/command-snippet-group/create', request);
|
||||
return axios.post('/terminal/command-snippet-group/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新命令片段分组
|
||||
*/
|
||||
export function updateCommandSnippetGroup(request: CommandSnippetGroupUpdateRequest) {
|
||||
return axios.put('/asset/command-snippet-group/update', request);
|
||||
return axios.put('/terminal/command-snippet-group/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部命令片段分组
|
||||
*/
|
||||
export function getCommandSnippetGroupList() {
|
||||
return axios.get<Array<CommandSnippetGroupQueryResponse>>('/asset/command-snippet-group/list');
|
||||
return axios.get<Array<CommandSnippetGroupQueryResponse>>('/terminal/command-snippet-group/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除命令片段分组
|
||||
*/
|
||||
export function deleteCommandSnippetGroup(id: number) {
|
||||
return axios.delete('/asset/command-snippet-group/delete', { params: { id } });
|
||||
return axios.delete('/terminal/command-snippet-group/delete', { params: { id } });
|
||||
}
|
||||
|
||||
@@ -43,26 +43,26 @@ export interface CommandSnippetWrapperResponse {
|
||||
* 创建命令片段
|
||||
*/
|
||||
export function createCommandSnippet(request: CommandSnippetCreateRequest) {
|
||||
return axios.post('/asset/command-snippet/create', request);
|
||||
return axios.post('/terminal/command-snippet/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新命令片段
|
||||
*/
|
||||
export function updateCommandSnippet(request: CommandSnippetUpdateRequest) {
|
||||
return axios.put('/asset/command-snippet/update', request);
|
||||
return axios.put('/terminal/command-snippet/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部命令片段
|
||||
*/
|
||||
export function getCommandSnippetList() {
|
||||
return axios.get<CommandSnippetWrapperResponse>('/asset/command-snippet/list');
|
||||
return axios.get<CommandSnippetWrapperResponse>('/terminal/command-snippet/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除命令片段
|
||||
*/
|
||||
export function deleteCommandSnippet(id: number) {
|
||||
return axios.delete('/asset/command-snippet/delete', { params: { id } });
|
||||
return axios.delete('/terminal/command-snippet/delete', { params: { id } });
|
||||
}
|
||||
@@ -28,27 +28,27 @@ export interface PathBookmarkGroupQueryResponse {
|
||||
* 创建路径书签分组
|
||||
*/
|
||||
export function createPathBookmarkGroup(request: PathBookmarkGroupCreateRequest) {
|
||||
return axios.post('/asset/path-bookmark-group/create', request);
|
||||
return axios.post('/terminal/path-bookmark-group/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新路径书签分组
|
||||
*/
|
||||
export function updatePathBookmarkGroup(request: PathBookmarkGroupUpdateRequest) {
|
||||
return axios.put('/asset/path-bookmark-group/update', request);
|
||||
return axios.put('/terminal/path-bookmark-group/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部路径书签分组
|
||||
*/
|
||||
export function getPathBookmarkGroupList() {
|
||||
return axios.get<Array<PathBookmarkGroupQueryResponse>>('/asset/path-bookmark-group/list');
|
||||
return axios.get<Array<PathBookmarkGroupQueryResponse>>('/terminal/path-bookmark-group/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除路径书签分组
|
||||
*/
|
||||
export function deletePathBookmarkGroup(id: number) {
|
||||
return axios.delete('/asset/path-bookmark-group/delete', { params: { id } });
|
||||
return axios.delete('/terminal/path-bookmark-group/delete', { params: { id } });
|
||||
}
|
||||
|
||||
@@ -45,26 +45,26 @@ export interface PathBookmarkWrapperResponse {
|
||||
* 创建路径标签
|
||||
*/
|
||||
export function createPathBookmark(request: PathBookmarkCreateRequest) {
|
||||
return axios.post('/asset/path-bookmark/create', request);
|
||||
return axios.post('/terminal/path-bookmark/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新路径标签
|
||||
*/
|
||||
export function updatePathBookmark(request: PathBookmarkUpdateRequest) {
|
||||
return axios.put('/asset/path-bookmark/update', request);
|
||||
return axios.put('/terminal/path-bookmark/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询路径标签
|
||||
*/
|
||||
export function getPathBookmarkList() {
|
||||
return axios.get<PathBookmarkWrapperResponse>('/asset/path-bookmark/list');
|
||||
return axios.get<PathBookmarkWrapperResponse>('/terminal/path-bookmark/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除路径标签
|
||||
*/
|
||||
export function deletePathBookmark(id: number) {
|
||||
return axios.delete('/asset/path-bookmark/delete', { params: { id } });
|
||||
return axios.delete('/terminal/path-bookmark/delete', { params: { id } });
|
||||
}
|
||||
@@ -46,6 +46,7 @@ export interface TerminalConnectLogQueryResponse extends TableData {
|
||||
*/
|
||||
export interface TerminalConnectLogExtra {
|
||||
traceId: string;
|
||||
channel: string;
|
||||
channelId: string;
|
||||
sessionId: string;
|
||||
address: string;
|
||||
@@ -58,21 +59,21 @@ export interface TerminalConnectLogExtra {
|
||||
* 分页查询终端连接日志
|
||||
*/
|
||||
export function getTerminalConnectLogPage(request: TerminalConnectLogQueryRequest) {
|
||||
return axios.post<DataGrid<TerminalConnectLogQueryResponse>>('/asset/terminal-connect-log/query', request);
|
||||
return axios.post<DataGrid<TerminalConnectLogQueryResponse>>('/terminal/terminal-connect-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部终端连接会话
|
||||
*/
|
||||
export function getTerminalConnectSessions(request: TerminalConnectLogQueryRequest) {
|
||||
return axios.post<Array<TerminalConnectLogQueryResponse>>('/asset/terminal-connect-log/sessions', request);
|
||||
return axios.post<Array<TerminalConnectLogQueryResponse>>('/terminal/terminal-connect-log/sessions', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户最近连接的主机
|
||||
*/
|
||||
export function getLatestConnectHostId(type: string, limit: number) {
|
||||
return axios.post<Array<number>>('/asset/terminal-connect-log/latest-connect', {
|
||||
return axios.post<Array<number>>('/terminal/terminal-connect-log/latest-connect', {
|
||||
type,
|
||||
limit
|
||||
});
|
||||
@@ -82,7 +83,7 @@ export function getLatestConnectHostId(type: string, limit: number) {
|
||||
* 删除终端连接日志
|
||||
*/
|
||||
export function deleteTerminalConnectLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/terminal-connect-log/delete', {
|
||||
return axios.delete('/terminal/terminal-connect-log/delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
@@ -94,14 +95,14 @@ export function deleteTerminalConnectLog(idList: Array<number>) {
|
||||
* 查询终端连接日志数量
|
||||
*/
|
||||
export function getTerminalConnectLogCount(request: TerminalConnectLogQueryRequest) {
|
||||
return axios.post<number>('/asset/terminal-connect-log/count', request);
|
||||
return axios.post<number>('/terminal/terminal-connect-log/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空终端连接日志
|
||||
*/
|
||||
export function clearTerminalConnectLog(request: TerminalConnectLogClearRequest) {
|
||||
return axios.post<number>('/asset/terminal-connect-log/clear', request, {
|
||||
return axios.post<number>('/terminal/terminal-connect-log/clear', request, {
|
||||
timeout: 60000,
|
||||
});
|
||||
}
|
||||
@@ -110,5 +111,5 @@ export function clearTerminalConnectLog(request: TerminalConnectLogClearRequest)
|
||||
* 强制断开终端连接
|
||||
*/
|
||||
export function hostForceOffline(request: TerminalConnectLogQueryRequest) {
|
||||
return axios.put('/asset/terminal-connect-log/force-offline', request);
|
||||
return axios.put('/terminal/terminal-connect-log/force-offline', request);
|
||||
}
|
||||
@@ -48,14 +48,21 @@ export interface TerminalSftpLogExtra {
|
||||
* 分页查询 SFTP 操作日志
|
||||
*/
|
||||
export function getTerminalSftpLogPage(request: TerminalSftpLogQueryRequest) {
|
||||
return axios.post<DataGrid<TerminalSftpLogQueryResponse>>('/asset/terminal-sftp/query-log', request);
|
||||
return axios.post<DataGrid<TerminalSftpLogQueryResponse>>('/terminal/terminal-sftp/query-log', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询 SFTP 操作日志数量
|
||||
*/
|
||||
export function getTerminalSftpLogCount(request: TerminalSftpLogQueryRequest) {
|
||||
return axios.post<number>('/terminal/terminal-sftp/log-count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除 SFTP 操作日志
|
||||
*/
|
||||
export function deleteTerminalSftpLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/terminal-sftp/delete-log', {
|
||||
return axios.delete('/terminal/terminal-sftp/delete-log', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
@@ -67,7 +74,7 @@ export function deleteTerminalSftpLog(idList: Array<number>) {
|
||||
* 获取 SFTP 文件内容
|
||||
*/
|
||||
export function getSftpFileContent(token: string) {
|
||||
return axios.get<string>('/asset/terminal-sftp/get-content', {
|
||||
return axios.get<string>('/terminal/terminal-sftp/get-content', {
|
||||
unwrap: true,
|
||||
params: { token },
|
||||
timeout: 60000
|
||||
@@ -81,7 +88,7 @@ export function setSftpFileContent(token: string, content: string) {
|
||||
const formData = new FormData();
|
||||
formData.append('token', token);
|
||||
formData.append('file', new File([content], Date.now() + '', { type: 'text/plain' }));
|
||||
return axios.post<boolean>('/asset/terminal-sftp/set-content', formData, {
|
||||
return axios.post<boolean>('/terminal/terminal-sftp/set-content', formData, {
|
||||
timeout: 60000,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
@@ -93,5 +100,5 @@ export function setSftpFileContent(token: string, content: string) {
|
||||
* 下载文件
|
||||
*/
|
||||
export function getDownloadTransferUrl(channelId: string, transferToken: string) {
|
||||
return `${httpBaseUrl}/asset/terminal-sftp/download?channelId=${channelId}&transferToken=${transferToken}`;
|
||||
return `${httpBaseUrl}/terminal/terminal-sftp/download?channelId=${channelId}&transferToken=${transferToken}`;
|
||||
}
|
||||
46
orion-visor-ui/src/api/terminal/terminal.ts
Normal file
46
orion-visor-ui/src/api/terminal/terminal.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import type { TerminalTheme } from '@/views/terminal/interfaces';
|
||||
import axios from 'axios';
|
||||
import { createAppWebSocket } from '@/utils/http';
|
||||
|
||||
// 终端访问请求
|
||||
export interface TerminalAccessRequest {
|
||||
hostId?: number;
|
||||
connectType?: string;
|
||||
extra?: Record<string, any>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主机终端主题
|
||||
*/
|
||||
export function getTerminalThemes() {
|
||||
return axios.get<Array<TerminalTheme>>('/terminal/terminal/themes');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主机终端 accessToken
|
||||
*/
|
||||
export function getTerminalAccessToken(request: TerminalAccessRequest) {
|
||||
return axios.post<string>('/terminal/terminal/access', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主机终端 transferToken
|
||||
*/
|
||||
export function getTerminalTransferToken() {
|
||||
return axios.get<string>('/terminal/terminal/transfer');
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开主机终端 websocket
|
||||
*/
|
||||
export const openTerminalAccessChannel = (protocol: string, accessToken: string) => {
|
||||
return createAppWebSocket(`/terminal/access/${protocol}/${accessToken}`);
|
||||
};
|
||||
|
||||
/**
|
||||
* 打开主机传输 websocket
|
||||
*/
|
||||
export const openTerminalTransferChannel = (accessToken: string) => {
|
||||
return createAppWebSocket(`/terminal/transfer/${accessToken}`);
|
||||
};
|
||||
|
||||
@@ -19,14 +19,6 @@ export interface RoleUpdateRequest extends RoleCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色 分配绑定请求
|
||||
*/
|
||||
export interface RoleGrantMenuRequest extends RoleCreateRequest {
|
||||
roleId: number;
|
||||
menuIdList: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色查询请求
|
||||
*/
|
||||
@@ -38,6 +30,14 @@ export interface RoleQueryRequest extends Pagination, OrderDirection {
|
||||
description?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色 分配绑定请求
|
||||
*/
|
||||
export interface RoleGrantMenuRequest extends RoleCreateRequest {
|
||||
roleId: number;
|
||||
menuIdList: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色查询响应
|
||||
*/
|
||||
|
||||
@@ -34,11 +34,9 @@ export interface UserQueryRequest extends Pagination, OrderDirection {
|
||||
username?: string;
|
||||
password?: string;
|
||||
nickname?: string;
|
||||
avatar?: string;
|
||||
mobile?: string;
|
||||
email?: string;
|
||||
status?: number;
|
||||
lastLoginTime?: string;
|
||||
description?: string;
|
||||
}
|
||||
|
||||
@@ -158,6 +156,13 @@ export function getUserPage(request: UserQueryRequest) {
|
||||
return axios.post<DataGrid<UserQueryResponse>>('/infra/system-user/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户数量
|
||||
*/
|
||||
export function getUserCount(request: UserQueryRequest) {
|
||||
return axios.post<number>('/infra/system-user/count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 删除用户
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user