diff --git a/src/apis/domain/biz/diag/ndm-security-box-diag-info.ts b/src/apis/domain/biz/diag/ndm-security-box-diag-info.ts index 3798678..6b1ca07 100644 --- a/src/apis/domain/biz/diag/ndm-security-box-diag-info.ts +++ b/src/apis/domain/biz/diag/ndm-security-box-diag-info.ts @@ -12,8 +12,14 @@ export interface NdmSecurityBoxDiagInfo { ]; stCommonInfo?: { [key: string]: any; - 内存使用率?: string; - CPU使用率?: string; + 设备ID?: string; // 'NTBoxMetro' + 软件版本?: string; // 'V0101' + 设备厂商?: string; // 'NingTech' + 设备别名?: string; // 'SUN-IBOX' + 设备型号?: string; // 'SUN-IBOX' + 硬件版本?: string; // 'V0101' + 内存使用率?: string; // '18' + CPU使用率?: string; // '1' }; } diff --git a/src/apis/request/biz/other/ndm-security-box.ts b/src/apis/request/biz/other/ndm-security-box.ts index d437039..daafa39 100644 --- a/src/apis/request/biz/other/ndm-security-box.ts +++ b/src/apis/request/biz/other/ndm-security-box.ts @@ -93,22 +93,46 @@ export const probeSecurityBoxApi = async (ids: string[], options?: { stationCode unwrapVoidResponse(resp); }; -export const turnCitcuitStatusApi = async (ipAddress: string, circuitIndex: number, status: number, options?: { stationCode?: Station['code']; signal?: AbortSignal }) => { +// beidian安防箱切换空开状态 +export const turnCircuitStatusBeidianApi = async (community: string, ipAddress: string, circuitIndex: number, status: number, options?: { stationCode?: Station['code']; signal?: AbortSignal }) => { const { stationCode, signal } = options ?? {}; const client = stationCode ? ndmClient : userClient; const prefix = stationCode ? `/${stationCode}` : ''; const endpoint = `${prefix}/api/ndm/ndmSecurityBox/turnStatus`; - const resp = await client.post(endpoint, { community: 'public', ipAddress, circuit: `${circuitIndex}`, status }, { signal }); + const resp = await client.post(endpoint, { community, ipAddress, circuit: `${circuitIndex}`, status }, { signal }); const data = unwrapResponse(resp); return data; }; -export const rebootSecurityBoxApi = async (ipAddress: string, options?: { stationCode?: Station['code']; signal?: AbortSignal }) => { +// beidian安防箱重启 +export const rebootSecurityBoxBeidianApi = async (community: string, ipAddress: string, options?: { stationCode?: Station['code']; signal?: AbortSignal }) => { const { stationCode, signal } = options ?? {}; const client = stationCode ? ndmClient : userClient; const prefix = stationCode ? `/${stationCode}` : ''; const endpoint = `${prefix}/api/ndm/ndmSecurityBox/reboot`; - const resp = await client.post(endpoint, { community: 'public', ipAddress }, { signal }); + const resp = await client.post(endpoint, { community, ipAddress }, { signal }); + const data = unwrapResponse(resp); + return data; +}; + +// ningtech安防箱切换空开状态 +export const turnCircuitStatusNingTechApi = async (community: string, ipAddress: string, circuitIndex: number, status: number, options?: { stationCode?: Station['code']; signal?: AbortSignal }) => { + const { stationCode, signal } = options ?? {}; + const client = stationCode ? ndmClient : userClient; + const prefix = stationCode ? `/${stationCode}` : ''; + const endpoint = `${prefix}/api/ndm/ndmSecurityBox/turnStatusNingTech`; + const resp = await client.post(endpoint, { community, ipAddress, circuit: `${circuitIndex}`, status }, { signal }); + const data = unwrapResponse(resp); + return data; +}; + +// ningtech安防箱重启 +export const rebootSecurityBoxNingTechApi = async (community: string, ipAddress: string, options?: { stationCode?: Station['code']; signal?: AbortSignal }) => { + const { stationCode, signal } = options ?? {}; + const client = stationCode ? ndmClient : userClient; + const prefix = stationCode ? `/${stationCode}` : ''; + const endpoint = `${prefix}/api/ndm/ndmSecurityBox/rebootNingTech`; + const resp = await client.post(endpoint, { community, ipAddress }, { signal }); const data = unwrapResponse(resp); return data; }; diff --git a/src/components/device/device-card/components/current-diag/security-box-circuit-card.vue b/src/components/device/device-card/components/current-diag/security-box-circuit-card.vue index 792382e..35e507a 100644 --- a/src/components/device/device-card/components/current-diag/security-box-circuit-card.vue +++ b/src/components/device/device-card/components/current-diag/security-box-circuit-card.vue @@ -2,8 +2,6 @@ import { detailDeviceApi, probeDeviceApi, - rebootSecurityBoxApi, - turnCitcuitStatusApi, updateDeviceApi, type LinkDescription, type NdmDeviceResultVO, @@ -16,6 +14,7 @@ import { SecurityBoxCircuitLinkModal } from '@/components'; import { usePermission } from '@/composables'; import { SELECT_DEVICE_FN_INJECTION_KEY } from '@/constants'; import { PERMISSION_TYPE_LITERALS } from '@/enums'; +import { normalizeSecurityBoxWriteCommunity, dispatchRebootSecurityBoxApi, dispatchTurnCircuitStatusApi, normalizeSecurityBoxCircuitIndex } from '@/helpers'; import { useDeviceStore, useSettingStore } from '@/stores'; import { parseErrorFeedback } from '@/utils'; import { useMutation } from '@tanstack/vue-query'; @@ -31,6 +30,7 @@ import { computed, inject, ref, toRefs } from 'vue'; const props = defineProps<{ ndmDevice: NdmSecurityBoxResultVO; station: Station; + vendor?: string; circuits?: NdmSecurityBoxCircuit[]; }>(); @@ -44,7 +44,7 @@ const { useLocalDB } = storeToRefs(settingStore); const { hasPermission } = usePermission(); -const { ndmDevice, station, circuits } = toRefs(props); +const { ndmDevice, station, vendor, circuits } = toRefs(props); const showCard = computed(() => !!circuits.value && circuits.value.length > 0); @@ -52,6 +52,10 @@ const localCircuits = ref([]); watchImmediate(circuits, (newCircuits) => { localCircuits.value = newCircuits?.map((circuit) => ({ ...circuit })) ?? []; + const circuitCount = ndmDevice.value.circuitCount; + if (!!circuitCount) { + localCircuits.value = localCircuits.value.slice(0, circuitCount); + } }); const getCircuitStatusTagType = (circuit: NdmSecurityBoxCircuit): TagProps['type'] => { @@ -79,13 +83,19 @@ const { mutate: turnStatus, isPending: turning } = useMutation({ window.$loadingBar.start(); const { circuitIndex, newStatus } = params; - if (!ndmDevice.value.ipAddress) { + const community = normalizeSecurityBoxWriteCommunity(ndmDevice.value, vendor.value); + const ipAddress = ndmDevice.value.ipAddress; + if (!ipAddress) { throw new Error('设备IP地址不存在'); } const status = newStatus ? 1 : 0; + const stationCode = station.value.code; const signal = abortController.value.signal; - await turnCitcuitStatusApi(ndmDevice.value.ipAddress, circuitIndex, status, { stationCode, signal }); + + const turnCircuitStatusApi = dispatchTurnCircuitStatusApi(vendor.value); + const normalizedCircuitIndex = normalizeSecurityBoxCircuitIndex(circuitIndex, vendor.value); + await turnCircuitStatusApi(community, ipAddress, normalizedCircuitIndex, status, { stationCode, signal }); await probeDeviceApi(ndmDevice.value, { stationCode, signal }); return status; }, @@ -110,13 +120,17 @@ const { mutate: reboot, isPending: rebooting } = useMutation({ window.$loadingBar.start(); - if (!ndmDevice.value.ipAddress) { + const community = normalizeSecurityBoxWriteCommunity(ndmDevice.value, vendor.value); + const ipAddress = ndmDevice.value.ipAddress; + if (!ipAddress) { throw new Error('设备IP地址不存在'); } const stationCode = station.value.code; const signal = abortController.value.signal; - await rebootSecurityBoxApi(ndmDevice.value.ipAddress, { stationCode, signal }); + + const rebootSecurityBoxApi = dispatchRebootSecurityBoxApi(vendor.value); + await rebootSecurityBoxApi(community, ipAddress, { stationCode, signal }); }, onSuccess: () => { window.$loadingBar.finish(); diff --git a/src/components/device/device-card/ndm-security-box/security-box-current-diag.vue b/src/components/device/device-card/ndm-security-box/security-box-current-diag.vue index 77eeebe..499d279 100644 --- a/src/components/device/device-card/ndm-security-box/security-box-current-diag.vue +++ b/src/components/device/device-card/ndm-security-box/security-box-current-diag.vue @@ -1,6 +1,7 @@