diff --git a/src/api/collection/gate.ts b/src/api/collection/gate.ts new file mode 100644 index 0000000..6a4e984 --- /dev/null +++ b/src/api/collection/gate.ts @@ -0,0 +1,84 @@ +import request from "/@/utils/request"; + +export interface GateDashboard { + deviceTotal: number; + onlineTotal: number; + offlineTotal: number; + todayEnterTotal: number; + todayExitTotal: number; + unidentifiedTotal: number; + iccConnected: boolean; + message: string; + checkedAt: string; +} + +export function devicePage(query: any) { + return request({ + url: "/admin/collection/car/access/device/page", + method: "get", + params: query, + }); +} + +export function getDevice(id: string) { + return request({ + url: `/admin/collection/car/access/device/${id}`, + method: "get", + }); +} + +export function addDevice(data: any) { + return request({ + url: "/admin/collection/car/access/device", + method: "post", + data, + }); +} + +export function updateDevice(data: any) { + return request({ + url: "/admin/collection/car/access/device", + method: "put", + data, + }); +} + +export function pushDevice(id: string) { + return request({ + url: `/admin/collection/car/access/device/${id}/push`, + method: "post", + timeout: 120000, + }); +} + +export function removeDevice(id: string, deleteRemote = false) { + return request({ + url: `/admin/collection/car/access/device/${id}`, + method: "delete", + params: { deleteRemote }, + timeout: deleteRemote ? 120000 : 50000, + }); +} + +export function remoteDeviceList(params?: any) { + return request({ + url: "/admin/collection/car/display/device/list", + method: "get", + params, + }); +} + +export function operationPage(params?: any) { + return request({ + url: "/admin/collection/car/display/operation/page", + method: "get", + params, + }); +} + +export function dashboard() { + return request({ + url: "/admin/collection/car/display/dashboard", + method: "get", + }); +} diff --git a/src/api/collection/videoPlatform.ts b/src/api/collection/videoPlatform.ts new file mode 100644 index 0000000..0cacd75 --- /dev/null +++ b/src/api/collection/videoPlatform.ts @@ -0,0 +1,45 @@ +import request from "/@/utils/request"; + +export interface PlatformStatus { + version: string; + releaseDate: string; + connected: boolean; + remoteDeviceCount: number | null; + remoteChannelCount: number | null; + localDeviceCount: number; + localChannelCount: number; + onlineDeviceCount: number; + deviceDifference: number | null; + channelDifference: number | null; + checkedAt: string; + message: string; +} + +export interface PlatformSyncResult extends PlatformStatus { + success: boolean; + startedAt: string; + finishedAt: string; + durationMillis: number; + deviceAddedCount: number; + deviceUpdatedCount: number; + deviceFailedCount: number; + channelAddedCount: number; + channelUpdatedCount: number; + channelFailedCount: number; + errors: string[]; +} + +export function getStatus() { + return request({ + url: "/admin/third/platform/status", + method: "get", + }); +} + +export function syncPlatform() { + return request({ + url: "/admin/third/platform/sync", + method: "post", + timeout: 300000, + }); +} diff --git a/src/api/device/deviceCamera.ts b/src/api/device/deviceCamera.ts index a739689..92004fc 100644 --- a/src/api/device/deviceCamera.ts +++ b/src/api/device/deviceCamera.ts @@ -1,5 +1,12 @@ import request from "/@/utils/request" +export function getToken() { + return request({ + url: '/admin/third/camera/getToken', + method: 'get' + }) +} + export function getRtspVideo(query: any) { return request({ url: '/admin/third/camera/getRtspVideo', @@ -14,4 +21,4 @@ export function getRtspVideoList(query: any) { method: 'get', params: query }) - } \ No newline at end of file + } diff --git a/src/api/device/deviceStatistics.ts b/src/api/device/deviceStatistics.ts new file mode 100644 index 0000000..011785e --- /dev/null +++ b/src/api/device/deviceStatistics.ts @@ -0,0 +1,159 @@ +import request from "/@/utils/request"; + +/** + * 单类设备的运行统计。 + */ +export interface DeviceStatusDetail { + deviceName?: string; + deviceCategory?: string; + total: number; + online: number; + offline: number; + onlineRate: number; +} + +/** + * 设备总览统计,分别包含总量、监控、门禁和道闸数据。 + */ +export interface DeviceTotalData { + total: DeviceStatusDetail; + camera: DeviceStatusDetail; + door: DeviceStatusDetail; + gate: DeviceStatusDetail; +} + +/** + * 设备在线率趋势数据。 + */ +export interface DeviceOnlineTrendItem { + recordTime: string; + onlineDeviceTotalRate: number; +} + +/** + * 区域设备数量统计。 + */ +export interface AreaDeviceStatisticsItem { + areaName: string; + totalCount: number | string; + onlineCount: number | string; + offlineCount: number | string; +} + +/** + * 设备告警数量统计。 + */ +export interface DeviceAlarmTotalData { + todayAlarmCount: number; + alarmCount: number; +} + +/** + * 设备告警趋势数据。 + */ +export interface DeviceAlarmTrendItem { + alarmCount: number; + time: string; + weekStr?: string; +} + +/** + * 实时告警摘要行。 + */ +export interface DeviceAlarmSummaryItem { + id?: string | number; + alarmCode?: string; + alarmDate?: string; + alarmPosition?: string; + alarmType?: string; + alarmTypeName?: string; + alarmStat?: string; + handleStat?: string; + alarmGrade?: string; + deviceName?: string; +} + +/** + * 统计接口通用的时间范围参数。 + */ +export interface StatisticsDateRange { + recordListList?: string[]; + alarmDateList?: string[]; +} + +/** + * 实时告警摘要分页查询参数。 + */ +export interface DeviceAlarmPageQuery extends StatisticsDateRange { + current: number; + size: number; + alarmCode?: string; + deviceName?: string; +} + +/** + * 获取设备数量及在线状态总览。 + */ +export function getDeviceTotal() { + return request({ + url: "/admin/total/plan/total-device", + method: "get", + }); +} + +/** + * 获取设备在线率趋势。 + */ +export function getDeviceOnlineTrend(data: StatisticsDateRange) { + return request({ + url: "/admin/total/plan/device-offline-rate", + method: "post", + data, + }); +} + +/** + * 获取设备区域数量排行。 + */ +export function getAreaDeviceStatistics() { + return request({ + url: "/admin/total/plan/camera-area-total-device", + method: "get", + }); +} + +/** + * 获取今日告警数和历史告警总数。 + */ +export function getDeviceAlarmTotal() { + return request({ + url: "/admin/alarmRecord/total/num-total", + method: "post", + }); +} + +/** + * 获取设备告警趋势。 + */ +export function getDeviceAlarmTrend(data: StatisticsDateRange) { + return request({ + url: "/admin/alarmRecord/total/alarm-by-time", + method: "post", + data, + }); +} + +/** + * 获取最新设备告警摘要。 + */ +export function getDeviceAlarmPage(data: DeviceAlarmPageQuery) { + return request({ + url: "/admin/alarmRecord/total/page", + method: "post", + params: { + current: data.current, + size: data.size, + }, + data, + }); +} diff --git a/src/components/rtsp-plugin-video/video-plugin.vue b/src/components/rtsp-plugin-video/video-plugin.vue index d3b95e5..c267d43 100644 --- a/src/components/rtsp-plugin-video/video-plugin.vue +++ b/src/components/rtsp-plugin-video/video-plugin.vue @@ -1,5 +1,5 @@