- 工单仪表盘:趋势图改为当月vs上月对比,漏斗图改为状态分布环形饼图,新增工牌队列统计图表,移除无用的 hourly/heatmap 死代码 - 客流统计:小时趋势和趋势图支持日期选择器,移除昨日对比线,API 支持日期参数 - 工作台:紧急任务过滤已取消和已完成状态,在岗人员仅显示在岗数 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
122 lines
3.1 KiB
TypeScript
122 lines
3.1 KiB
TypeScript
import { requestClient } from '#/api/request';
|
|
|
|
// ==================== 类型定义 ====================
|
|
|
|
/** 实时客流区域信息 */
|
|
export interface TrafficAreaItem {
|
|
areaId: number;
|
|
areaName: string;
|
|
todayIn: number;
|
|
todayOut: number;
|
|
currentOccupancy: number;
|
|
deviceCount: number;
|
|
}
|
|
|
|
/** 全局实时客流响应 */
|
|
export interface TrafficRealtimeResp {
|
|
totalIn: number;
|
|
totalOut: number;
|
|
currentOccupancy: number;
|
|
areas: TrafficAreaItem[];
|
|
hourlyTrend: {
|
|
hours: string[];
|
|
inData: number[];
|
|
outData: number[];
|
|
};
|
|
yesterdayHourlyTrend?: {
|
|
hours: string[];
|
|
inData: number[];
|
|
outData: number[];
|
|
};
|
|
message?: string; // 提示信息,如"该区域暂未配置客流设备"
|
|
}
|
|
|
|
/** 客流趋势响应(全局/设备/区域通用) */
|
|
export interface TrafficTrendResp {
|
|
deviceId?: null | number;
|
|
areaId?: null | number;
|
|
dates: string[];
|
|
inData: number[];
|
|
outData: number[];
|
|
netData: number[];
|
|
totalIn: number;
|
|
totalOut: number;
|
|
}
|
|
|
|
/** 设备/区域实时客流响应(单条) */
|
|
export interface DeviceTrafficRealtimeResp {
|
|
deviceId: number;
|
|
deviceName: null | string;
|
|
areaId: null | number;
|
|
areaName: null | string;
|
|
todayIn: number;
|
|
todayOut: number;
|
|
currentOccupancy: number;
|
|
hourlyTrend: {
|
|
hours: string[];
|
|
inData: number[];
|
|
outData: number[];
|
|
};
|
|
yesterdayHourlyTrend?: {
|
|
hours: string[];
|
|
inData: number[];
|
|
outData: number[];
|
|
};
|
|
}
|
|
|
|
/** 趋势查询参数 */
|
|
export interface TrafficTrendQuery {
|
|
deviceId?: number;
|
|
areaId?: number;
|
|
areaIds?: string; // 逗号分隔的区域ID列表
|
|
startDate?: string; // yyyy-MM-dd
|
|
endDate?: string; // yyyy-MM-dd
|
|
}
|
|
|
|
// ==================== 迁移接口(路径变更) ====================
|
|
|
|
/** 获取全局实时客流数据 */
|
|
export function getTrafficRealtime(date?: string) {
|
|
return requestClient.get<TrafficRealtimeResp>('/ops/traffic/realtime', {
|
|
params: date ? { date } : undefined,
|
|
});
|
|
}
|
|
|
|
/** 获取全局近7天客流趋势 */
|
|
export function getTrafficTrend(params?: TrafficTrendQuery) {
|
|
return requestClient.get<TrafficTrendResp>('/ops/traffic/trend', {
|
|
params,
|
|
});
|
|
}
|
|
|
|
// ==================== 新增接口 ====================
|
|
|
|
/** 获取单设备实时客流 */
|
|
export function getDeviceRealtime(deviceId: number) {
|
|
return requestClient.get<DeviceTrafficRealtimeResp>(
|
|
'/ops/traffic/device/realtime',
|
|
{ params: { deviceId } },
|
|
);
|
|
}
|
|
|
|
/** 获取区域实时客流(汇总,返回与全局一致的结构) */
|
|
export function getAreaRealtime(areaIds: number[], date?: string) {
|
|
return requestClient.get<TrafficRealtimeResp>('/ops/traffic/area/realtime', {
|
|
params: { areaIds: areaIds.join(','), ...(date ? { date } : {}) },
|
|
});
|
|
}
|
|
|
|
/** 获取单设备客流趋势 */
|
|
export function getDeviceTrend(params: TrafficTrendQuery) {
|
|
return requestClient.get<TrafficTrendResp>('/ops/traffic/device/trend', {
|
|
params,
|
|
});
|
|
}
|
|
|
|
/** 获取区域客流趋势(汇总) */
|
|
export function getAreaTrend(params: TrafficTrendQuery) {
|
|
return requestClient.get<TrafficTrendResp>('/ops/traffic/area/trend', {
|
|
params,
|
|
});
|
|
}
|