You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
2.9 KiB
TypeScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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