|
|
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);
|
|
|
};
|