diff --git a/src/apis/model/biz/entity/index.ts b/src/apis/model/biz/entity/index.ts index 764883a..9acbc8c 100644 --- a/src/apis/model/biz/entity/index.ts +++ b/src/apis/model/biz/entity/index.ts @@ -15,4 +15,5 @@ export * from './alarm'; export * from './log'; export * from './other'; export * from './storage'; +export * from './upper-ndm'; export * from './video'; diff --git a/src/apis/model/biz/entity/upper-ndm/index.ts b/src/apis/model/biz/entity/upper-ndm/index.ts new file mode 100644 index 0000000..f40cabb --- /dev/null +++ b/src/apis/model/biz/entity/upper-ndm/index.ts @@ -0,0 +1,2 @@ +export * from './sync-camera-result'; +export * from './sync-camera-result-detail'; diff --git a/src/apis/model/biz/entity/upper-ndm/sync-camera-result-detail.ts b/src/apis/model/biz/entity/upper-ndm/sync-camera-result-detail.ts new file mode 100644 index 0000000..3247e33 --- /dev/null +++ b/src/apis/model/biz/entity/upper-ndm/sync-camera-result-detail.ts @@ -0,0 +1,6 @@ +export interface SyncCameraResultDetail { + name: string; + deviceId: string; + ipAddress: string; + gbCode: string; +} diff --git a/src/apis/model/biz/entity/upper-ndm/sync-camera-result.ts b/src/apis/model/biz/entity/upper-ndm/sync-camera-result.ts new file mode 100644 index 0000000..c311888 --- /dev/null +++ b/src/apis/model/biz/entity/upper-ndm/sync-camera-result.ts @@ -0,0 +1,10 @@ +import type { SyncCameraResultDetail } from './sync-camera-result-detail'; + +export interface SyncCameraResult { + stationCode: string; + startTime: string; + endTime: string; + insertList: SyncCameraResultDetail[]; + updateList: SyncCameraResultDetail[]; + deleteList: SyncCameraResultDetail[]; +} diff --git a/src/components/station-page/index.ts b/src/components/station-page/index.ts index 878e9be..36fbc8f 100644 --- a/src/components/station-page/index.ts +++ b/src/components/station-page/index.ts @@ -4,3 +4,4 @@ export { default as DeviceParamsConfigModal } from './device-params-config-modal export { default as OfflineDeviceDetailModal } from './offline-device-detail-modal.vue'; export { default as RecordCheckExportModal } from './record-check-export-modal.vue'; export { default as StationCard } from './station-card.vue'; +export { default as SyncCameraResultModal } from './sync-camera-result-modal.vue'; diff --git a/src/components/station-page/sync-camera-result-modal.vue b/src/components/station-page/sync-camera-result-modal.vue new file mode 100644 index 0000000..5aa0ff6 --- /dev/null +++ b/src/components/station-page/sync-camera-result-modal.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/composables/stomp/index.ts b/src/composables/stomp/index.ts index cd77973..2cc88ae 100644 --- a/src/composables/stomp/index.ts +++ b/src/composables/stomp/index.ts @@ -1,5 +1,5 @@ -import type { NdmDeviceAlarmLogResultVO } from '@/apis'; -import { TOPIC_DEVICE_ALARM } from '@/constants'; +import type { NdmDeviceAlarmLogResultVO, Station, SyncCameraResult } from '@/apis'; +import { TOPIC_DEVICE_ALARM, SYNC_CAMERA_STATUS_TOPIC } from '@/constants'; import { useAlarmStore } from '@/stores'; import { Client } from '@stomp/stompjs'; import { destr } from 'destr'; @@ -19,6 +19,8 @@ export const useStompClient = () => { const { unreadAlarmCount } = storeToRefs(alarmStore); const stompClient = ref(null); + const syncCameraResult = ref>({}); + onMounted(() => { stompClient.value = new Client({ brokerURL: getBrokerUrl(), @@ -33,10 +35,15 @@ export const useStompClient = () => { unreadAlarmCount.value++; } }); + stompClient.value?.subscribe(SYNC_CAMERA_STATUS_TOPIC, (message) => { + const { stationCode, startTime, endTime, insertList, updateList, deleteList } = destr(message.body); + syncCameraResult.value[stationCode] = { stationCode, startTime, endTime, insertList, updateList, deleteList }; + }); }, onDisconnect: () => { console.log('Stomp连接断开'); stompClient.value?.unsubscribe(TOPIC_DEVICE_ALARM); + stompClient.value?.unsubscribe(SYNC_CAMERA_STATUS_TOPIC); }, onStompError: (frame) => { console.log('Stomp错误', frame); @@ -57,5 +64,10 @@ export const useStompClient = () => { return { stompClient, + + syncCameraResult, + afterCheckSyncCamera: () => { + syncCameraResult.value = {}; + }, }; }; diff --git a/src/constants/stomp.ts b/src/constants/stomp.ts index 6360065..5711fa7 100644 --- a/src/constants/stomp.ts +++ b/src/constants/stomp.ts @@ -1 +1,3 @@ export const TOPIC_DEVICE_ALARM = '/topic/deviceAlarm'; + +export const SYNC_CAMERA_STATUS_TOPIC = '/topic/syncCameraStatus'; diff --git a/src/layouts/app-layout.vue b/src/layouts/app-layout.vue index e4993a0..742d9b0 100644 --- a/src/layouts/app-layout.vue +++ b/src/layouts/app-layout.vue @@ -5,7 +5,7 @@ function renderIcon(icon: Component): () => VNode {