feat(@vben/web-antd): 新增工牌出入轨迹页面
This commit is contained in:
112
apps/web-antd/src/api/ops/trajectory/index.ts
Normal file
112
apps/web-antd/src/api/ops/trajectory/index.ts
Normal file
@@ -0,0 +1,112 @@
|
||||
import { requestClient } from '#/api/request';
|
||||
|
||||
// ==================== 类型定义 ====================
|
||||
|
||||
export namespace OpsTrajectoryApi {
|
||||
/** 出入事件离开原因 */
|
||||
export type LeaveReason = 'AREA_SWITCH' | 'DEVICE_OFFLINE' | 'SIGNAL_LOSS';
|
||||
|
||||
/** 工牌设备下拉项 */
|
||||
export interface BadgeOption {
|
||||
deviceId: number;
|
||||
deviceKey: string;
|
||||
nickname: string;
|
||||
personName?: string;
|
||||
}
|
||||
|
||||
/** 轨迹分页查询参数 */
|
||||
export interface TrajectoryPageQuery {
|
||||
deviceId?: number;
|
||||
areaId?: number;
|
||||
enterTime?: string[]; // [startTime, endTime]
|
||||
pageNo?: number;
|
||||
pageSize?: number;
|
||||
}
|
||||
|
||||
/** 轨迹记录 */
|
||||
export interface TrajectoryRecord {
|
||||
id: number;
|
||||
deviceId: number;
|
||||
deviceName: string;
|
||||
nickname: string;
|
||||
areaId: number;
|
||||
areaName: string;
|
||||
buildingName?: string;
|
||||
floorNo?: number;
|
||||
beaconMac?: string;
|
||||
enterTime: string;
|
||||
leaveTime?: string;
|
||||
durationSeconds?: number;
|
||||
leaveReason?: LeaveReason;
|
||||
enterRssi?: number;
|
||||
}
|
||||
|
||||
/** 时间线查询参数 */
|
||||
export interface TimelineQuery {
|
||||
deviceId: number;
|
||||
date: string; // yyyy-MM-dd
|
||||
}
|
||||
|
||||
/** 设备当前位置 */
|
||||
export interface CurrentLocation {
|
||||
deviceId: number;
|
||||
areaId?: number;
|
||||
areaName?: string;
|
||||
enterTime?: number; // 毫秒时间戳
|
||||
beaconMac?: string;
|
||||
inArea: boolean;
|
||||
}
|
||||
|
||||
/** 轨迹统计摘要 */
|
||||
export interface TrajectorySummary {
|
||||
totalEvents: number;
|
||||
uniqueAreaCount: number;
|
||||
onlineDurationSeconds: number;
|
||||
firstOnlineTime?: string;
|
||||
lastOnlineTime?: string;
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== API 接口 ====================
|
||||
|
||||
/** 获取工牌设备下拉列表 */
|
||||
export function getBadgeList(keyword?: string) {
|
||||
return requestClient.get<OpsTrajectoryApi.BadgeOption[]>(
|
||||
'/ops/trajectory/badge-list',
|
||||
{ params: keyword ? { keyword } : undefined },
|
||||
);
|
||||
}
|
||||
|
||||
/** 分页查询轨迹记录 */
|
||||
export function getTrajectoryPage(
|
||||
params: OpsTrajectoryApi.TrajectoryPageQuery,
|
||||
) {
|
||||
return requestClient.get<{
|
||||
list: OpsTrajectoryApi.TrajectoryRecord[];
|
||||
total: number;
|
||||
}>('/ops/trajectory/page', { params });
|
||||
}
|
||||
|
||||
/** 获取某设备某天的时间线 */
|
||||
export function getTrajectoryTimeline(params: OpsTrajectoryApi.TimelineQuery) {
|
||||
return requestClient.get<OpsTrajectoryApi.TrajectoryRecord[]>(
|
||||
'/ops/trajectory/timeline',
|
||||
{ params },
|
||||
);
|
||||
}
|
||||
|
||||
/** 获取设备实时位置 */
|
||||
export function getCurrentLocation(deviceId: number) {
|
||||
return requestClient.get<OpsTrajectoryApi.CurrentLocation>(
|
||||
'/ops/trajectory/current-location',
|
||||
{ params: { deviceId } },
|
||||
);
|
||||
}
|
||||
|
||||
/** 获取轨迹统计摘要 */
|
||||
export function getTrajectorySummary(deviceId: number, date: string) {
|
||||
return requestClient.get<OpsTrajectoryApi.TrajectorySummary>(
|
||||
'/ops/trajectory/summary',
|
||||
{ params: { deviceId, date } },
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user