diff --git a/src/api/collection/door.ts b/src/api/collection/door.ts new file mode 100644 index 0000000..a91beba --- /dev/null +++ b/src/api/collection/door.ts @@ -0,0 +1,44 @@ +import request from "/@/utils/request"; + +export interface DoorDashboard { + 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/door/access/device/page", + method: "get", + params: query, + }); +} + +export function syncDevices() { + return request({ + url: "/admin/collection/door/access/device/sync", + method: "post", + timeout: 120000, + }); +} + +export function remoteDeviceList(params?: any) { + return request({ + url: "/admin/collection/door/display/device/list", + method: "get", + params, + }); +} + +export function dashboard() { + return request({ + url: "/admin/collection/door/display/dashboard", + method: "get", + }); +} diff --git a/src/api/collection/videoPlatform.ts b/src/api/collection/videoPlatform.ts index 0cacd75..08b7a7d 100644 --- a/src/api/collection/videoPlatform.ts +++ b/src/api/collection/videoPlatform.ts @@ -29,6 +29,54 @@ export interface PlatformSyncResult extends PlatformStatus { errors: string[]; } +/** 平台资源类型 */ +export type PlatformResourceType = "DEVICE" | "CHANNEL"; + +/** 平台资源明细视图 */ +export type PlatformDetailViewType = "REMOTE" | "LOCAL" | "DIFFERENCE" | "ONLINE"; + +/** 平台资源明细查询参数 */ +export interface PlatformDetailQuery { + resourceType: PlatformResourceType; + viewType: PlatformDetailViewType; + current: number; + size: number; +} + +/** ICC 或本地的设备、通道明细项 */ +export interface PlatformDetailItem { + code: string; + name: string; + deviceCode?: string; + type?: string; + manufacturer?: string; + ownerCode?: string; + ip?: string; + online?: boolean | null; + source: "ICC" | "LOCAL"; + differenceType?: "REMOTE_ONLY" | "LOCAL_ONLY"; +} + +/** 平台资源明细分页结果 */ +export interface PlatformDetailResult { + resourceType: PlatformResourceType; + viewType: PlatformDetailViewType; + current: number; + size: number; + total: number; + remoteTotal: number | null; + localTotal: number | null; + remoteOnlyCount: number; + localOnlyCount: number; + matchedCount: number; + records: PlatformDetailItem[]; +} + +/** 设备差异处理参数;编码为空时处理当前全部同类差异 */ +export interface PlatformDeviceDifferenceAction { + deviceCodes?: string[]; +} + export function getStatus() { return request({ url: "/admin/third/platform/status", @@ -43,3 +91,38 @@ export function syncPlatform() { timeout: 300000, }); } + +/** + * 分页查询 ICC、本地同步、在线或双方差异的设备与通道明细 + */ +export function getPlatformDetail(params: PlatformDetailQuery) { + return request({ + url: "/admin/third/platform/detail", + method: "get", + params, + }); +} + +/** + * 将 ICC 存在但本地缺少的设备同步到本地 + */ +export function syncMissingDevices(data: PlatformDeviceDifferenceAction = {}) { + return request({ + url: "/admin/third/platform/device/sync-missing", + method: "post", + data, + timeout: 300000, + }); +} + +/** + * 删除经 ICC 实时复核后仍属于本地多余的同步设备 + */ +export function deleteLocalExtraDevices(data: PlatformDeviceDifferenceAction = {}) { + return request({ + url: "/admin/third/platform/device/local-extra", + method: "delete", + data, + timeout: 300000, + }); +} diff --git a/src/api/wl/sceneLinkage.ts b/src/api/wl/sceneLinkage.ts new file mode 100644 index 0000000..ade5ace --- /dev/null +++ b/src/api/wl/sceneLinkage.ts @@ -0,0 +1,16 @@ +import request from "/@/utils/request" + +export const fetchConfigList = (query?: any) => request({ url: "/admin/sceneLinkage/config/page", method: "get", params: query }) +export const getConfig = (id: string | number) => request({ url: `/admin/sceneLinkage/config/${id}`, method: "get" }) +export const addConfig = (data: any) => request({ url: "/admin/sceneLinkage/config", method: "post", data }) +export const updateConfig = (data: any) => request({ url: "/admin/sceneLinkage/config", method: "put", data }) +export const updateConfigStatus = (id: string | number, status: string) => request({ url: "/admin/sceneLinkage/config/status", method: "put", params: { id, status } }) +export const deleteConfigs = (ids: Array) => request({ url: "/admin/sceneLinkage/config", method: "delete", data: ids }) + +export const fetchTriggerList = (query?: any) => { + const params = { ...query } + if (params.eventTimeList?.length === 2) [params.startTime, params.endTime] = params.eventTimeList + delete params.eventTimeList + return request({ url: "/admin/sceneLinkage/trigger/page", method: "get", params }) +} +export const getTrigger = (id: string | number) => request({ url: `/admin/sceneLinkage/trigger/${id}`, method: "get" }) diff --git a/src/components/DraggableOrgTree/index.vue b/src/components/DraggableOrgTree/index.vue index e850970..be84acb 100644 --- a/src/components/DraggableOrgTree/index.vue +++ b/src/components/DraggableOrgTree/index.vue @@ -1,10 +1,10 @@