From 1c7a6035f34c866f95b11681a7ffdfd0eb951076 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 20 Aug 2026 19:42:53 +0800 Subject: [PATCH] 11 --- src/api/collection/door.ts | 44 ++ src/api/collection/videoPlatform.ts | 83 +++ src/api/wl/sceneLinkage.ts | 16 + src/components/DraggableOrgTree/index.vue | 74 ++- src/components/Select/SelectTreeChannel.vue | 42 +- src/layout/component/columnsAside.vue | 16 +- src/layout/navBars/breadcrumb/breadcrumb.vue | 4 +- src/layout/navBars/breadcrumb/search.vue | 5 +- src/layout/navBars/tagsView/tagsView.vue | 12 +- src/layout/navMenu/horizontal.vue | 6 +- src/layout/navMenu/subItem.vue | 6 +- src/layout/navMenu/vertical.vue | 6 +- src/layout/routerView/link.vue | 2 +- src/router/backEnd.ts | 3 + src/router/route.ts | 1 + src/utils/other.ts | 2 +- .../system/role/components/role-list.vue | 123 ++--- src/views/admin/system/role/permession.vue | 77 ++- src/views/alarm/alarm-record/index.vue | 21 +- src/views/car/carRecord/index.vue | 2 + .../car/components/gate-remote-list.vue | 5 +- src/views/collection/car/display.vue | 58 ++- src/views/collection/door/access.vue | 43 ++ .../door/components/door-device-list.vue | 143 ++++++ .../door/components/door-log-list.vue | 59 +++ .../door/components/door-record-list.vue | 142 ++++++ .../door/components/door-remote-list.vue | 105 ++++ src/views/collection/door/display.vue | 147 ++++++ .../components/platform-resource-dialog.vue | 473 ++++++++++++++++++ src/views/collection/video/platform.vue | 171 ++++++- src/views/device/components/camera-list.vue | 22 +- src/views/device/components/deviceForm.vue | 12 +- src/views/home/shortcut/index.vue | 2 +- .../wl/cj/components/scene-config-form.vue | 119 +++++ src/views/wl/cj/config.vue | 96 ++++ src/views/wl/cj/record.vue | 90 ++++ src/views/wl/video/intelligence.vue | 88 ++++ src/views/wl/video/stream.vue | 7 + 38 files changed, 2110 insertions(+), 217 deletions(-) create mode 100644 src/api/collection/door.ts create mode 100644 src/api/wl/sceneLinkage.ts create mode 100644 src/views/collection/door/access.vue create mode 100644 src/views/collection/door/components/door-device-list.vue create mode 100644 src/views/collection/door/components/door-log-list.vue create mode 100644 src/views/collection/door/components/door-record-list.vue create mode 100644 src/views/collection/door/components/door-remote-list.vue create mode 100644 src/views/collection/door/display.vue create mode 100644 src/views/collection/video/components/platform-resource-dialog.vue create mode 100644 src/views/wl/cj/components/scene-config-form.vue create mode 100644 src/views/wl/cj/config.vue create mode 100644 src/views/wl/cj/record.vue create mode 100644 src/views/wl/video/intelligence.vue create mode 100644 src/views/wl/video/stream.vue 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 @@