feat: open camera login page

This commit is contained in:
yangsy
2025-09-26 13:33:39 +08:00
parent 0eba61f089
commit 33a8ff725e

View File

@@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import type { NdmDeviceResultVO } from '@/apis/models'; import type { NdmDeviceResultVO } from '@/apis/models';
import { DeviceTypeName, getDeviceTypeVal } from '@/enums/device-type'; import { DeviceType, DeviceTypeName, getDeviceTypeVal } from '@/enums/device-type';
import { NCard, NFlex, NTag } from 'naive-ui'; import { NButton, NCard, NFlex, NTag } from 'naive-ui';
import { computed, toRefs } from 'vue'; import { computed, toRefs } from 'vue';
const props = defineProps<{ const props = defineProps<{
@@ -17,6 +17,18 @@ const name = computed(() => device.value.name ?? '-');
const ipAddr = computed(() => device.value.ipAddress ?? '-'); const ipAddr = computed(() => device.value.ipAddress ?? '-');
const gbCode = computed(() => Reflect.get(device.value, 'gbCode') as string | undefined); const gbCode = computed(() => Reflect.get(device.value, 'gbCode') as string | undefined);
const status = computed(() => device.value.deviceStatus); const status = computed(() => device.value.deviceStatus);
const isCamera = computed(() => getDeviceTypeVal(device.value.deviceType) === DeviceType['Camera']);
const onClickCameraLogin = () => {
const ipAddress = device.value.ipAddress;
if (ipAddress) {
const targetUrl = `http://${ipAddress}`;
window.open(targetUrl, '_blank');
} else {
window.$message.warning('未找到设备IP地址');
}
};
</script> </script>
<template> <template>
@@ -27,6 +39,7 @@ const status = computed(() => device.value.deviceStatus);
<NTag v-else-if="status === '20'" size="small" type="error">离线</NTag> <NTag v-else-if="status === '20'" size="small" type="error">离线</NTag>
<NTag v-else size="small" type="warning">未知</NTag> <NTag v-else size="small" type="warning">未知</NTag>
<div>{{ name }}</div> <div>{{ name }}</div>
<NButton v-if="isCamera" ghost size="tiny" type="default" :focusable="false" @click="onClickCameraLogin">登录</NButton>
</NFlex> </NFlex>
<div style="font-size: small; color: #666"> <div style="font-size: small; color: #666">
<div> <div>