import axios from 'axios'; import type { MinioUploadPolicy, OSSUploadPolicy } from '@d8d-appcontainer/types'; import 'dayjs/locale/zh-cn'; import type { User, ZichanInfo, ZichanTransLog, DeviceInstance, DeviceType, AlertHandleLog, AlertNotifyConfig, DeviceAlert, DeviceAlertRule, DeviceMonitorData, FileLibrary, FileCategory, ZichanCategory, ZichanArea, RackServerType, RackInfo, RackServer, KnowInfo, WorkOrder, WorkOrderTemplate, WorkOrderLog, AuthContextType, ThemeContextType, Attachment, ThemeSettings, CategoryChartData, OnlineRateChartData, StateChartData, StateChartDataWithPercent, AlarmChartData, CategoryChartDataWithPercent, MapViewDevice, DeviceMapFilter, DeviceMapStats, DeviceMapDataResponse, DeviceMapStatsResponse, DeviceTreeNode, DeviceTreeStats, LoginLocation, LoginLocationDetail, SystemSetting, SystemSettingGroupData } from '../share/types.ts'; import { DeviceCategory, DeviceStatus, AssetTransferType, } from '../share/types.ts'; // 定义API基础URL const API_BASE_URL = '/api'; // 获取OSS完整URL export const getOssUrl = (path: string): string => { // 获取全局配置中的OSS_HOST,如果不存在使用默认值 const ossHost = (window.CONFIG?.OSS_BASE_URL) || ''; // 确保path不以/开头 const ossPath = path.startsWith('/') ? path.substring(1) : path; return `${ossHost}/${ossPath}`; }; // =================== // Auth API 定义部分 // =================== // 定义API返回数据类型 interface AuthLoginResponse { message: string; token: string; refreshToken?: string; user: User; } interface AuthResponse { message: string; [key: string]: any; } // 定义Auth API接口类型 interface AuthAPIType { login: (username: string, password: string) => Promise; register: (username: string, email: string, password: string) => Promise; logout: () => Promise; getCurrentUser: () => Promise; updateUser: (userId: number, userData: Partial) => Promise; changePassword: (oldPassword: string, newPassword: string) => Promise; requestPasswordReset: (email: string) => Promise; resetPassword: (token: string, newPassword: string) => Promise; } // Auth相关API export const AuthAPI: AuthAPIType = { // 登录API login: async (username: string, password: string) => { try { const response = await axios.post(`${API_BASE_URL}/auth/login`, { username, password }); return response.data; } catch (error) { throw error; } }, // 注册API register: async (username: string, email: string, password: string) => { try { const response = await axios.post(`${API_BASE_URL}/auth/register`, { username, email, password }); return response.data; } catch (error) { throw error; } }, // 登出API logout: async () => { try { const response = await axios.post(`${API_BASE_URL}/auth/logout`); return response.data; } catch (error) { throw error; } }, // 获取当前用户信息 getCurrentUser: async () => { try { const response = await axios.get(`${API_BASE_URL}/auth/me`); return response.data; } catch (error) { throw error; } }, // 更新用户信息 updateUser: async (userId: number, userData: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/auth/users/${userId}`, userData); return response.data; } catch (error) { throw error; } }, // 修改密码 changePassword: async (oldPassword: string, newPassword: string) => { try { const response = await axios.post(`${API_BASE_URL}/auth/change-password`, { oldPassword, newPassword }); return response.data; } catch (error) { throw error; } }, // 请求重置密码 requestPasswordReset: async (email: string) => { try { const response = await axios.post(`${API_BASE_URL}/auth/request-password-reset`, { email }); return response.data; } catch (error) { throw error; } }, // 重置密码 resetPassword: async (token: string, newPassword: string) => { try { const response = await axios.post(`${API_BASE_URL}/auth/reset-password`, { token, newPassword }); return response.data; } catch (error) { throw error; } } }; // 为UserAPI添加的接口响应类型 interface UsersResponse { data: User[]; pagination: { total: number; current: number; pageSize: number; totalPages: number; }; } interface UserResponse { data: User; message?: string; } interface UserCreateResponse { message: string; data: User; } interface UserUpdateResponse { message: string; data: User; } interface UserDeleteResponse { message: string; id: number; } // 用户管理API export const UserAPI = { // 获取用户列表 getUsers: async (params?: { page?: number, limit?: number, search?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/users`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个用户详情 getUser: async (userId: number): Promise => { try { const response = await axios.get(`${API_BASE_URL}/users/${userId}`); return response.data; } catch (error) { throw error; } }, // 创建用户 createUser: async (userData: Partial): Promise => { try { const response = await axios.post(`${API_BASE_URL}/users`, userData); return response.data; } catch (error) { throw error; } }, // 更新用户信息 updateUser: async (userId: number, userData: Partial): Promise => { try { const response = await axios.put(`${API_BASE_URL}/users/${userId}`, userData); return response.data; } catch (error) { throw error; } }, // 删除用户 deleteUser: async (userId: number): Promise => { try { const response = await axios.delete(`${API_BASE_URL}/users/${userId}`); return response.data; } catch (error) { throw error; } } }; // 资产管理API export const ZichanAPI = { // 获取资产列表 getZichanList: async (params?: { page?: number, limit?: number, asset_name?: string, device_category?: DeviceCategory, device_status?: DeviceStatus }) => { try { const response = await axios.get(`${API_BASE_URL}/zichan`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个资产 getZichan: async (id: number) => { try { const response = await axios.get(`${API_BASE_URL}/zichan/${id}`); return response.data; } catch (error) { throw error; } }, // 创建资产 createZichan: async (data: Partial) => { try { const response = await axios.post(`${API_BASE_URL}/zichan`, data); return response.data; } catch (error) { throw error; } }, // 更新资产 updateZichan: async (id: number, data: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/zichan/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除资产 deleteZichan: async (id: number) => { try { const response = await axios.delete(`${API_BASE_URL}/zichan/${id}`); return response.data; } catch (error) { throw error; } } }; // 资产流转API接口定义 export const ZichanTransferAPI = { // 获取资产流转记录列表 getTransferList: async (params?: { page?: number, limit?: number, asset_id?: number, asset_transfer?: AssetTransferType }) => { try { const response = await axios.get(`${API_BASE_URL}/zichan-transfer`, { params }); return response.data; } catch (error) { throw error; } }, // 获取资产流转记录详情 getTransfer: async (id: number) => { try { const response = await axios.get(`${API_BASE_URL}/zichan-transfer/${id}`); return response.data; } catch (error) { throw error; } }, // 创建资产流转记录 createTransfer: async (data: Partial) => { try { const response = await axios.post(`${API_BASE_URL}/zichan-transfer`, data); return response.data; } catch (error) { throw error; } }, // 更新资产流转记录 updateTransfer: async (id: number, data: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/zichan-transfer/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除资产流转记录 deleteTransfer: async (id: number) => { try { const response = await axios.delete(`${API_BASE_URL}/zichan-transfer/${id}`); return response.data; } catch (error) { throw error; } } }; // 设备实例API接口定义 interface DeviceInstancesResponse { data: DeviceInstance[]; pagination: { total: number; current: number; pageSize: number; totalPages: number; }; } interface DeviceInstanceResponse { data: DeviceInstance; asset_info?: ZichanInfo; type_info?: DeviceType; message?: string; } interface DeviceInstanceCreateResponse { message: string; data: DeviceInstance; } interface DeviceInstanceUpdateResponse { message: string; data: DeviceInstance; } interface DeviceInstanceDeleteResponse { message: string; id: number; } // 设备类型API接口定义 interface DeviceTypeResponse { data: DeviceType[]; pagination: { total: number; current: number; pageSize: number; totalPages: number; }; } interface DeviceTypeDetailResponse { data: DeviceType; message?: string; } interface DeviceTypeCreateResponse { message: string; data: DeviceType; } interface DeviceTypeUpdateResponse { message: string; data: DeviceType; } interface DeviceTypeDeleteResponse { message: string; id: number; } export const DeviceTypeAPI = { // 获取设备类型列表 getDeviceTypes: async (params?: { page?: number, pageSize?: number, code?: string, name?: string, is_enabled?: boolean }): Promise => { try { const response = await axios.get('/api/device/types', { params }); return response.data; } catch (error) { throw error; } }, // 获取单个设备类型信息 getDeviceType: async (id: number): Promise => { try { const response = await axios.get(`/api/device/types/${id}`); return response.data; } catch (error) { throw error; } }, // 创建设备类型 createDeviceType: async (data: Partial): Promise => { try { const response = await axios.post('/api/device/types', data); return response.data; } catch (error) { throw error; } }, // 更新设备类型 updateDeviceType: async (id: number, data: Partial): Promise => { try { const response = await axios.put(`/api/device/types/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除设备类型 deleteDeviceType: async (id: number): Promise => { try { const response = await axios.delete(`/api/device/types/${id}`); return response.data; } catch (error) { throw error; } }, // 获取设备类型图标 getTypeIcons: async (): Promise<{data: Record, success: boolean}> => { try { const response = await axios.get('/api/device/types/icons'); return response.data; } catch (error) { throw error; } } }; export const DeviceInstanceAPI = { // 获取设备实例列表 getDeviceInstances: async (params?: { page?: number, limit?: number, type_id?: number, protocol?: string, status?: number }): Promise => { try { const response = await axios.get('/api/device/instances', { params }); return response.data; } catch (error) { throw error; } }, // 获取单个设备实例信息 getDeviceInstance: async (id: number): Promise => { try { const response = await axios.get(`/api/device/instances/${id}`); return response.data; } catch (error) { throw error; } }, // 创建设备实例 createDeviceInstance: async (data: Partial): Promise => { try { const response = await axios.post('/api/device/instances', data); return response.data; } catch (error) { throw error; } }, // 更新设备实例 updateDeviceInstance: async (id: number, data: Partial): Promise => { try { const response = await axios.put(`/api/device/instances/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除设备实例 deleteDeviceInstance: async (id: number): Promise => { try { const response = await axios.delete(`/api/device/instances/${id}`); return response.data; } catch (error) { throw error; } } }; // 机柜管理API接口定义 export const RackAPI = { // 获取机柜列表 getRackList: async (params?: { page?: number, limit?: number, rack_name?: string, rack_code?: string, area?: string }) => { try { const response = await axios.get(`${API_BASE_URL}/racks`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个机柜信息 getRack: async (id: number) => { try { const response = await axios.get(`${API_BASE_URL}/racks/${id}`); return response.data; } catch (error) { throw error; } }, // 创建机柜 createRack: async (data: Partial) => { try { const response = await axios.post(`${API_BASE_URL}/racks`, data); return response.data; } catch (error) { throw error; } }, // 更新机柜 updateRack: async (id: number, data: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/racks/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除机柜 deleteRack: async (id: number) => { try { const response = await axios.delete(`${API_BASE_URL}/racks/${id}`); return response.data; } catch (error) { throw error; } } }; // 机柜服务器API接口定义 export const RackServerAPI = { // 获取机柜服务器列表 getRackServerList: async (params?: { page?: number, limit?: number, rack_id?: number, asset_id?: number, server_type?: string }) => { try { const response = await axios.get(`${API_BASE_URL}/rack-servers`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个机柜服务器信息 getRackServer: async (id: number) => { try { const response = await axios.get(`${API_BASE_URL}/rack-servers/${id}`); return response.data; } catch (error) { throw error; } }, // 创建机柜服务器 createRackServer: async (data: Partial) => { try { const response = await axios.post(`${API_BASE_URL}/rack-servers`, data); return response.data; } catch (error) { throw error; } }, // 更新机柜服务器 updateRackServer: async (id: number, data: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/rack-servers/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除机柜服务器 deleteRackServer: async (id: number) => { try { const response = await axios.delete(`${API_BASE_URL}/rack-servers/${id}`); return response.data; } catch (error) { throw error; } } }; interface DeviceMonitorDataResponse { data: DeviceMonitorData[]; total: number; page: number; pageSize: number; } interface DeviceMonitorResponse { data: DeviceMonitorData; message?: string; } interface MonitorCreateResponse { data: DeviceMonitorData; message: string; } interface MonitorUpdateResponse { data: DeviceMonitorData; message: string; } interface MonitorDeleteResponse { message: string; } // 告警相关响应类型 interface DeviceAlertDataResponse { data: DeviceAlert[]; total: number; page: number; pageSize: number; } interface DeviceAlertResponse { data: DeviceAlert; message?: string; } interface AlertCreateResponse { data: DeviceAlert; message: string; } interface AlertUpdateResponse { data: DeviceAlert; message: string; } interface AlertDeleteResponse { message: string; } // 告警处理相关响应类型 interface AlertHandleDataResponse { data: AlertHandleLog[]; total: number; page: number; pageSize: number; } interface AlertHandleResponse { data: AlertHandleLog; message?: string; } // 告警通知配置相关响应类型 interface AlertNotifyConfigDataResponse { data: AlertNotifyConfig[]; total: number; page: number; pageSize: number; } interface AlertNotifyConfigResponse { data: AlertNotifyConfig; message?: string; } // 监控API接口定义 export const MonitorAPI = { // 获取监控数据 getMonitorData: async (params?: { page?: number, limit?: number, device_id?: number, device_type?: string, start_time?: string, end_time?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/monitor/data`, { params }); return response.data; } catch (error) { throw error; } }, // 获取设备树数据 getDeviceTree: async (params?: { status?: string, keyword?: string }): Promise<{ data: DeviceTreeNode[] }> => { try { const response = await axios.get(`${API_BASE_URL}/monitor/devices/tree`, { params }); return response.data; } catch (error) { throw error; } }, // 获取设备树统计数据 getDeviceTreeStats: async (): Promise<{ data: DeviceTreeStats }> => { try { const response = await axios.get(`${API_BASE_URL}/monitor/devices/tree/statistics`); return response.data; } catch (error) { throw error; } }, // 获取设备地图数据 getDeviceMapData: async (params?: { type_code?: string, device_status?: DeviceStatus, keyword?: string, device_id?: number }): Promise<{ data: MapViewDevice[], stats: DeviceMapStats }> => { try { const response = await axios.get(`${API_BASE_URL}/monitor/devices/map`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个监控数据 getMonitor: async (id: number): Promise => { try { const response = await axios.get(`${API_BASE_URL}/monitor/data/${id}`); return response.data; } catch (error) { throw error; } }, // 创建监控数据 createMonitor: async (data: Partial): Promise => { try { const response = await axios.post(`${API_BASE_URL}/monitor/data`, data); return response.data; } catch (error) { throw error; } }, // 更新监控数据 updateMonitor: async (id: number, data: Partial): Promise => { try { const response = await axios.put(`${API_BASE_URL}/monitor/data/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除监控数据 deleteMonitor: async (id: number): Promise => { try { const response = await axios.delete(`${API_BASE_URL}/monitor/data/${id}`); return response.data; } catch (error) { throw error; } } }; // 告警API接口定义 export const AlertAPI = { // 获取告警数据 getAlertData: async (params?: { page?: number, limit?: number, alert_type?: string, alert_level?: string, start_time?: string, end_time?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/alerts`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个告警数据 getAlert: async (id: number): Promise => { try { const response = await axios.get(`${API_BASE_URL}/alerts/${id}`); return response.data; } catch (error) { throw error; } }, // 创建告警数据 createAlert: async (data: Partial): Promise => { try { const response = await axios.post(`${API_BASE_URL}/alerts`, data); return response.data; } catch (error) { throw error; } }, // 更新告警数据 updateAlert: async (id: number, data: Partial): Promise => { try { const response = await axios.put(`${API_BASE_URL}/alerts/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除告警数据 deleteAlert: async (id: number): Promise => { try { const response = await axios.delete(`${API_BASE_URL}/alerts/${id}`); return response.data; } catch (error) { throw error; } } }; // 告警处理API接口定义 export const AlertHandleAPI = { // 获取告警处理数据 getAlertHandleData: async (params?: { page?: number, limit?: number, alert_id?: number, handle_type?: string, start_time?: string, end_time?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/alert-handles`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个告警处理数据 getAlertHandle: async (id: number): Promise => { try { const response = await axios.get(`${API_BASE_URL}/alert-handles/${id}`); return response.data; } catch (error) { throw error; } }, // 创建告警处理数据 createAlertHandle: async (data: Partial) => { try { const response = await axios.post(`${API_BASE_URL}/alert-handles`, data); return response.data; } catch (error) { throw error; } }, // 更新告警处理数据 updateAlertHandle: async (id: number, data: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/alert-handles/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除告警处理数据 deleteAlertHandle: async (id: number) => { try { const response = await axios.delete(`${API_BASE_URL}/alert-handles/${id}`); return response.data; } catch (error) { throw error; } } }; // 告警通知配置API接口定义 export const AlertNotifyConfigAPI = { // 获取告警通知配置 getAlertNotifyConfig: async (params?: { page?: number, limit?: number, device_id?: number, alert_level?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/alert-notify-configs`, { params }); return response.data; } catch (error) { throw error; } }, // 创建告警通知配置 createAlertNotifyConfig: async (data: Partial): Promise => { try { const response = await axios.post(`${API_BASE_URL}/alert-notify-configs`, data); return response.data; } catch (error) { throw error; } }, // 更新告警通知配置 updateAlertNotifyConfig: async (id: number, data: Partial): Promise => { try { const response = await axios.put(`${API_BASE_URL}/alert-notify-configs/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除告警通知配置 deleteAlertNotifyConfig: async (id: number): Promise => { try { const response = await axios.delete(`${API_BASE_URL}/alert-notify-configs/${id}`); return response.data; } catch (error) { throw error; } } }; // 设备告警规则API接口定义 export const DeviceAlertRuleAPI = { // 获取设备告警规则 getDeviceAlertRules: async (params?: { page?: number, limit?: number, device_id?: number, rule_type?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/device-alert-rules`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个设备告警规则 getDeviceAlertRule: async (id: number): Promise => { try { const response = await axios.get(`${API_BASE_URL}/device-alert-rules/${id}`); return response.data; } catch (error) { throw error; } }, // 创建设备告警规则 createDeviceAlertRule: async (data: Partial): Promise => { try { const response = await axios.post(`${API_BASE_URL}/device-alert-rules`, data); return response.data; } catch (error) { throw error; } }, // 更新设备告警规则 updateDeviceAlertRule: async (id: number, data: Partial): Promise => { try { const response = await axios.put(`${API_BASE_URL}/device-alert-rules/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除设备告警规则 deleteDeviceAlertRule: async (id: number): Promise => { try { const response = await axios.delete(`${API_BASE_URL}/device-alert-rules/${id}`); return response.data; } catch (error) { throw error; } } }; // 资产分类API响应类型 interface ZichanCategoryResponse { data: ZichanCategory[]; pagination: { total: number; current: number; pageSize: number; }; } // 资产归属区域API响应类型 interface ZichanAreaResponse { data: ZichanArea[]; pagination: { total: number; current: number; pageSize: number; }; } // 机柜服务器类型API响应类型 interface RackServerTypeResponse { data: RackServerType[]; pagination: { total: number; current: number; pageSize: number; }; } // 资产分类API接口定义 export const ZichanCategoryAPI = { // 获取资产分类列表 getZichanCategoryList: async (params?: { page?: number, limit?: number, name?: string, code?: string }) => { try { const response = await axios.get(`${API_BASE_URL}/zichan-categories`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个资产分类信息 getZichanCategory: async (id: number) => { try { const response = await axios.get(`${API_BASE_URL}/zichan-categories/${id}`); return response.data; } catch (error) { throw error; } }, // 创建资产分类 createZichanCategory: async (data: Partial) => { try { const response = await axios.post(`${API_BASE_URL}/zichan-categories`, data); return response.data; } catch (error) { throw error; } }, // 更新资产分类 updateZichanCategory: async (id: number, data: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/zichan-categories/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除资产分类 deleteZichanCategory: async (id: number) => { try { const response = await axios.delete(`${API_BASE_URL}/zichan-categories/${id}`); return response.data; } catch (error) { throw error; } } }; // 资产归属区域API接口定义 export const ZichanAreaAPI = { // 获取资产归属区域列表 getZichanAreaList: async (params?: { page?: number, limit?: number, name?: string, code?: string }) => { try { const response = await axios.get(`${API_BASE_URL}/zichan-areas`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个资产归属区域信息 getZichanArea: async (id: number) => { try { const response = await axios.get(`${API_BASE_URL}/zichan-areas/${id}`); return response.data; } catch (error) { throw error; } }, // 创建资产归属区域 createZichanArea: async (data: Partial) => { try { const response = await axios.post(`${API_BASE_URL}/zichan-areas`, data); return response.data; } catch (error) { throw error; } }, // 更新资产归属区域 updateZichanArea: async (id: number, data: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/zichan-areas/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除资产归属区域 deleteZichanArea: async (id: number) => { try { const response = await axios.delete(`${API_BASE_URL}/zichan-areas/${id}`); return response.data; } catch (error) { throw error; } } }; // 机柜服务器类型API接口定义 export const RackServerTypeAPI = { // 获取机柜服务器类型列表 getRackServerTypeList: async (params?: { page?: number, limit?: number, name?: string, code?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/rack-server-types`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个机柜服务器类型信息 getRackServerType: async (id: number) => { try { const response = await axios.get(`${API_BASE_URL}/rack-server-types/${id}`); return response.data; } catch (error) { throw error; } }, // 创建机柜服务器类型 createRackServerType: async (data: Partial) => { try { const response = await axios.post(`${API_BASE_URL}/rack-server-types`, data); return response.data; } catch (error) { throw error; } }, // 更新机柜服务器类型 updateRackServerType: async (id: number, data: Partial) => { try { const response = await axios.put(`${API_BASE_URL}/rack-server-types/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除机柜服务器类型 deleteRackServerType: async (id: number) => { try { const response = await axios.delete(`${API_BASE_URL}/rack-server-types/${id}`); return response.data; } catch (error) { throw error; } } }; // 定义文件相关接口类型 interface FileUploadPolicyResponse { message: string; data: MinioUploadPolicy | OSSUploadPolicy; } interface FileListResponse { message: string; data: { list: FileLibrary[]; pagination: { current: number; pageSize: number; total: number; }; }; } interface FileSaveResponse { message: string; data: FileLibrary; } interface FileInfoResponse { message: string; data: FileLibrary; } interface FileDeleteResponse { message: string; } interface FileCategoryListResponse { data: FileCategory[]; total: number; page: number; pageSize: number; } interface FileCategoryCreateResponse { message: string; data: FileCategory; } interface FileCategoryUpdateResponse { message: string; data: FileCategory; } interface FileCategoryDeleteResponse { message: string; } // 文件API接口定义 export const FileAPI = { // 获取文件上传策略 getUploadPolicy: async (filename: string, prefix: string = 'uploads/', maxSize: number = 10 * 1024 * 1024): Promise => { try { const response = await axios.get(`${API_BASE_URL}/upload/policy`, { params: { filename, prefix, maxSize } }); return response.data; } catch (error) { throw error; } }, // 保存文件信息 saveFileInfo: async (fileData: Partial): Promise => { try { const response = await axios.post(`${API_BASE_URL}/upload/save`, fileData); return response.data; } catch (error) { throw error; } }, // 获取文件列表 getFileList: async (params?: { page?: number, pageSize?: number, category_id?: number, fileType?: string, keyword?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/upload/list`, { params }); return response.data; } catch (error) { throw error; } }, // 获取单个文件信息 getFileInfo: async (id: number): Promise => { try { const response = await axios.get(`${API_BASE_URL}/upload/${id}`); return response.data; } catch (error) { throw error; } }, // 更新文件下载计数 updateDownloadCount: async (id: number): Promise => { try { const response = await axios.post(`${API_BASE_URL}/upload/${id}/download`); return response.data; } catch (error) { throw error; } }, // 删除文件 deleteFile: async (id: number): Promise => { try { const response = await axios.delete(`${API_BASE_URL}/upload/${id}`); return response.data; } catch (error) { throw error; } }, // 获取文件分类列表 getCategories: async (params?: { page?: number, pageSize?: number, search?: string }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/file-categories`, { params }); return response.data; } catch (error) { throw error; } }, // 创建文件分类 createCategory: async (data: Partial): Promise => { try { const response = await axios.post(`${API_BASE_URL}/file-categories`, data); return response.data; } catch (error) { throw error; } }, // 更新文件分类 updateCategory: async (id: number, data: Partial): Promise => { try { const response = await axios.put(`${API_BASE_URL}/file-categories/${id}`, data); return response.data; } catch (error) { throw error; } }, // 删除文件分类 deleteCategory: async (id: number): Promise => { try { const response = await axios.delete(`${API_BASE_URL}/file-categories/${id}`); return response.data; } catch (error) { throw error; } } }; // // 添加图表类型定义(从大屏移植) // interface CategoryChartData { // 设备分类: string; // 设备数: number; // } // interface CategoryChartDataWithPercent extends CategoryChartData { // 百分比: string; // } // interface OnlineRateChartData { // time_interval: string; // online_devices: number; // total_devices: number; // } // interface StateChartData { // 资产流转: string; // 设备数: number; // } // interface StateChartDataWithPercent extends StateChartData { // 百分比: string; // } // interface AlarmChartData { // time_interval: string; // total_devices: number; // } // 统一图表数据查询函数 export const chartQueryFns = { // 资产分类数据查询 fetchCategoryData: async (): Promise => { const res = await axios.get(`${API_BASE_URL}/big/zichan_category_chart`); // 预先计算百分比 const data = res.data; const total = data.reduce((sum: number, item: CategoryChartData) => sum + item['设备数'], 0); // 为每个数据项添加百分比字段 return data.map(item => ({ ...item, 百分比: total > 0 ? (item['设备数'] / total * 100).toFixed(1) : '0' })); }, // 在线率变化数据查询 fetchOnlineRateData: async (params?: { created_at_gte?: string; created_at_lte?: string; dimension?: string; }): Promise => { // 可选参数 // const params = { // created_at_gte: dayjs().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss'), // created_at_lte: dayjs().format('YYYY-MM-DD HH:mm:ss'), // dimension: 'day' // }; const res = await axios.get(`${API_BASE_URL}/big/zichan_online_rate_chart`, { params }); return res.data; }, // 资产流转状态数据查询 fetchStateData: async (): Promise => { const res = await axios.get(`${API_BASE_URL}/big/zichan_state_chart`); // 预先计算百分比 const data = res.data; const total = data.reduce((sum: number, item: StateChartData) => sum + item['设备数'], 0); // 为每个数据项添加百分比字段 return data.map(item => ({ ...item, 百分比: total > 0 ? (item['设备数'] / total * 100).toFixed(1) : '0' })); }, // 告警数据变化查询 fetchAlarmData: async (params?: { created_at_gte?: string; created_at_lte?: string; dimension?: string; }): Promise => { // 可选参数 // const params = { // created_at_gte: dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss'), // created_at_lte: dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss'), // dimension: 'hour' // }; const res = await axios.get(`${API_BASE_URL}/big/zichan_alarm_chart`, { params }); return res.data; } }; // Theme API 响应类型 export interface ThemeSettingsResponse { message: string; data: ThemeSettings; } // Theme API 定义 export const ThemeAPI = { // 获取主题设置 getThemeSettings: async (): Promise => { try { const response = await axios.get(`${API_BASE_URL}/theme`); return response.data.data; } catch (error) { throw error; } }, // 更新主题设置 updateThemeSettings: async (themeData: Partial): Promise => { try { const response = await axios.put(`${API_BASE_URL}/theme`, themeData); return response.data.data; } catch (error) { throw error; } }, // 重置主题设置 resetThemeSettings: async (): Promise => { try { const response = await axios.post(`${API_BASE_URL}/theme/reset`); return response.data.data; } catch (error) { throw error; } } }; // 图表数据API接口类型 interface ChartDataResponse { message: string; data: T; } interface UserActivityData { date: string; count: number; } interface FileUploadsData { month: string; count: number; } interface FileTypesData { type: string; value: number; } interface DashboardOverviewData { userCount: number; fileCount: number; articleCount: number; todayLoginCount: number; } // 图表数据API export const ChartAPI = { // 获取用户活跃度数据 getUserActivity: async (): Promise> => { try { const response = await axios.get(`${API_BASE_URL}/charts/user-activity`); return response.data; } catch (error) { throw error; } }, // 获取文件上传统计数据 getFileUploads: async (): Promise> => { try { const response = await axios.get(`${API_BASE_URL}/charts/file-uploads`); return response.data; } catch (error) { throw error; } }, // 获取文件类型分布数据 getFileTypes: async (): Promise> => { try { const response = await axios.get(`${API_BASE_URL}/charts/file-types`); return response.data; } catch (error) { throw error; } }, // 获取仪表盘概览数据 getDashboardOverview: async (): Promise> => { try { const response = await axios.get(`${API_BASE_URL}/charts/dashboard-overview`); return response.data; } catch (error) { throw error; } } }; // 地图相关API的接口类型定义 export interface LoginLocationResponse { message: string; data: LoginLocation[]; } export interface LoginLocationDetailResponse { message: string; data: LoginLocationDetail; } export interface LoginLocationUpdateResponse { message: string; data: LoginLocationDetail; } // 地图相关API export const MapAPI = { // 获取地图标记点数据 getMarkers: async (params?: { startTime?: string; endTime?: string; userId?: number }): Promise => { try { const response = await axios.get(`${API_BASE_URL}/map/markers`, { params }); return response.data; } catch (error) { throw error; } }, // 获取登录位置详情 getLocationDetail: async (locationId: number): Promise => { try { const response = await axios.get(`${API_BASE_URL}/map/location/${locationId}`); return response.data; } catch (error) { throw error; } }, // 更新登录位置信息 updateLocation: async (locationId: number, data: { longitude: number; latitude: number; location_name?: string; }): Promise => { try { const response = await axios.put(`${API_BASE_URL}/map/location/${locationId}`, data); return response.data; } catch (error) { throw error; } } }; // 系统设置API响应类型 interface SystemSettingsResponse { message: string; data: SystemSetting[]; } // 系统设置API export const SystemAPI = { // 获取所有系统设置 getSettings: async (): Promise => { try { const response = await axios.get(`${API_BASE_URL}/settings`); return response.data.data; } catch (error) { throw error; } }, // 获取指定分组的系统设置 getSettingsByGroup: async (group: string): Promise => { try { const response = await axios.get(`${API_BASE_URL}/settings/group/${group}`); return response.data.data; } catch (error) { throw error; } }, // 更新系统设置 updateSettings: async (settings: Partial[]): Promise => { try { const response = await axios.put(`${API_BASE_URL}/settings`, settings); return response.data.data; } catch (error) { throw error; } }, // 重置系统设置 resetSettings: async (): Promise => { try { const response = await axios.post(`${API_BASE_URL}/settings/reset`); return response.data.data; } catch (error) { throw error; } } };