import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { DashboardVO, RealtimeStats, LocationTreeNode, SuccessRateTrend, StatisticsOverview, AlarmStatVO, DeviceLatestRecordVO } from './types'; // ==================== 新增接口(按需刷新) ==================== /** * 【接口1】获取实时统计数据(按秒刷新) * 包含:顶部统计(设备数量、在线数量、离线数量、告警数量)+ 告警统计列表 * * @param alarmLimit 告警列表限制数量(可选,不传则返回全部,供滚动显示) */ export const getRealtimeStats = (alarmLimit?: number): AxiosPromise => { return request({ url: '/rfid/dashboard/realtime', method: 'get', params: alarmLimit ? { alarmLimit } : {} }); }; /** * 【接口2】获取位置树(含设备信息) * 返回完整的位置树结构,位置类型为 3 时表示设备节点 * 不返回读取记录数据,具体记录由 WebSocket 实时推送 * 前端通过 deviceId 匹配 WebSocket 数据 */ export const getLocationTree = (): AxiosPromise => { return request({ url: '/rfid/dashboard/deviceStatus', method: 'get' }); }; /** * 【接口3】获取成功率趋势(按小时统计) * 不需要频繁刷新 * 返回 24 条数据,每条包含今日和昨日的成功率 */ export const getSuccessRateTrends = (): AxiosPromise => { return request({ url: '/rfid/dashboard/successRate', method: 'get' }); }; /** * 【接口4】获取设备最新读取记录 * 返回每个设备的最新一条读取记录,包括设备ID、编号、最新条码和时间 */ export const getDeviceLatestRecords = (): AxiosPromise => { return request({ url: '/rfid/dashboard/deviceLatestRecords', method: 'get' }); }; // ==================== 原有接口(保留) ==================== /** * 获取完整看板数据 * * @param locationId 位置ID(可选) */ export const getDashboardData = (locationId?: number): AxiosPromise => { return request({ url: '/rfid/dashboard/data', method: 'get', params: { locationId } }); }; /** * 获取统计概览 */ export const getOverview = (): AxiosPromise => { return request({ url: '/rfid/dashboard/overview', method: 'get' }); }; /** * 获取告警统计列表 * * @param limit 限制数量(默认10条) */ export const getAlarmStats = (limit?: number): AxiosPromise => { return request({ url: '/rfid/dashboard/alarmStats', method: 'get', params: { limit } }); }; /** * 兼容老接口名称:getDashboardStats * 等价于 getDashboardData,便于逐步迁移老代码 */ export const getDashboardStats = (locationId?: number): AxiosPromise => { return getDashboardData(locationId); };