🔖 项目重命名.
This commit is contained in:
36
orion-visor-ui/src/api/asset/asset-authorized-data.ts
Normal file
36
orion-visor-ui/src/api/asset/asset-authorized-data.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type { HostGroupQueryResponse } from '@/api/asset/host-group';
|
||||
import type { HostQueryResponse } from './host';
|
||||
import type { HostKeyQueryResponse } from './host-key';
|
||||
import type { HostIdentityQueryResponse } from './host-identity';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 已授权的主机 查询响应
|
||||
*/
|
||||
export interface AuthorizedHostQueryResponse {
|
||||
groupTree: Array<HostGroupQueryResponse>;
|
||||
hostList: Array<HostQueryResponse>;
|
||||
treeNodes: Record<string, Array<number>>;
|
||||
latestHosts: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前用户已授权的主机
|
||||
*/
|
||||
export function getCurrentAuthorizedHost(type: string) {
|
||||
return axios.get<AuthorizedHostQueryResponse>('/asset/authorized-data/current-host', { params: { type } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前用户已授权的主机秘钥
|
||||
*/
|
||||
export function getCurrentAuthorizedHostKey() {
|
||||
return axios.get<Array<HostKeyQueryResponse>>('/asset/authorized-data/current-host-key');
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前用户已授权的主机身份
|
||||
*/
|
||||
export function getCurrentAuthorizedHostIdentity() {
|
||||
return axios.get<Array<HostIdentityQueryResponse>>('/asset/authorized-data/current-host-identity');
|
||||
}
|
||||
60
orion-visor-ui/src/api/asset/asset-data-grant.ts
Normal file
60
orion-visor-ui/src/api/asset/asset-data-grant.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 数据授权 请求对象
|
||||
*/
|
||||
export interface AssetDataGrantRequest {
|
||||
userId?: number;
|
||||
roleId?: number;
|
||||
idList?: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权数据 查询请求对象
|
||||
*/
|
||||
export interface AssetAuthorizedDataQueryRequest {
|
||||
userId?: number;
|
||||
roleId?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机分组授权
|
||||
*/
|
||||
export function grantHostGroup(request: AssetDataGrantRequest) {
|
||||
return axios.put('/asset/data-grant/grant-host-group', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取已授权的主机分组
|
||||
*/
|
||||
export function getAuthorizedHostGroup(params: AssetAuthorizedDataQueryRequest) {
|
||||
return axios.get<Array<number>>('/asset/data-grant/get-host-group', { params });
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机秘钥授权
|
||||
*/
|
||||
export function grantHostKey(request: AssetDataGrantRequest) {
|
||||
return axios.put('/asset/data-grant/grant-host-key', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取已授权的主机秘钥
|
||||
*/
|
||||
export function getAuthorizedHostKey(params: AssetAuthorizedDataQueryRequest) {
|
||||
return axios.get<Array<number>>('/asset/data-grant/get-host-key', { params });
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机身份授权
|
||||
*/
|
||||
export function grantHostIdentity(request: AssetDataGrantRequest) {
|
||||
return axios.put('/asset/data-grant/grant-host-identity', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取已授权的主机身份
|
||||
*/
|
||||
export function getAuthorizedHostIdentity(params: AssetAuthorizedDataQueryRequest) {
|
||||
return axios.get<Array<number>>('/asset/data-grant/get-host-identity', { params });
|
||||
}
|
||||
54
orion-visor-ui/src/api/asset/command-snippet-group.ts
Normal file
54
orion-visor-ui/src/api/asset/command-snippet-group.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import type { CommandSnippetQueryResponse } from './command-snippet';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 命令片段分组创建请求
|
||||
*/
|
||||
export interface CommandSnippetGroupCreateRequest {
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 命令片段分组更新请求
|
||||
*/
|
||||
export interface CommandSnippetGroupUpdateRequest extends CommandSnippetGroupCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 命令片段分组查询响应
|
||||
*/
|
||||
export interface CommandSnippetGroupQueryResponse {
|
||||
id: number;
|
||||
name: string;
|
||||
items: Array<CommandSnippetQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建命令片段分组
|
||||
*/
|
||||
export function createCommandSnippetGroup(request: CommandSnippetGroupCreateRequest) {
|
||||
return axios.post('/asset/command-snippet-group/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新命令片段分组
|
||||
*/
|
||||
export function updateCommandSnippetGroup(request: CommandSnippetGroupUpdateRequest) {
|
||||
return axios.put('/asset/command-snippet-group/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部命令片段分组
|
||||
*/
|
||||
export function getCommandSnippetGroupList() {
|
||||
return axios.get<Array<CommandSnippetGroupQueryResponse>>('/asset/command-snippet-group/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除命令片段分组
|
||||
*/
|
||||
export function deleteCommandSnippetGroup(id: number) {
|
||||
return axios.delete('/asset/command-snippet-group/delete', { params: { id } });
|
||||
}
|
||||
|
||||
69
orion-visor-ui/src/api/asset/command-snippet.ts
Normal file
69
orion-visor-ui/src/api/asset/command-snippet.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import type { CommandSnippetGroupQueryResponse } from './command-snippet-group';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 命令片段创建请求
|
||||
*/
|
||||
export interface CommandSnippetCreateRequest {
|
||||
groupId?: number;
|
||||
name?: string;
|
||||
command?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 命令片段更新请求
|
||||
*/
|
||||
export interface CommandSnippetUpdateRequest extends CommandSnippetCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 命令片段查询响应
|
||||
*/
|
||||
export interface CommandSnippetQueryResponse extends CommandSnippetQueryResponseExtra {
|
||||
id: number;
|
||||
groupId: number;
|
||||
name: string;
|
||||
command: string;
|
||||
}
|
||||
|
||||
export interface CommandSnippetQueryResponseExtra {
|
||||
visible: boolean;
|
||||
expand?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 命令片段查询响应
|
||||
*/
|
||||
export interface CommandSnippetWrapperResponse {
|
||||
groups: Array<CommandSnippetGroupQueryResponse>;
|
||||
ungroupedItems: Array<CommandSnippetQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建命令片段
|
||||
*/
|
||||
export function createCommandSnippet(request: CommandSnippetCreateRequest) {
|
||||
return axios.post('/asset/command-snippet/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新命令片段
|
||||
*/
|
||||
export function updateCommandSnippet(request: CommandSnippetUpdateRequest) {
|
||||
return axios.put('/asset/command-snippet/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部命令片段
|
||||
*/
|
||||
export function getCommandSnippetList() {
|
||||
return axios.get<CommandSnippetWrapperResponse>('/asset/command-snippet/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除命令片段
|
||||
*/
|
||||
export function deleteCommandSnippet(id: number) {
|
||||
return axios.delete('/asset/command-snippet/delete', { params: { id } });
|
||||
}
|
||||
52
orion-visor-ui/src/api/asset/host-config.ts
Normal file
52
orion-visor-ui/src/api/asset/host-config.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 主机配置请求
|
||||
*/
|
||||
export interface HostConfigRequest {
|
||||
hostId?: number;
|
||||
type?: string;
|
||||
version?: number;
|
||||
status?: number;
|
||||
config?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机配置查询响应
|
||||
*/
|
||||
export interface HostConfigQueryResponse {
|
||||
id: number;
|
||||
hostId: number;
|
||||
type: string;
|
||||
version: number;
|
||||
status: number;
|
||||
config: Record<string, any>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机配置
|
||||
*/
|
||||
export function getHostConfig(params: HostConfigRequest) {
|
||||
return axios.get<HostConfigQueryResponse>('/asset/host-config/get', { params });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部主机配置
|
||||
*/
|
||||
export function getHostConfigList(hostId: number) {
|
||||
return axios.get<Array<HostConfigQueryResponse>>('/asset/host-config/list', { params: { hostId } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新主机配置
|
||||
*/
|
||||
export function updateHostConfig(request: HostConfigRequest) {
|
||||
return axios.put('/asset/host-config/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新主机配置状态
|
||||
*/
|
||||
export function updateHostConfigStatus(request: HostConfigRequest) {
|
||||
return axios.put('/asset/host-config/update-status', request);
|
||||
}
|
||||
106
orion-visor-ui/src/api/asset/host-connect-log.ts
Normal file
106
orion-visor-ui/src/api/asset/host-connect-log.ts
Normal file
@@ -0,0 +1,106 @@
|
||||
import type { 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 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/query-count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空主机连接日志
|
||||
*/
|
||||
export function clearHostConnectLog(request: HostConnectLogQueryRequest) {
|
||||
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);
|
||||
}
|
||||
48
orion-visor-ui/src/api/asset/host-extra.ts
Normal file
48
orion-visor-ui/src/api/asset/host-extra.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 主机别名修改请求
|
||||
*/
|
||||
export interface HostAliasUpdateRequest {
|
||||
id?: number;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机拓展信息查询请求
|
||||
*/
|
||||
export interface HostExtraQueryRequest {
|
||||
hostId?: number;
|
||||
item: string;
|
||||
items?: Array<string>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机拓展信息更新请求
|
||||
*/
|
||||
export interface HostExtraUpdateRequest {
|
||||
hostId?: number;
|
||||
item: string;
|
||||
extra: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主机拓展信息
|
||||
*/
|
||||
export function getHostExtraItem<T>(params: HostExtraQueryRequest) {
|
||||
return axios.get<T>('/asset/host-extra/get', { params });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取多个主机拓展信息
|
||||
*/
|
||||
export function getHostExtraItemList(request: HostExtraQueryRequest) {
|
||||
return axios.post<Record<string, Record<string, any>>>('/asset/host-extra/list', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改主机拓展信息
|
||||
*/
|
||||
export function updateHostExtra(request: HostExtraUpdateRequest) {
|
||||
return axios.put('/asset/host-extra/update', request);
|
||||
}
|
||||
93
orion-visor-ui/src/api/asset/host-group.ts
Normal file
93
orion-visor-ui/src/api/asset/host-group.ts
Normal file
@@ -0,0 +1,93 @@
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 主机分组创建请求
|
||||
*/
|
||||
export interface HostGroupCreateRequest {
|
||||
parentId?: number;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机分组重命名请求
|
||||
*/
|
||||
export interface HostGroupRenameRequest {
|
||||
id?: number;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机分组移动请求
|
||||
*/
|
||||
export interface HostGroupMoveRequest {
|
||||
id?: number;
|
||||
targetId?: number;
|
||||
position?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机分组查询响应
|
||||
*/
|
||||
export interface HostGroupQueryResponse {
|
||||
key: number;
|
||||
parentId: number;
|
||||
title: string;
|
||||
children: Array<HostGroupQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分组内主机修改请求
|
||||
*/
|
||||
export interface HostGroupRelUpdateRequest {
|
||||
groupId?: number;
|
||||
hostIdList?: Array<string>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建主机分组
|
||||
*/
|
||||
export function createHostGroup(request: HostGroupCreateRequest) {
|
||||
return axios.post<number>('/asset/host-group/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新主机分组名称
|
||||
*/
|
||||
export function updateHostGroupName(request: HostGroupRenameRequest) {
|
||||
return axios.put('/asset/host-group/rename', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 移动主机分组
|
||||
*/
|
||||
export function moveHostGroup(request: HostGroupMoveRequest) {
|
||||
return axios.put('/asset/host-group/move', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机分组树
|
||||
*/
|
||||
export function getHostGroupTree() {
|
||||
return axios.get<Array<HostGroupQueryResponse>>('/asset/host-group/tree');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除主机分组
|
||||
*/
|
||||
export function deleteHostGroup(id: number) {
|
||||
return axios.delete('/asset/host-group/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询分组内主机
|
||||
*/
|
||||
export function getHostGroupRelList(groupId: number) {
|
||||
return axios.get<Array<number>>('/asset/host-group/rel-list', { params: { groupId } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分组内主机
|
||||
*/
|
||||
export function updateHostGroupRel(request: HostGroupRelUpdateRequest) {
|
||||
return axios.put('/asset/host-group/update-rel', request);
|
||||
}
|
||||
93
orion-visor-ui/src/api/asset/host-identity.ts
Normal file
93
orion-visor-ui/src/api/asset/host-identity.ts
Normal file
@@ -0,0 +1,93 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 主机身份创建请求
|
||||
*/
|
||||
export interface HostIdentityCreateRequest {
|
||||
name?: string;
|
||||
type?: string;
|
||||
username?: string;
|
||||
password?: string;
|
||||
keyId?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机身份更新请求
|
||||
*/
|
||||
export interface HostIdentityUpdateRequest extends HostIdentityCreateRequest {
|
||||
id?: number;
|
||||
useNewPassword?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机身份查询请求
|
||||
*/
|
||||
export interface HostIdentityQueryRequest extends Pagination {
|
||||
searchValue?: string;
|
||||
id?: number;
|
||||
name?: string;
|
||||
type?: string;
|
||||
username?: string;
|
||||
keyId?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机身份查询响应
|
||||
*/
|
||||
export interface HostIdentityQueryResponse extends TableData {
|
||||
id: number;
|
||||
name: string;
|
||||
type: string;
|
||||
username: string;
|
||||
password: string;
|
||||
keyId: number;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
creator: string;
|
||||
updater: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建主机身份
|
||||
*/
|
||||
export function createHostIdentity(request: HostIdentityCreateRequest) {
|
||||
return axios.post('/asset/host-identity/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 更新主机身份
|
||||
*/
|
||||
export function updateHostIdentity(request: HostIdentityUpdateRequest) {
|
||||
return axios.put('/asset/host-identity/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 查询主机身份
|
||||
*/
|
||||
export function getHostIdentity(id: number) {
|
||||
return axios.get<HostIdentityQueryResponse>('/asset/host-identity/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机身份
|
||||
*/
|
||||
export function getHostIdentityList() {
|
||||
return axios.get<Array<HostIdentityQueryResponse>>('/asset/host-identity/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询主机身份
|
||||
*/
|
||||
export function getHostIdentityPage(request: HostIdentityQueryRequest) {
|
||||
return axios.post<DataGrid<HostIdentityQueryResponse>>('/asset/host-identity/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 删除主机身份
|
||||
*/
|
||||
export function deleteHostIdentity(id: number) {
|
||||
return axios.delete('/asset/host-identity/delete', { params: { id } });
|
||||
}
|
||||
|
||||
87
orion-visor-ui/src/api/asset/host-key.ts
Normal file
87
orion-visor-ui/src/api/asset/host-key.ts
Normal file
@@ -0,0 +1,87 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 主机秘钥创建请求
|
||||
*/
|
||||
export interface HostKeyCreateRequest {
|
||||
name?: string;
|
||||
publicKey?: string;
|
||||
privateKey?: string;
|
||||
password?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机秘钥更新请求
|
||||
*/
|
||||
export interface HostKeyUpdateRequest extends HostKeyCreateRequest {
|
||||
id?: number;
|
||||
useNewPassword?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机秘钥查询请求
|
||||
*/
|
||||
export interface HostKeyQueryRequest extends Pagination {
|
||||
searchValue?: string;
|
||||
id?: number;
|
||||
name?: string;
|
||||
publicKey?: string;
|
||||
privateKey?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机秘钥查询响应
|
||||
*/
|
||||
export interface HostKeyQueryResponse extends TableData {
|
||||
id: number;
|
||||
name: string;
|
||||
publicKey: string;
|
||||
privateKey: string;
|
||||
password: string;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建主机秘钥
|
||||
*/
|
||||
export function createHostKey(request: HostKeyCreateRequest) {
|
||||
return axios.post('/asset/host-key/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 更新主机秘钥
|
||||
*/
|
||||
export function updateHostKey(request: HostKeyUpdateRequest) {
|
||||
return axios.put('/asset/host-key/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 查询主机秘钥
|
||||
*/
|
||||
export function getHostKey(id: number) {
|
||||
return axios.get<HostKeyQueryResponse>('/asset/host-key/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机秘钥
|
||||
*/
|
||||
export function getHostKeyList() {
|
||||
return axios.get<Array<HostKeyQueryResponse>>('/asset/host-key/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询主机秘钥
|
||||
*/
|
||||
export function getHostKeyPage(request: HostKeyQueryRequest) {
|
||||
return axios.post<DataGrid<HostKeyQueryResponse>>('/asset/host-key/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 删除主机秘钥
|
||||
*/
|
||||
export function deleteHostKey(id: number) {
|
||||
return axios.delete('/asset/host-key/delete', { params: { id } });
|
||||
}
|
||||
62
orion-visor-ui/src/api/asset/host-sftp-log.ts
Normal file
62
orion-visor-ui/src/api/asset/host-sftp-log.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import type { 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';
|
||||
|
||||
/**
|
||||
* SFTP 操作日志 查询请求
|
||||
*/
|
||||
export interface HostSftpLogQueryRequest extends Pagination {
|
||||
userId?: number;
|
||||
hostId?: number;
|
||||
type?: string;
|
||||
result?: number;
|
||||
startTimeRange?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* SFTP 操作日志 查询响应
|
||||
*/
|
||||
export interface HostSftpLogQueryResponse extends TableData {
|
||||
id: number;
|
||||
userId: number;
|
||||
username: number;
|
||||
hostId: number;
|
||||
hostName: string;
|
||||
hostAddress: string;
|
||||
address: string;
|
||||
location: string;
|
||||
userAgent: string;
|
||||
paths: string[];
|
||||
type: string;
|
||||
result: string;
|
||||
startTime: number;
|
||||
extra: HostSftpLogExtra;
|
||||
}
|
||||
|
||||
/**
|
||||
* SFTP 操作日志 拓展对象
|
||||
*/
|
||||
export interface HostSftpLogExtra {
|
||||
mod: number;
|
||||
target: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询 SFTP 操作日志
|
||||
*/
|
||||
export function getHostSftpLogPage(request: HostSftpLogQueryRequest) {
|
||||
return axios.post<DataGrid<HostSftpLogQueryResponse>>('/asset/host-sftp-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除 SFTP 操作日志
|
||||
*/
|
||||
export function deleteHostSftpLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/host-sftp-log/delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
66
orion-visor-ui/src/api/asset/host-terminal.ts
Normal file
66
orion-visor-ui/src/api/asset/host-terminal.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
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/host-terminal/themes');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主机终端 accessToken
|
||||
*/
|
||||
export function getTerminalAccessToken() {
|
||||
return axios.get<string>('/asset/host-terminal/access');
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开主机终端 websocket
|
||||
*/
|
||||
export const openHostTerminalChannel = (accessToken: string) => {
|
||||
return createAppWebSocket(`/host/terminal/${accessToken}`);
|
||||
};
|
||||
|
||||
/**
|
||||
* 打开主机传输 websocket
|
||||
*/
|
||||
export const openHostTransferChannel = (accessToken: string) => {
|
||||
return createAppWebSocket(`/host/transfer/${accessToken}`);
|
||||
};
|
||||
104
orion-visor-ui/src/api/asset/host.ts
Normal file
104
orion-visor-ui/src/api/asset/host.ts
Normal file
@@ -0,0 +1,104 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 主机创建请求
|
||||
*/
|
||||
export interface HostCreateRequest {
|
||||
name?: string;
|
||||
code?: string;
|
||||
address?: string;
|
||||
tags?: Array<number>;
|
||||
groupIdList?: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机更新请求
|
||||
*/
|
||||
export interface HostUpdateRequest extends HostCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机查询请求
|
||||
*/
|
||||
export interface HostQueryRequest extends Pagination {
|
||||
searchValue?: string;
|
||||
id?: number;
|
||||
name?: string;
|
||||
code?: string;
|
||||
address?: string;
|
||||
tags?: Array<number>;
|
||||
queryTag?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机查询响应
|
||||
*/
|
||||
export interface HostQueryResponse extends TableData, HostQueryResponseExtra {
|
||||
id: number;
|
||||
name: string;
|
||||
code: string;
|
||||
address: string;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
creator: string;
|
||||
updater: string;
|
||||
favorite: boolean;
|
||||
alias: string;
|
||||
color: string;
|
||||
tags: Array<{ id: number, name: string }>;
|
||||
groupIdList: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机操作拓展
|
||||
*/
|
||||
export interface HostQueryResponseExtra {
|
||||
editable: boolean;
|
||||
loading: boolean;
|
||||
modCount: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建主机
|
||||
*/
|
||||
export function createHost(request: HostCreateRequest) {
|
||||
return axios.post('/asset/host/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 更新主机
|
||||
*/
|
||||
export function updateHost(request: HostUpdateRequest) {
|
||||
return axios.put('/asset/host/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 查询主机
|
||||
*/
|
||||
export function getHost(id: number) {
|
||||
return axios.get<HostQueryResponse>('/asset/host/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部主机
|
||||
*/
|
||||
export function getHostList() {
|
||||
return axios.get<Array<HostQueryResponse>>('/asset/host/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询主机
|
||||
*/
|
||||
export function getHostPage(request: HostQueryRequest) {
|
||||
return axios.post<DataGrid<HostQueryResponse>>('/asset/host/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 删除主机
|
||||
*/
|
||||
export function deleteHost(id: number) {
|
||||
return axios.delete('/asset/host/delete', { params: { id } });
|
||||
}
|
||||
54
orion-visor-ui/src/api/asset/path-bookmark-group.ts
Normal file
54
orion-visor-ui/src/api/asset/path-bookmark-group.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import type { PathBookmarkQueryResponse } from './path-bookmark';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 路径书签分组创建请求
|
||||
*/
|
||||
export interface PathBookmarkGroupCreateRequest {
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 路径书签分组更新请求
|
||||
*/
|
||||
export interface PathBookmarkGroupUpdateRequest extends PathBookmarkGroupCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 路径书签分组查询响应
|
||||
*/
|
||||
export interface PathBookmarkGroupQueryResponse {
|
||||
id: number;
|
||||
name: string;
|
||||
items: Array<PathBookmarkQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建路径书签分组
|
||||
*/
|
||||
export function createPathBookmarkGroup(request: PathBookmarkGroupCreateRequest) {
|
||||
return axios.post('/asset/path-bookmark-group/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新路径书签分组
|
||||
*/
|
||||
export function updatePathBookmarkGroup(request: PathBookmarkGroupUpdateRequest) {
|
||||
return axios.put('/asset/path-bookmark-group/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部路径书签分组
|
||||
*/
|
||||
export function getPathBookmarkGroupList() {
|
||||
return axios.get<Array<PathBookmarkGroupQueryResponse>>('/asset/path-bookmark-group/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除路径书签分组
|
||||
*/
|
||||
export function deletePathBookmarkGroup(id: number) {
|
||||
return axios.delete('/asset/path-bookmark-group/delete', { params: { id } });
|
||||
}
|
||||
|
||||
71
orion-visor-ui/src/api/asset/path-bookmark.ts
Normal file
71
orion-visor-ui/src/api/asset/path-bookmark.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import { PathBookmarkGroupQueryResponse } from '@/api/asset/path-bookmark-group';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 路径标签创建请求
|
||||
*/
|
||||
export interface PathBookmarkCreateRequest {
|
||||
groupId?: number;
|
||||
name?: string;
|
||||
type?: string;
|
||||
path?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 路径标签更新请求
|
||||
*/
|
||||
export interface PathBookmarkUpdateRequest extends PathBookmarkCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 路径标签查询响应
|
||||
*/
|
||||
export interface PathBookmarkQueryResponse extends PathBookmarkQueryResponseExtra {
|
||||
id: number;
|
||||
groupId: number;
|
||||
name: string;
|
||||
type: string;
|
||||
path: string;
|
||||
}
|
||||
|
||||
export interface PathBookmarkQueryResponseExtra {
|
||||
visible: boolean;
|
||||
expand?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 路径标签查询响应
|
||||
*/
|
||||
export interface PathBookmarkWrapperResponse {
|
||||
groups: Array<PathBookmarkGroupQueryResponse>;
|
||||
ungroupedItems: Array<PathBookmarkQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建路径标签
|
||||
*/
|
||||
export function createPathBookmark(request: PathBookmarkCreateRequest) {
|
||||
return axios.post('/asset/path-bookmark/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新路径标签
|
||||
*/
|
||||
export function updatePathBookmark(request: PathBookmarkUpdateRequest) {
|
||||
return axios.put('/asset/path-bookmark/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询路径标签
|
||||
*/
|
||||
export function getPathBookmarkList() {
|
||||
return axios.get<PathBookmarkWrapperResponse>('/asset/path-bookmark/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除路径标签
|
||||
*/
|
||||
export function deletePathBookmark(id: number) {
|
||||
return axios.delete('/asset/path-bookmark/delete', { params: { id } });
|
||||
}
|
||||
22
orion-visor-ui/src/api/dashboard.ts
Normal file
22
orion-visor-ui/src/api/dashboard.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
|
||||
export interface ContentDataRecord {
|
||||
x: string;
|
||||
y: number;
|
||||
}
|
||||
|
||||
export function queryContentData() {
|
||||
return axios.get<ContentDataRecord[]>('/api/content-data');
|
||||
}
|
||||
|
||||
export interface PopularRecord {
|
||||
key: number;
|
||||
clickNumber: string;
|
||||
title: string;
|
||||
increases: number;
|
||||
}
|
||||
|
||||
export function queryPopularList(params: { type: string }) {
|
||||
return axios.get<TableData[]>('/api/popular/list', { params });
|
||||
}
|
||||
119
orion-visor-ui/src/api/exec/exec-command-log.ts
Normal file
119
orion-visor-ui/src/api/exec/exec-command-log.ts
Normal file
@@ -0,0 +1,119 @@
|
||||
import type { DataGrid } from '@/types/global';
|
||||
import type {
|
||||
ExecHostLogQueryResponse,
|
||||
ExecLogInterruptRequest,
|
||||
ExecLogQueryRequest,
|
||||
ExecLogQueryResponse,
|
||||
ExecLogStatusResponse,
|
||||
ExecLogTailRequest
|
||||
} from './exec-log';
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
/**
|
||||
* 分页查询批量执行日志
|
||||
*/
|
||||
export function getExecCommandLogPage(request: ExecLogQueryRequest) {
|
||||
return axios.post<DataGrid<ExecLogQueryResponse>>('/asset/exec-command-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询批量执行日志
|
||||
*/
|
||||
export function getExecCommandLog(id: number) {
|
||||
return axios.get<ExecLogQueryResponse>('/asset/exec-command-log/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机批量执行日志
|
||||
*/
|
||||
export function getExecCommandHostLogList(logId: number) {
|
||||
return axios.get<Array<ExecHostLogQueryResponse>>('/asset/exec-command-log/host-list', { params: { logId } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询命令执行状态
|
||||
*/
|
||||
export function getExecCommandLogStatus(idList: Array<number>) {
|
||||
return axios.get<ExecLogStatusResponse>('/asset/exec-command-log/status', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询历史批量执行日志
|
||||
*/
|
||||
export function getExecCommandLogHistory(limit: number) {
|
||||
return axios.get<Array<ExecLogQueryResponse>>('/asset/exec-command-log/history', { params: { page: 1, limit } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除批量执行日志
|
||||
*/
|
||||
export function deleteExecCommandLog(id: number) {
|
||||
return axios.delete('/asset/exec-command-log/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除批量执行日志
|
||||
*/
|
||||
export function batchDeleteExecCommandLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/exec-command-log/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除主机批量执行日志
|
||||
*/
|
||||
export function deleteExecCommandHostLog(id: number) {
|
||||
return axios.delete('/asset/exec-command-log/delete-host', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询批量执行日志数量
|
||||
*/
|
||||
export function getExecCommandLogCount(request: ExecLogQueryRequest) {
|
||||
return axios.post<number>('/asset/exec-command-log/query-count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空批量执行日志
|
||||
*/
|
||||
export function clearExecCommandLog(request: ExecLogQueryRequest) {
|
||||
return axios.post<number>('/asset/exec-command-log/clear', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看批量执行日志
|
||||
*/
|
||||
export function getExecCommandLogTailToken(request: ExecLogTailRequest) {
|
||||
return axios.post<string>('/asset/exec-command-log/tail', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载批量执行日志文件
|
||||
*/
|
||||
export function downloadExecCommandLogFile(id: number) {
|
||||
return axios.get('/asset/exec-command-log/download', { unwrap: true, params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 中断执行命令
|
||||
*/
|
||||
export function interruptExecCommand(request: ExecLogInterruptRequest) {
|
||||
return axios.put('/asset/exec-command-log/interrupt', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 中断执行主机命令
|
||||
*/
|
||||
export function interruptHostExecCommand(request: ExecLogInterruptRequest) {
|
||||
return axios.put('/asset/exec-command-log/interrupt-host', request);
|
||||
}
|
||||
29
orion-visor-ui/src/api/exec/exec-command.ts
Normal file
29
orion-visor-ui/src/api/exec/exec-command.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import type { ExecLogQueryResponse } from './exec-log';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 执行命令请求
|
||||
*/
|
||||
export interface ExecCommandRequest {
|
||||
logId?: number;
|
||||
description?: string;
|
||||
timeout?: number;
|
||||
scriptExec?: number;
|
||||
command?: string;
|
||||
parameterSchema?: string;
|
||||
hostIdList?: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量执行命令
|
||||
*/
|
||||
export function batchExecCommand(request: ExecCommandRequest) {
|
||||
return axios.post<ExecLogQueryResponse>('/asset/exec-command/exec', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新执行命令
|
||||
*/
|
||||
export function reExecCommand(request: ExecCommandRequest) {
|
||||
return axios.post<ExecLogQueryResponse>('/asset/exec-command/re-exec', request);
|
||||
}
|
||||
92
orion-visor-ui/src/api/exec/exec-log.ts
Normal file
92
orion-visor-ui/src/api/exec/exec-log.ts
Normal file
@@ -0,0 +1,92 @@
|
||||
import type { Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import { createAppWebSocket } from '@/utils/http';
|
||||
|
||||
/**
|
||||
* 执行日志查询请求
|
||||
*/
|
||||
export interface ExecLogQueryRequest extends Pagination {
|
||||
id?: number;
|
||||
userId?: number;
|
||||
sourceId?: number;
|
||||
description?: string;
|
||||
command?: string;
|
||||
status?: string;
|
||||
startTimeRange?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行日志查询响应
|
||||
*/
|
||||
export interface ExecLogQueryResponse extends TableData, ExecLogQueryExtraResponse {
|
||||
id: number;
|
||||
userId: number;
|
||||
username: string;
|
||||
description: string;
|
||||
execSeq: number;
|
||||
command: string;
|
||||
parameterSchema: string;
|
||||
timeout: number;
|
||||
scriptExec?: number;
|
||||
status: string;
|
||||
startTime: number;
|
||||
finishTime: number;
|
||||
hostIdList: Array<number>;
|
||||
hosts: Array<ExecHostLogQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行日志查询响应 拓展
|
||||
*/
|
||||
export interface ExecLogQueryExtraResponse {
|
||||
hosts: Array<ExecHostLogQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主机执行日志查询响应
|
||||
*/
|
||||
export interface ExecHostLogQueryResponse extends TableData {
|
||||
id: number;
|
||||
logId: number;
|
||||
hostId: number;
|
||||
hostName: string;
|
||||
hostAddress: string;
|
||||
status: string;
|
||||
command: string;
|
||||
parameter: string;
|
||||
exitCode: number;
|
||||
errorMessage: string;
|
||||
startTime: number;
|
||||
finishTime: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行状态查询响应
|
||||
*/
|
||||
export interface ExecLogStatusResponse {
|
||||
logList: Array<ExecLogQueryResponse>;
|
||||
hostList: Array<ExecHostLogQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行日志 tail 请求
|
||||
*/
|
||||
export interface ExecLogTailRequest {
|
||||
execId?: number;
|
||||
hostExecIdList?: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行中断命令请求
|
||||
*/
|
||||
export interface ExecLogInterruptRequest {
|
||||
logId?: number;
|
||||
hostLogId?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开执行日志 websocket
|
||||
*/
|
||||
export const openExecLogChannel = (token: string) => {
|
||||
return createAppWebSocket(`/exec/log/${token}`);
|
||||
};
|
||||
90
orion-visor-ui/src/api/exec/exec-template.ts
Normal file
90
orion-visor-ui/src/api/exec/exec-template.ts
Normal file
@@ -0,0 +1,90 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 执行模板创建请求
|
||||
*/
|
||||
export interface ExecTemplateCreateRequest {
|
||||
name?: string;
|
||||
command?: string;
|
||||
timeout?: number;
|
||||
scriptExec?: number;
|
||||
parameterSchema?: string;
|
||||
hostIdList?: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行模板更新请求
|
||||
*/
|
||||
export interface ExecTemplateUpdateRequest extends ExecTemplateCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行模板查询请求
|
||||
*/
|
||||
export interface ExecTemplateQueryRequest extends Pagination {
|
||||
id?: number;
|
||||
name?: string;
|
||||
command?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行模板查询响应
|
||||
*/
|
||||
export interface ExecTemplateQueryResponse extends TableData {
|
||||
id: number;
|
||||
name: string;
|
||||
command: string;
|
||||
timeout: number;
|
||||
scriptExec?: number;
|
||||
parameterSchema: string;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
creator: string;
|
||||
updater: string;
|
||||
hostIdList?: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建执行模板
|
||||
*/
|
||||
export function createExecTemplate(request: ExecTemplateCreateRequest) {
|
||||
return axios.post('/asset/exec-template/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新执行模板
|
||||
*/
|
||||
export function updateExecTemplate(request: ExecTemplateUpdateRequest) {
|
||||
return axios.put('/asset/exec-template/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询执行模板
|
||||
*/
|
||||
export function getExecTemplate(id: number) {
|
||||
return axios.get<ExecTemplateQueryResponse>('/asset/exec-template/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询执行模板
|
||||
*/
|
||||
export function getExecTemplateWithAuthorized(id: number) {
|
||||
return axios.get<ExecTemplateQueryResponse>('/asset/exec-template/get-with-authorized', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询执行模板
|
||||
*/
|
||||
export function getExecTemplatePage(request: ExecTemplateQueryRequest) {
|
||||
return axios.post<DataGrid<ExecTemplateQueryResponse>>('/asset/exec-template/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除执行模板
|
||||
*/
|
||||
export function deleteExecTemplate(id: number) {
|
||||
return axios.delete('/asset/exec-template/delete', { params: { id } });
|
||||
}
|
||||
180
orion-visor-ui/src/api/exec/upload-task.ts
Normal file
180
orion-visor-ui/src/api/exec/upload-task.ts
Normal file
@@ -0,0 +1,180 @@
|
||||
import type { 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 UploadTaskCreateRequest {
|
||||
remotePath?: string;
|
||||
description?: string;
|
||||
hostIdList?: Array<number>;
|
||||
files?: Array<UploadTaskFileCreateRequest>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传任务文件创建请求
|
||||
*/
|
||||
export interface UploadTaskFileCreateRequest {
|
||||
fileId?: string;
|
||||
filePath?: string;
|
||||
fileSize?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传任务创建响应
|
||||
*/
|
||||
export interface UploadTaskCreateResponse {
|
||||
id: number;
|
||||
token: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传任务查询请求
|
||||
*/
|
||||
export interface UploadTaskQueryRequest extends Pagination {
|
||||
id?: number;
|
||||
userId?: number;
|
||||
remotePath?: string;
|
||||
description?: string;
|
||||
status?: string;
|
||||
createTimeRange?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传任务查询响应
|
||||
*/
|
||||
export interface UploadTaskQueryResponse extends TableData {
|
||||
id: number;
|
||||
userId: number;
|
||||
username: string;
|
||||
remotePath: string;
|
||||
description: string;
|
||||
status: string;
|
||||
extraInfo: string;
|
||||
fileCount: number;
|
||||
hostCount: number;
|
||||
startTime: number;
|
||||
endTime: number;
|
||||
createTime: number;
|
||||
hosts: Array<UploadTaskHost>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传任务主机响应
|
||||
*/
|
||||
export interface UploadTaskHost {
|
||||
id: number;
|
||||
code: string;
|
||||
name: string;
|
||||
address: string;
|
||||
files: Array<UploadTaskFile>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传任务文件响应
|
||||
*/
|
||||
export interface UploadTaskFile {
|
||||
id: number;
|
||||
taskId: number;
|
||||
hostId: number;
|
||||
fileId: string;
|
||||
filePath: string;
|
||||
fileSize: number;
|
||||
status: string;
|
||||
startTime: number;
|
||||
endTime: number;
|
||||
current: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传任务状态响应
|
||||
*/
|
||||
export interface UploadTaskStatusResponse extends TableData {
|
||||
id: number;
|
||||
status: string;
|
||||
startTime: number;
|
||||
endTime: number;
|
||||
files: Array<UploadTaskFile>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建上传任务
|
||||
*/
|
||||
export function createUploadTask(request: UploadTaskCreateRequest) {
|
||||
return axios.post<UploadTaskCreateResponse>('/asset/upload-task/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建上传任务
|
||||
*/
|
||||
export function startUploadTask(id: number) {
|
||||
return axios.post('/asset/upload-task/start', { id });
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建上传任务
|
||||
*/
|
||||
export function cancelUploadTask(id: number, failed: boolean) {
|
||||
return axios.post('/asset/upload-task/cancel', { id, failed });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询上传任务
|
||||
*/
|
||||
export function getUploadTask(id: number) {
|
||||
return axios.get<UploadTaskQueryResponse>('/asset/upload-task/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询上传任务
|
||||
*/
|
||||
export function getUploadTaskPage(request: UploadTaskQueryRequest) {
|
||||
return axios.post<DataGrid<UploadTaskQueryResponse>>('/asset/upload-task/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询上传任务状态
|
||||
*/
|
||||
export function getUploadTaskStatus(idList: Array<number>, queryFiles: boolean) {
|
||||
return axios.get<Array<UploadTaskStatusResponse>>('/asset/upload-task/status', {
|
||||
params: { idList, queryFiles },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除上传任务
|
||||
*/
|
||||
export function deleteUploadTask(id: number) {
|
||||
return axios.delete('/asset/upload-task/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除上传任务
|
||||
*/
|
||||
export function batchDeleteUploadTask(idList: Array<number>) {
|
||||
return axios.delete('/asset/upload-task/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机连接日志数量
|
||||
*/
|
||||
export function getUploadTaskCount(request: UploadTaskQueryRequest) {
|
||||
return axios.post<number>('/asset/upload-task/query-count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空主机连接日志
|
||||
*/
|
||||
export function clearUploadTask(request: UploadTaskQueryRequest) {
|
||||
return axios.post<number>('/asset/upload-task/clear', request);
|
||||
}
|
||||
85
orion-visor-ui/src/api/interceptor.ts
Normal file
85
orion-visor-ui/src/api/interceptor.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import type { AxiosRequestConfig, AxiosResponse } from 'axios';
|
||||
import axios from 'axios';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import { useUserStore } from '@/store';
|
||||
import { getToken } from '@/utils/auth';
|
||||
import { httpBaseUrl } from '@/utils/env';
|
||||
import { reLoginTipsKey } from '@/types/symbol';
|
||||
|
||||
export interface HttpResponse<T = unknown> {
|
||||
msg: string;
|
||||
code: number;
|
||||
data: T;
|
||||
}
|
||||
|
||||
axios.defaults.timeout = 10000;
|
||||
axios.defaults.promptBizErrorMessage = true;
|
||||
axios.defaults.baseURL = httpBaseUrl;
|
||||
|
||||
axios.interceptors.request.use(
|
||||
(config: AxiosRequestConfig) => {
|
||||
// 获取 token
|
||||
const token = getToken();
|
||||
if (token) {
|
||||
if (!config.headers) {
|
||||
config.headers = {};
|
||||
}
|
||||
config.headers.Authorization = `Bearer ${token}`;
|
||||
}
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
axios.interceptors.response.use(
|
||||
(response: AxiosResponse<HttpResponse>) => {
|
||||
// 不转换
|
||||
if (response.config.unwrap) {
|
||||
return response;
|
||||
}
|
||||
const res = response.data;
|
||||
const { code } = res;
|
||||
// 200 成功
|
||||
if (code === 200) {
|
||||
return res;
|
||||
}
|
||||
// 异常判断
|
||||
if ([401, 700, 701, 702].includes(code)) {
|
||||
// 提示
|
||||
Message.error({
|
||||
content: res.msg || 'Error',
|
||||
duration: 5 * 1000,
|
||||
});
|
||||
// 认证异常
|
||||
setTimeout(async () => {
|
||||
// 先判断是否有提示 防止调用多个接口 把主要信息覆盖
|
||||
if (!window.sessionStorage.getItem(reLoginTipsKey)) {
|
||||
// 设置错误信息 在登录页面重新提示 因为重新页面加载会刷掉提示
|
||||
window.sessionStorage.setItem(reLoginTipsKey, res.msg);
|
||||
}
|
||||
// 登出
|
||||
await useUserStore().logout();
|
||||
// 重新加载自动跳转登录页面
|
||||
window.location.reload();
|
||||
});
|
||||
} else {
|
||||
// 其他异常 判断是否弹出错误信息
|
||||
if (response.config.promptBizErrorMessage) {
|
||||
Message.error({
|
||||
content: res.msg || 'Error',
|
||||
duration: 5 * 1000,
|
||||
});
|
||||
}
|
||||
}
|
||||
return Promise.reject(new Error(res.msg || 'Error'));
|
||||
},
|
||||
(error) => {
|
||||
Message.error({
|
||||
content: error.msg || '请求失败',
|
||||
duration: 5 * 1000,
|
||||
});
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
112
orion-visor-ui/src/api/job/exec-job-log.ts
Normal file
112
orion-visor-ui/src/api/job/exec-job-log.ts
Normal file
@@ -0,0 +1,112 @@
|
||||
import type { DataGrid } from '@/types/global';
|
||||
import type {
|
||||
ExecHostLogQueryResponse,
|
||||
ExecLogQueryRequest,
|
||||
ExecLogQueryResponse,
|
||||
ExecLogStatusResponse,
|
||||
ExecLogTailRequest,
|
||||
ExecLogInterruptRequest
|
||||
} from '../exec/exec-log';
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
/**
|
||||
* 分页查询计划任务日志
|
||||
*/
|
||||
export function getExecJobLogPage(request: ExecLogQueryRequest) {
|
||||
return axios.post<DataGrid<ExecLogQueryResponse>>('/asset/exec-job-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询计划任务日志
|
||||
*/
|
||||
export function getExecJobLog(id: number) {
|
||||
return axios.get<ExecLogQueryResponse>('/asset/exec-job-log/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主机计划任务日志
|
||||
*/
|
||||
export function getExecJobHostLogList(logId: number) {
|
||||
return axios.get<Array<ExecHostLogQueryResponse>>('/asset/exec-job-log/host-list', { params: { logId } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询命令执行状态
|
||||
*/
|
||||
export function getExecJobLogStatus(idList: Array<number>) {
|
||||
return axios.get<ExecLogStatusResponse>('/asset/exec-job-log/status', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除计划任务日志
|
||||
*/
|
||||
export function deleteExecJobLog(id: number) {
|
||||
return axios.delete('/asset/exec-job-log/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除计划任务日志
|
||||
*/
|
||||
export function batchDeleteExecJobLog(idList: Array<number>) {
|
||||
return axios.delete('/asset/exec-job-log/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除主机计划任务日志
|
||||
*/
|
||||
export function deleteExecJobHostLog(id: number) {
|
||||
return axios.delete('/asset/exec-job-log/delete-host', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询计划任务日志数量
|
||||
*/
|
||||
export function getExecJobLogCount(request: ExecLogQueryRequest) {
|
||||
return axios.post<number>('/asset/exec-job-log/query-count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空计划任务日志
|
||||
*/
|
||||
export function clearExecJobLog(request: ExecLogQueryRequest) {
|
||||
return axios.post<number>('/asset/exec-job-log/clear', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看计划任务日志
|
||||
*/
|
||||
export function getExecJobLogTailToken(request: ExecLogTailRequest) {
|
||||
return axios.post<string>('/asset/exec-job-log/tail', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载计划任务日志文件
|
||||
*/
|
||||
export function downloadExecJobLogFile(id: number) {
|
||||
return axios.get('/asset/exec-job-log/download', { unwrap: true, params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 中断计划任务执行
|
||||
*/
|
||||
export function interruptExecJob(request: ExecLogInterruptRequest) {
|
||||
return axios.put('/asset/exec-job-log/interrupt', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 中断计划任务执行主机
|
||||
*/
|
||||
export function interruptHostExecJob(request: ExecLogInterruptRequest) {
|
||||
return axios.put('/asset/exec-job-log/interrupt-host', request);
|
||||
}
|
||||
120
orion-visor-ui/src/api/job/exec-job.ts
Normal file
120
orion-visor-ui/src/api/job/exec-job.ts
Normal file
@@ -0,0 +1,120 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import type { HostQueryResponse } from '@/api/asset/host';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 计划任务创建请求
|
||||
*/
|
||||
export interface ExecJobCreateRequest {
|
||||
name?: string;
|
||||
expression?: string;
|
||||
timeout?: number;
|
||||
scriptExec?: number;
|
||||
command?: string;
|
||||
parameterSchema?: string;
|
||||
hostIdList?: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计划任务更新请求
|
||||
*/
|
||||
export interface ExecJobUpdateRequest extends ExecJobCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计划任务状态更新请求
|
||||
*/
|
||||
export interface ExecJobUpdateStatusRequest {
|
||||
id: number;
|
||||
status: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计划任务查询请求
|
||||
*/
|
||||
export interface ExecJobQueryRequest extends Pagination {
|
||||
id?: number;
|
||||
name?: string;
|
||||
command?: string;
|
||||
status?: number;
|
||||
queryRecentLog?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计划任务查询响应
|
||||
*/
|
||||
export interface ExecJobQueryResponse extends TableData {
|
||||
id: number;
|
||||
name: string;
|
||||
expression: string;
|
||||
timeout: number;
|
||||
scriptExec?: number;
|
||||
command: string;
|
||||
parameterSchema: string;
|
||||
status: number;
|
||||
recentLogId: number;
|
||||
recentLogStatus: string;
|
||||
recentLogTime: number;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
hostIdList: Array<number>;
|
||||
hostList: Array<HostQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建计划任务
|
||||
*/
|
||||
export function createExecJob(request: ExecJobCreateRequest) {
|
||||
return axios.post('/asset/exec-job/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新计划任务
|
||||
*/
|
||||
export function updateExecJob(request: ExecJobUpdateRequest) {
|
||||
return axios.put('/asset/exec-job/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新计划任务状态
|
||||
*/
|
||||
export function updateExecJobStatus(request: ExecJobUpdateStatusRequest) {
|
||||
return axios.put('/asset/exec-job/update-status', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询计划任务
|
||||
*/
|
||||
export function getExecJob(id: number) {
|
||||
return axios.get<ExecJobQueryResponse>('/asset/exec-job/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部计划任务
|
||||
*/
|
||||
export function getExecJobList() {
|
||||
return axios.get<Array<ExecJobQueryResponse>>('/asset/exec-job/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询计划任务
|
||||
*/
|
||||
export function getExecJobPage(request: ExecJobQueryRequest) {
|
||||
return axios.post<DataGrid<ExecJobQueryResponse>>('/asset/exec-job/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除计划任务
|
||||
*/
|
||||
export function deleteExecJob(id: number) {
|
||||
return axios.delete('/asset/exec-job/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 手动触发计划任务
|
||||
*/
|
||||
export function triggerExecJob(id: number) {
|
||||
return axios.post('/asset/exec-job/trigger', { id });
|
||||
}
|
||||
24
orion-visor-ui/src/api/meta/expression.ts
Normal file
24
orion-visor-ui/src/api/meta/expression.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* cron 下次执行时间请求对象
|
||||
*/
|
||||
export interface CronNextRequest {
|
||||
expression: number;
|
||||
times: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* cron 下次执行时间响应对象
|
||||
*/
|
||||
export interface CronNextResponse {
|
||||
valid: boolean;
|
||||
next: Array<string>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 cron 下次执行时间
|
||||
*/
|
||||
export function getCronNextTime(request: CronNextRequest) {
|
||||
return axios.get<CronNextResponse>('/infra/expression/cron-next', { params: request });
|
||||
}
|
||||
25
orion-visor-ui/src/api/meta/favorite.ts
Normal file
25
orion-visor-ui/src/api/meta/favorite.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import axios from 'axios';
|
||||
|
||||
export type FavoriteType = 'HOST'
|
||||
|
||||
/**
|
||||
* 收藏操作对象
|
||||
*/
|
||||
export interface FavoriteOperatorRequest {
|
||||
relId: number;
|
||||
type: FavoriteType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加收藏
|
||||
*/
|
||||
export function addFavorite(request: FavoriteOperatorRequest) {
|
||||
return axios.put('/infra/favorite/add', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消收藏
|
||||
*/
|
||||
export function cancelFavorite(request: FavoriteOperatorRequest) {
|
||||
return axios.put('/infra/favorite/cancel', request);
|
||||
}
|
||||
30
orion-visor-ui/src/api/meta/history-value.ts
Normal file
30
orion-visor-ui/src/api/meta/history-value.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 历史归档查询请求
|
||||
*/
|
||||
export interface HistoryValueQueryRequest extends Pagination {
|
||||
searchValue?: string;
|
||||
relId?: number;
|
||||
type?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 历史归档查询响应
|
||||
*/
|
||||
export interface HistoryValueQueryResponse extends TableData {
|
||||
id: number;
|
||||
beforeValue: string;
|
||||
afterValue: string;
|
||||
createTime: number;
|
||||
creator: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询历史归档
|
||||
*/
|
||||
export function getHistoryValuePage(request: HistoryValueQueryRequest) {
|
||||
return axios.post<DataGrid<HistoryValueQueryResponse>>('/infra/history-value/query', request);
|
||||
}
|
||||
33
orion-visor-ui/src/api/meta/tag.ts
Normal file
33
orion-visor-ui/src/api/meta/tag.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import axios from 'axios';
|
||||
|
||||
export type TagType = 'HOST' | string
|
||||
|
||||
/**
|
||||
* tag 创建对象
|
||||
*/
|
||||
export interface TagCreateRequest {
|
||||
name: number;
|
||||
type: TagType;
|
||||
}
|
||||
|
||||
/**
|
||||
* tag 响应对象
|
||||
*/
|
||||
export interface TagQueryResponse {
|
||||
id: number;
|
||||
name: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建标签
|
||||
*/
|
||||
export function createTag(request: TagCreateRequest) {
|
||||
return axios.post('/infra/tag/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询标签
|
||||
*/
|
||||
export function getTagList(type: TagType) {
|
||||
return axios.get<Array<TagQueryResponse>>('/infra/tag/list', { params: { type } });
|
||||
}
|
||||
96
orion-visor-ui/src/api/system/dict-key.ts
Normal file
96
orion-visor-ui/src/api/system/dict-key.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
import type { 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 DictKeyCreateRequest {
|
||||
keyName?: string;
|
||||
valueType?: string;
|
||||
extraSchema?: string;
|
||||
description?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典配置项更新请求
|
||||
*/
|
||||
export interface DictKeyUpdateRequest extends DictKeyCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典配置项查询请求
|
||||
*/
|
||||
export interface DictKeyQueryRequest extends Pagination {
|
||||
searchValue?: string;
|
||||
id?: number;
|
||||
keyName?: string;
|
||||
description?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典配置项查询响应
|
||||
*/
|
||||
export interface DictKeyQueryResponse extends TableData {
|
||||
id: number;
|
||||
keyName: string;
|
||||
valueType: string;
|
||||
extraSchema: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建字典配置项
|
||||
*/
|
||||
export function createDictKey(request: DictKeyCreateRequest) {
|
||||
return axios.post('/infra/dict-key/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新字典配置项
|
||||
*/
|
||||
export function updateDictKey(request: DictKeyUpdateRequest) {
|
||||
return axios.put('/infra/dict-key/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部字典配置项
|
||||
*/
|
||||
export function getDictKeyList() {
|
||||
return axios.post<Array<DictKeyQueryResponse>>('/infra/dict-key/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询字典配置项
|
||||
*/
|
||||
export function getDictKeyPage(request: DictKeyQueryRequest) {
|
||||
return axios.post<DataGrid<DictKeyQueryResponse>>('/infra/dict-key/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新字典缓存
|
||||
*/
|
||||
export function refreshCache() {
|
||||
return axios.put('/infra/dict-key/refresh-cache');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除字典配置项
|
||||
*/
|
||||
export function deleteDictKey(id: number) {
|
||||
return axios.delete('/infra/dict-key/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除字典配置项
|
||||
*/
|
||||
export function batchDeleteDictKey(idList: Array<number>) {
|
||||
return axios.delete('/infra/dict-key/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
125
orion-visor-ui/src/api/system/dict-value.ts
Normal file
125
orion-visor-ui/src/api/system/dict-value.ts
Normal file
@@ -0,0 +1,125 @@
|
||||
import type { DataGrid, Options, 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 DictValueCreateRequest {
|
||||
keyId?: number;
|
||||
name?: string;
|
||||
value?: string;
|
||||
label?: string;
|
||||
extra?: string;
|
||||
sort?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典配置值更新请求
|
||||
*/
|
||||
export interface DictValueUpdateRequest extends DictValueCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典配置值回滚请求
|
||||
*/
|
||||
export interface DictValueRollbackRequest {
|
||||
id?: number;
|
||||
valueId?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典配置值查询请求
|
||||
*/
|
||||
export interface DictValueQueryRequest extends Pagination {
|
||||
keyId?: number;
|
||||
keyName?: string;
|
||||
value?: string;
|
||||
label?: string;
|
||||
extra?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典配置值查询响应
|
||||
*/
|
||||
export interface DictValueQueryResponse extends TableData {
|
||||
id: number;
|
||||
keyId: number;
|
||||
keyName: string;
|
||||
keyDescription: string;
|
||||
value: string;
|
||||
label: string;
|
||||
extra: string;
|
||||
sort: number;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
creator: string;
|
||||
updater: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典配置值选项查询响应
|
||||
*/
|
||||
export interface DictValueOptionsQueryResponse extends Options {
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建字典配置值
|
||||
*/
|
||||
export function createDictValue(request: DictValueCreateRequest) {
|
||||
return axios.post('/infra/dict-value/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新字典配置值
|
||||
*/
|
||||
export function updateDictValue(request: DictValueUpdateRequest) {
|
||||
return axios.put('/infra/dict-value/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 回滚字典配置值
|
||||
*/
|
||||
export function rollbackDictValue(request: DictValueRollbackRequest) {
|
||||
return axios.put('/infra/dict-value/rollback', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询字典配置值
|
||||
*/
|
||||
export function getDictValueList(keys: string[]) {
|
||||
return axios.get<Record<string, Array<DictValueOptionsQueryResponse>>>('/infra/dict-value/list', {
|
||||
params: { keys },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询字典配置值
|
||||
*/
|
||||
export function getDictValuePage(request: DictValueQueryRequest) {
|
||||
return axios.post<DataGrid<DictValueQueryResponse>>('/infra/dict-value/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除字典配置值
|
||||
*/
|
||||
export function deleteDictValue(id: number) {
|
||||
return axios.delete('/infra/dict-value/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除字典配置值
|
||||
*/
|
||||
export function batchDeleteDictValue(idList: Array<number>) {
|
||||
return axios.delete('/infra/dict-value/batch-delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
97
orion-visor-ui/src/api/system/menu.ts
Normal file
97
orion-visor-ui/src/api/system/menu.ts
Normal file
@@ -0,0 +1,97 @@
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 菜单创建请求
|
||||
*/
|
||||
export interface MenuCreateRequest {
|
||||
parentId?: number;
|
||||
name?: string;
|
||||
permission?: string;
|
||||
type?: number;
|
||||
sort?: number;
|
||||
visible?: number;
|
||||
cache?: number;
|
||||
newWindow?: number;
|
||||
icon?: string;
|
||||
path?: string;
|
||||
component?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 菜单更新请求
|
||||
*/
|
||||
export interface MenuUpdateRequest extends MenuCreateRequest {
|
||||
id?: number;
|
||||
status?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 菜单查询请求
|
||||
*/
|
||||
export interface MenuQueryRequest {
|
||||
name?: string;
|
||||
status?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 菜单查询响应
|
||||
*/
|
||||
export interface MenuQueryResponse extends TableData {
|
||||
id: number;
|
||||
parentId: number;
|
||||
name: string;
|
||||
permission: string;
|
||||
type: number;
|
||||
sort: number;
|
||||
visible: number;
|
||||
status: number;
|
||||
cache: number;
|
||||
newWindow: number,
|
||||
icon: string;
|
||||
path: string;
|
||||
component: string;
|
||||
children: Array<MenuQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询菜单列表
|
||||
*/
|
||||
export function getMenuList(request: MenuQueryRequest) {
|
||||
return axios.post<MenuQueryResponse[]>('/infra/system-menu/list', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建菜单
|
||||
*/
|
||||
export function createMenu(request: MenuCreateRequest) {
|
||||
return axios.post('/infra/system-menu/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改菜单
|
||||
*/
|
||||
export function updateMenu(request: MenuUpdateRequest) {
|
||||
return axios.put<MenuQueryResponse[]>('/infra/system-menu/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改菜单状态
|
||||
*/
|
||||
export function updateMenuStatus(request: MenuUpdateRequest) {
|
||||
return axios.put<MenuQueryResponse[]>('/infra/system-menu/update-status', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除菜单
|
||||
*/
|
||||
export function deleteMenu(id: number) {
|
||||
return axios.delete<MenuQueryResponse[]>('/infra/system-menu/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新缓存
|
||||
*/
|
||||
export function refreshCache() {
|
||||
return axios.put('/infra/permission/refresh-cache');
|
||||
}
|
||||
75
orion-visor-ui/src/api/system/message.ts
Normal file
75
orion-visor-ui/src/api/system/message.ts
Normal file
@@ -0,0 +1,75 @@
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 系统消息查询请求
|
||||
*/
|
||||
export interface MessageQueryRequest {
|
||||
limit?: number;
|
||||
maxId?: number;
|
||||
classify?: string;
|
||||
queryUnread?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统消息查询响应
|
||||
*/
|
||||
export interface MessageRecordResponse {
|
||||
id: number;
|
||||
classify: string;
|
||||
type: string;
|
||||
status: number;
|
||||
relKey: string;
|
||||
title: string;
|
||||
content: string;
|
||||
contentHtml: string;
|
||||
createTime: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询系统消息列表
|
||||
*/
|
||||
export function getSystemMessageList(request: MessageQueryRequest) {
|
||||
return axios.post<Array<MessageRecordResponse>>('/infra/system-message/list', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询系统消息数量
|
||||
*/
|
||||
export function getSystemMessageCount(queryUnread: boolean) {
|
||||
return axios.get<Record<string, number>>('/infra/system-message/count', { params: { queryUnread } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询是否有未读消息
|
||||
*/
|
||||
export function checkHasUnreadMessage() {
|
||||
return axios.get<boolean>('/infra/system-message/has-unread');
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新系统消息为已读
|
||||
*/
|
||||
export function updateSystemMessageRead(id: number) {
|
||||
return axios.put('/infra/system-message/read', undefined, { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新全部系统消息为已读
|
||||
*/
|
||||
export function updateSystemMessageReadAll(classify: string) {
|
||||
return axios.put('/infra/system-message/read-all', undefined, { params: { classify } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统消息
|
||||
*/
|
||||
export function deleteSystemMessage(id: number) {
|
||||
return axios.delete('/infra/system-message/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理已读的系统消息
|
||||
*/
|
||||
export function clearSystemMessage(classify: string) {
|
||||
return axios.delete('/infra/system-message/clear', { params: { classify } });
|
||||
}
|
||||
8
orion-visor-ui/src/api/system/upload.ts
Normal file
8
orion-visor-ui/src/api/system/upload.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { createAppWebSocket } from '@/utils/http';
|
||||
|
||||
/**
|
||||
* 打开文件上传 websocket
|
||||
*/
|
||||
export const openFileUploadChannel = (uploadToken: string) => {
|
||||
return createAppWebSocket(`/file/upload/${uploadToken}`);
|
||||
};
|
||||
61
orion-visor-ui/src/api/user/auth.ts
Normal file
61
orion-visor-ui/src/api/user/auth.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import type { MenuQueryResponse } from '@/api/system/menu';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 登录请求
|
||||
*/
|
||||
export interface LoginRequest {
|
||||
username?: string;
|
||||
password?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录响应
|
||||
*/
|
||||
export interface LoginResponse {
|
||||
token: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户权限响应
|
||||
*/
|
||||
export interface UserPermissionResponse {
|
||||
user: {
|
||||
id: number;
|
||||
username: string;
|
||||
nickname: string;
|
||||
avatar: string;
|
||||
systemPreference: Record<string, any>;
|
||||
tippedKeys: Array<string>;
|
||||
};
|
||||
roles: Array<string>;
|
||||
permissions: Array<string>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录
|
||||
*/
|
||||
export function login(data: LoginRequest) {
|
||||
return axios.post<LoginResponse>('/infra/auth/login', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 登出
|
||||
*/
|
||||
export function logout() {
|
||||
return axios.get('/infra/auth/logout');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*/
|
||||
export function getUserPermission() {
|
||||
return axios.get<UserPermissionResponse>('/infra/permission/user');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单列表
|
||||
*/
|
||||
export function getMenuList() {
|
||||
return axios.get<Array<MenuQueryResponse>>('/infra/permission/menu');
|
||||
}
|
||||
61
orion-visor-ui/src/api/user/mine.ts
Normal file
61
orion-visor-ui/src/api/user/mine.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import type { DataGrid } from '@/types/global';
|
||||
import type { OperatorLogQueryRequest, OperatorLogQueryResponse } from './operator-log';
|
||||
import type { LoginHistoryQueryResponse, UserQueryResponse, UserSessionOfflineRequest, UserSessionQueryResponse, UserUpdateRequest } from './user';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 修改密码请求
|
||||
*/
|
||||
export interface UserUpdatePasswordRequest {
|
||||
beforePassword?: string;
|
||||
password?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改当前用户密码
|
||||
*/
|
||||
export function updateCurrentUserPassword(request: UserUpdatePasswordRequest) {
|
||||
return axios.put('/infra/mine/update-password', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前用户
|
||||
*/
|
||||
export function getCurrentUser() {
|
||||
return axios.get<UserQueryResponse>('/infra/mine/get-user');
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新当前用户
|
||||
*/
|
||||
export function updateCurrentUser(request: UserUpdateRequest) {
|
||||
return axios.put('/infra/mine/update-user', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前用户登录日志
|
||||
*/
|
||||
export function getCurrentLoginHistory() {
|
||||
return axios.get<LoginHistoryQueryResponse[]>('/infra/mine/login-history');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户会话列表
|
||||
*/
|
||||
export function getCurrentUserSessionList() {
|
||||
return axios.get<UserSessionQueryResponse[]>('/infra/mine/user-session');
|
||||
}
|
||||
|
||||
/**
|
||||
* 下线当前用户会话
|
||||
*/
|
||||
export function offlineCurrentUserSession(request: UserSessionOfflineRequest) {
|
||||
return axios.put('/infra/mine/offline-session', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前用户操作日志
|
||||
*/
|
||||
export function getCurrentUserOperatorLog(request: OperatorLogQueryRequest) {
|
||||
return axios.post<DataGrid<OperatorLogQueryResponse>>('/infra/mine/query-operator-log', request);
|
||||
}
|
||||
75
orion-visor-ui/src/api/user/operator-log.ts
Normal file
75
orion-visor-ui/src/api/user/operator-log.ts
Normal file
@@ -0,0 +1,75 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
/**
|
||||
* 操作日志查询参数
|
||||
*/
|
||||
export interface OperatorLogQueryRequest extends Pagination {
|
||||
userId?: number;
|
||||
username?: string;
|
||||
module?: string;
|
||||
type?: string;
|
||||
riskLevel?: string;
|
||||
result?: number;
|
||||
startTimeRange?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 操作日志查询响应
|
||||
*/
|
||||
export interface OperatorLogQueryResponse {
|
||||
id: number;
|
||||
userId: number;
|
||||
username: string;
|
||||
traceId: string;
|
||||
address: string;
|
||||
location: string;
|
||||
userAgent: string;
|
||||
riskLevel: string;
|
||||
module: string;
|
||||
type: string;
|
||||
logInfo: string;
|
||||
originLogInfo: string;
|
||||
extra: string;
|
||||
result: number;
|
||||
errorMessage: string;
|
||||
returnValue: string;
|
||||
duration: number;
|
||||
startTime: number;
|
||||
endTime: number;
|
||||
createTime: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页操作日志
|
||||
*/
|
||||
export function getOperatorLogPage(request: OperatorLogQueryRequest) {
|
||||
return axios.post<DataGrid<OperatorLogQueryResponse>>('/infra/operator-log/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除操作日志
|
||||
*/
|
||||
export function deleteOperatorLog(idList: Array<number>) {
|
||||
return axios.delete('/infra/operator-log/delete', {
|
||||
params: { idList },
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询操作日志数量
|
||||
*/
|
||||
export function getOperatorLogCount(request: OperatorLogQueryRequest) {
|
||||
return axios.post<number>('/infra/operator-log/query-count', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空操作日志
|
||||
*/
|
||||
export function clearOperatorLog(request: OperatorLogQueryRequest) {
|
||||
return axios.post<number>('/infra/operator-log/clear', request);
|
||||
}
|
||||
66
orion-visor-ui/src/api/user/preference.ts
Normal file
66
orion-visor-ui/src/api/user/preference.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
|
||||
type PreferenceType = 'SYSTEM' | 'TERMINAL'
|
||||
|
||||
/**
|
||||
* 用户偏好更新请求-单个
|
||||
*/
|
||||
export interface PreferenceUpdateRequest {
|
||||
type: PreferenceType;
|
||||
item: string;
|
||||
value: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户偏好更新请求-部分
|
||||
*/
|
||||
export interface PreferenceUpdatePartialRequest {
|
||||
type: PreferenceType;
|
||||
config: Record<string, any> | object;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户偏好-单个
|
||||
*/
|
||||
export function updatePreference(request: PreferenceUpdateRequest) {
|
||||
return axios.put('/infra/preference/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户偏好-部分
|
||||
*/
|
||||
export function updatePreferencePartial(request: PreferenceUpdatePartialRequest) {
|
||||
return axios.put('/infra/preference/update-partial', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户偏好
|
||||
*/
|
||||
export function getPreference<T>(type: PreferenceType, items: Array<string> | undefined = undefined) {
|
||||
return axios.get<T>('/infra/preference/get', {
|
||||
params: {
|
||||
type,
|
||||
items
|
||||
},
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询默认偏好
|
||||
*/
|
||||
export function getDefaultPreference<T>(type: PreferenceType, items: Array<string> | undefined = undefined) {
|
||||
return axios.get<T>('/infra/preference/get-default', {
|
||||
params: {
|
||||
type,
|
||||
items
|
||||
},
|
||||
paramsSerializer: params => {
|
||||
return qs.stringify(params, { arrayFormat: 'comma' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
115
orion-visor-ui/src/api/user/role.ts
Normal file
115
orion-visor-ui/src/api/user/role.ts
Normal file
@@ -0,0 +1,115 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 角色创建请求
|
||||
*/
|
||||
export interface RoleCreateRequest {
|
||||
name?: string;
|
||||
code?: string;
|
||||
status?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色更新请求
|
||||
*/
|
||||
export interface RoleUpdateRequest extends RoleCreateRequest {
|
||||
id?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色 分配绑定请求
|
||||
*/
|
||||
export interface RoleGrantMenuRequest extends RoleCreateRequest {
|
||||
roleId: number;
|
||||
menuIdList: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色查询请求
|
||||
*/
|
||||
export interface RoleQueryRequest extends Pagination {
|
||||
id?: number;
|
||||
name?: string;
|
||||
code?: string;
|
||||
status?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色查询响应
|
||||
*/
|
||||
export interface RoleQueryResponse extends TableData {
|
||||
id: number;
|
||||
name: string;
|
||||
code: string;
|
||||
status: number;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
creator: string;
|
||||
updater: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建角色
|
||||
*/
|
||||
export function createRole(request: RoleCreateRequest) {
|
||||
return axios.post('/infra/system-role/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 更新角色
|
||||
*/
|
||||
export function updateRole(request: RoleUpdateRequest) {
|
||||
return axios.put('/infra/system-role/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 更新角色状态
|
||||
*/
|
||||
export function updateRoleStatus(request: RoleUpdateRequest) {
|
||||
return axios.put('/infra/system-role/update-status', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 查询角色
|
||||
*/
|
||||
export function getRole(id: number) {
|
||||
return axios.get<RoleQueryResponse>('/infra/system-role/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有角色
|
||||
*/
|
||||
export function getRoleList() {
|
||||
return axios.get<RoleQueryResponse[]>('/infra/system-role/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询角色
|
||||
*/
|
||||
export function getRolePage(request: RoleQueryRequest) {
|
||||
return axios.post<DataGrid<RoleQueryResponse>>('/infra/system-role/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 删除角色
|
||||
*/
|
||||
export function deleteRole(id: number) {
|
||||
return axios.delete('/infra/system-role/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 分配角色菜单
|
||||
*/
|
||||
export function grantRoleMenu(request: RoleGrantMenuRequest) {
|
||||
return axios.put('/infra/system-role/grant-menu', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色菜单id
|
||||
*/
|
||||
export function getRoleMenuId(roleId: number) {
|
||||
return axios.get<Array<number>>('/infra/system-role/get-menu-id', { params: { roleId } });
|
||||
}
|
||||
|
||||
8
orion-visor-ui/src/api/user/tips.ts
Normal file
8
orion-visor-ui/src/api/user/tips.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 修改为已提示
|
||||
*/
|
||||
export function setTipsTipped(key: string) {
|
||||
return axios.put('/infra/tips/tipped', null, { params: { key } });
|
||||
}
|
||||
184
orion-visor-ui/src/api/user/user.ts
Normal file
184
orion-visor-ui/src/api/user/user.ts
Normal file
@@ -0,0 +1,184 @@
|
||||
import type { DataGrid, Pagination } from '@/types/global';
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface';
|
||||
import type { RoleQueryResponse } from '@/api/user/role';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 用户创建请求
|
||||
*/
|
||||
export interface UserCreateRequest {
|
||||
username?: string;
|
||||
password?: string;
|
||||
nickname?: string;
|
||||
avatar?: string;
|
||||
mobile?: string;
|
||||
email?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户更新请求
|
||||
*/
|
||||
export interface UserUpdateRequest extends UserCreateRequest {
|
||||
id?: number;
|
||||
status?: number;
|
||||
roleIdList?: Array<number>;
|
||||
password?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户查询请求
|
||||
*/
|
||||
export interface UserQueryRequest extends Pagination {
|
||||
id?: number;
|
||||
username?: string;
|
||||
password?: string;
|
||||
nickname?: string;
|
||||
avatar?: string;
|
||||
mobile?: string;
|
||||
email?: string;
|
||||
status?: number;
|
||||
lastLoginTime?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户查询响应
|
||||
*/
|
||||
export interface UserQueryResponse extends TableData {
|
||||
id: number;
|
||||
username: string;
|
||||
nickname: string;
|
||||
avatar: string;
|
||||
mobile: string;
|
||||
email: string;
|
||||
status: number;
|
||||
lastLoginTime?: number;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
creator: string;
|
||||
updater: string;
|
||||
roles: Array<RoleQueryResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户会话查询响应
|
||||
*/
|
||||
export interface UserSessionQueryResponse {
|
||||
visible: boolean;
|
||||
current: boolean;
|
||||
address: string;
|
||||
location: string;
|
||||
userAgent: string;
|
||||
loginTime: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户会话下线请求
|
||||
*/
|
||||
export interface UserSessionOfflineRequest {
|
||||
userId?: number;
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录日志查询响应
|
||||
*/
|
||||
export interface LoginHistoryQueryResponse {
|
||||
id: number;
|
||||
address: string;
|
||||
location: string;
|
||||
userAgent: string;
|
||||
result: number;
|
||||
errorMessage: string;
|
||||
createTime: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建用户
|
||||
*/
|
||||
export function createUser(request: UserCreateRequest) {
|
||||
return axios.post('/infra/system-user/create', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 更新用户
|
||||
*/
|
||||
export function updateUser(request: UserUpdateRequest) {
|
||||
return axios.put('/infra/system-user/update', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户状态
|
||||
*/
|
||||
export function updateUserStatus(request: UserUpdateRequest) {
|
||||
return axios.put('/infra/system-user/update-status', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户角色
|
||||
*/
|
||||
export function grantUserRole(request: UserUpdateRequest) {
|
||||
return axios.put('/infra/system-user/grant-role', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置用户密码
|
||||
*/
|
||||
export function resetUserPassword(request: UserUpdateRequest) {
|
||||
return axios.put('/infra/system-user/reset-password', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 查询用户
|
||||
*/
|
||||
export function getUser(id: number) {
|
||||
return axios.get<UserQueryResponse>('/infra/system-user/get', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有用户
|
||||
*/
|
||||
export function getUserList() {
|
||||
return axios.get<UserQueryResponse[]>('/infra/system-user/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户的 roleId
|
||||
*/
|
||||
export function getUserRoleIdList(userId: number) {
|
||||
return axios.get<Array<number>>('/infra/system-user/get-roles', { params: { userId } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询用户
|
||||
*/
|
||||
export function getUserPage(request: UserQueryRequest) {
|
||||
return axios.post<DataGrid<UserQueryResponse>>('/infra/system-user/query', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 id 删除用户
|
||||
*/
|
||||
export function deleteUser(id: number) {
|
||||
return axios.delete('/infra/system-user/delete', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户会话列表
|
||||
*/
|
||||
export function getUserSessionList(id: number) {
|
||||
return axios.get<Array<UserSessionQueryResponse>>('/infra/system-user/session/list', { params: { id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 下线用户会话
|
||||
*/
|
||||
export function offlineUserSession(request: UserSessionOfflineRequest) {
|
||||
return axios.put('/infra/system-user/session/offline', request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询登录日志
|
||||
*/
|
||||
export function getLoginHistory(username: string) {
|
||||
return axios.get<LoginHistoryQueryResponse[]>('/infra/system-user/login-history', { params: { username } });
|
||||
}
|
||||
Reference in New Issue
Block a user