This commit is contained in:
ygx
2026-03-15 23:16:00 +08:00
parent 18072d75a4
commit 2835695d78
36 changed files with 6902 additions and 17 deletions

26
src/api/common/fts.ts Normal file
View File

@@ -0,0 +1,26 @@
import { AxiosProgressEvent } from "axios";
import { request } from "@/api/request";
/** 上传文件 */
const FtsUpload = (data: FormData, onUploadProgress?: (progress: number) => void) => {
data.append('provider', 'local');
data.append('bucket', 'visual');
return request.post(
`/fts/v1/uploader`,
data,
{
headers: {
'Content-Type': 'multipart/form-data'
},
onUploadProgress: onUploadProgress ? (progressEvent: AxiosProgressEvent) => {
if (progressEvent.total) {
const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
onUploadProgress(percentCompleted);
}
} : undefined
}
);
};
export default FtsUpload;

View File

@@ -0,0 +1,36 @@
import { request } from "@/api/request";
/** 获取 告警记录列表 */
export const fetchHistories = (data: {
page?: number,
page_size?: number,
size?: number,
policy_id?: number,
rule_id?: number,
status?: string,
severity_id?: number,
starts_at?: string,
ends_at?: string,
keyword?: string
}) => {
// 兼容 size 参数,转换为 page_size
const params: any = { ...data };
if (params.size !== undefined && params.page_size === undefined) {
params.page_size = params.size;
delete params.size;
}
return request.get("/Alert/v1/record/list", { params });
};
/** 获取 告警记录详情 */
export const fetchHistoryDetail = (id: number) => request.get(`/Alert/v1/record/get/${id}`);
/** 获取 告警统计 */
export const fetchAlertStatistics = (data: {
policy_id?: number,
starts_at?: string,
ends_at?: string
}) => request.get("/Alert/v1/record/statistics", { params: data });
/** 获取 告警计数 */
export const fetchAlertCount = () => request.get("/Alert/v1/record/count");

53
src/api/ops/datacenter.ts Normal file
View File

@@ -0,0 +1,53 @@
import { request } from "@/api/request";
/** 获取数据中心列表(分页) */
export const fetchDatacenterList = (data?: {
page?: number;
page_size?: number;
keyword?: string;
province_id?: number;
city_id?: number;
status?: string;
}) => {
return request.post("/Assets/v1/datacenter/list", data || {});
};
/** 获取数据中心详情 */
export const fetchDatacenterDetail = (id: number) => {
return request.get(`/Assets/v1/datacenter/detail/${id}`);
};
/** 创建数据中心 */
export const createDatacenter = (data: any) => {
return request.post("/Assets/v1/datacenter/create", data);
};
/** 更新数据中心 */
export const updateDatacenter = (data: any) => {
return request.put("/Assets/v1/datacenter/update", data);
};
/** 删除数据中心 */
export const deleteDatacenter = (id: number) => {
return request.delete(`/Assets/v1/datacenter/delete/${id}`);
};
/** 获取省份列表(用于下拉选择) */
export const fetchProvinceList = () => {
return request.get("/Assets/v1/province/all");
};
/** 获取城市列表(用于下拉选择) */
export const fetchCityList = () => {
return request.get("/Assets/v1/city/all");
};
/** 根据城市获取数据中心列表 */
export const fetchDatacenterByCity = (cityId: number) => {
return request.get(`/Assets/v1/datacenter/city/${cityId}`);
};
/** 获取数据中心树形结构 */
export const fetchDatacenterTree = () => {
return request.get("/Assets/v1/datacenter/tree");
};

22
src/api/ops/dcControl.ts Normal file
View File

@@ -0,0 +1,22 @@
import { request } from "@/api/request";
/** 获取 采集器 */
export const fetchCollectors = (data: { page: number, size: number, keyword?: string }) => request.get("/DC-Control/v1/collectors", { params: data });
/** 新增 采集器 */
export const createCollector = (data: any) => request.post("/DC-Control/v1/collectors", data);
/** 删除 采集器 */
export const deleteCollector = (id: number) => request.delete(`/DC-Control/v1/collectors/${id}`);
/** 获取 采集器详情 */
export const fetchCollectorDetail = (id: number) => request.get(`/DC-Control/v1/collectors/${id}`);
/** 更新 采集器 */
export const updateCollector = (data: any) => request.put(`/DC-Control/v1/collectors/${data.id}`, data);
/** 获取 采集器统计数据 */
export const fetchCollectorStatistics = () => request.get("/DC-Control/v1/statistics");
/** 获取 许可证信息 */
export const fetchLicenseInfo = () => request.get("/DC-Control/v1/license");

View File

@@ -0,0 +1,76 @@
import { request } from "@/api/request";
/** 获取 工单列表 */
export const fetchFeedbackTickets = (data?: {
page?: number,
page_size?: number,
size?: number,
keyword?: string,
type?: string,
priority?: string,
status?: string,
creator_id?: number,
assignee_id?: number
}) => {
// 兼容 size 参数,转换为 page_size
const params: any = data ? { ...data } : {};
if (params.size !== undefined && params.page_size === undefined) {
params.page_size = params.size;
delete params.size;
}
return request.get("/Feedback/v1/tickets", params ? { params } : undefined);
};
/** 创建 工单 */
export const createFeedbackTicket = (data: any) => request.post("/Feedback/v1/tickets", data);
/** 更新 工单 */
export const updateFeedbackTicket = (id: number, data: any) => request.put(`/Feedback/v1/tickets/${id}`, data);
/** 删除 工单 */
export const deleteFeedbackTicket = (id: number) => request.delete(`/Feedback/v1/tickets/${id}`);
/** 获取 工单详情 */
export const fetchFeedbackTicketDetail = (id: number) => request.get(`/Feedback/v1/tickets/${id}`);
/** 根据工单编号获取详情 */
export const fetchFeedbackTicketByNo = (no: string) => request.get(`/Feedback/v1/tickets/no/${no}`);
/** 接单 */
export const acceptFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/accept`);
/** 转交 */
export const transferFeedbackTicket = (id: number, data: { assignee_id: number, assignee_name: string, reason?: string }) => request.post(`/Feedback/v1/tickets/${id}/transfer`, data);
/** 撤回 */
export const cancelFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/cancel`);
/** 挂起 */
export const suspendFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/suspend`, data);
/** 重启 */
export const resumeFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/resume`);
/** 解决 */
export const resolveFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/resolve`, data);
/** 关闭 */
export const closeFeedbackTicket = (id: number, data: { remarks?: string }) => request.post(`/Feedback/v1/tickets/${id}/close`, data);
/** 添加评论 */
export const commentFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/comment`, data);
/** 获取操作日志 */
export const fetchFeedbackTicketLogs = (id: number) => request.get(`/Feedback/v1/tickets/${id}/logs`);
/** 获取关联关系 */
export const fetchFeedbackTicketRelations = (id: number) => request.get(`/Feedback/v1/tickets/${id}/relations`);
/** 创建关联 */
export const createFeedbackTicketRelation = (id: number, data: { target_ticket_id: number, relation_type: string, description?: string }) => request.post(`/Feedback/v1/tickets/${id}/relations`, data);
/** 删除关联 */
export const deleteFeedbackTicketRelation = (relationId: number) => request.delete(`/Feedback/v1/tickets/relations/${relationId}`);
/** 获取 工单统计数据 */
export const fetchFeedbackTicketStatistics = () => request.get("/Feedback/v1/tickets/statistics");

37
src/api/ops/floor.ts Normal file
View File

@@ -0,0 +1,37 @@
import { request } from "@/api/request";
/** 获取楼层列表(分页) */
export const fetchFloorList = (data?: {
page?: number;
page_size?: number;
keyword?: string;
datacenter_id?: number;
status?: string;
}) => {
return request.post("/Assets/v1/floor/list", data || {});
};
/** 获取楼层详情 */
export const fetchFloorDetail = (id: number) => {
return request.get(`/Assets/v1/floor/detail/${id}`);
};
/** 创建楼层 */
export const createFloor = (data: any) => {
return request.post("/Assets/v1/floor/create", data);
};
/** 更新楼层 */
export const updateFloor = (data: any) => {
return request.put("/Assets/v1/floor/update", data);
};
/** 删除楼层 */
export const deleteFloor = (id: number) => {
return request.delete(`/Assets/v1/floor/delete/${id}`);
};
/** 获取数据中心列表(用于下拉选择) */
export const fetchDatacenterList = () => {
return request.get("/Assets/v1/datacenter/all");
};

31
src/api/ops/rbac2.ts Normal file
View File

@@ -0,0 +1,31 @@
import { request } from '@/api/request'
/**
* 用户列表项接口
*/
export interface UserItem {
id: number;
name: string;
username?: string;
email?: string;
phone?: string;
status?: string;
created_at?: string;
updated_at?: string;
}
/**
* 用户列表响应接口
*/
export interface UserListResponse {
code: number;
message: string;
data: UserItem[];
}
/**
* 获取用户列表
*/
export const fetchUserList = async (data: any) => {
return request.post<UserListResponse>('/rbac2/v1/user/list', data);
};