136 lines
3.4 KiB
Vue
136 lines
3.4 KiB
Vue
<template>
|
|
<div class="container">
|
|
<Breadcrumb :items="['物联网管理', '设备管理', '设备详情']" />
|
|
<a-card class="general-card" title=" ">
|
|
<a-descriptions v-model="renderData" size="large">
|
|
<template #title
|
|
><h3 style="margin-top: -15px"
|
|
><a-button
|
|
class="nav-btn"
|
|
type="outline"
|
|
:shape="'circle'"
|
|
@click="() => $router.go(-1)"
|
|
>
|
|
<icon-undo />
|
|
</a-button>
|
|
设备详情</h3
|
|
>
|
|
</template>
|
|
<a-descriptions-item label="设备名称">{{
|
|
renderData.name
|
|
}}</a-descriptions-item>
|
|
<a-descriptions-item label="硬件版本">{{
|
|
renderData.hardwareVersion
|
|
}}</a-descriptions-item>
|
|
<a-descriptions-item label="固件版本">{{
|
|
renderData.firmwareVersion
|
|
}}</a-descriptions-item>
|
|
<a-descriptions-item label="所属产品">{{
|
|
renderData.productId
|
|
}}</a-descriptions-item>
|
|
<!-- <a-descriptions-item label="备注">{{renderData.remark }}</a-descriptions-item>-->
|
|
<a-descriptions-item label="创建时间">{{
|
|
dayjs(renderData.createTime).format('YYYY-MM-DD HH:mm:ss')
|
|
}}</a-descriptions-item>
|
|
</a-descriptions>
|
|
</a-card>
|
|
<a-card class="general-card" style="margin-top: 10px">
|
|
<a-tabs
|
|
:active-key="activeKey"
|
|
@tab-click="handleMenuClick"
|
|
style="padding-top: 20px"
|
|
>
|
|
<a-tab-pane key="1" tab="参数" title="扩展属性">
|
|
<a-table :columns="columns" :data="renderData.extendParams" />
|
|
</a-tab-pane>
|
|
<a-tab-pane key="2" tab="基本信息" title="基本信息">
|
|
基本信息
|
|
</a-tab-pane>
|
|
<a-tab-pane key="3" tab="执行服务" title="执行服务">
|
|
执行服务内容
|
|
</a-tab-pane>
|
|
</a-tabs>
|
|
</a-card>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import dayjs from 'dayjs';
|
|
import { useRoute } from 'vue-router';
|
|
import { onMounted, ref } from 'vue';
|
|
import { queryDeviceDetail } from '@/api/device';
|
|
|
|
const route = useRoute();
|
|
const id = Number(route.params.id);
|
|
const columns = [
|
|
{
|
|
title: '参数名称',
|
|
dataIndex: 'name',
|
|
slotName: 'name',
|
|
},
|
|
{
|
|
title: '参数标识',
|
|
dataIndex: 'identifier',
|
|
slotName: 'identifier',
|
|
},
|
|
{
|
|
title: '数据类型',
|
|
dataIndex: 'dataType',
|
|
slotName: 'dataType',
|
|
},
|
|
{
|
|
title: '参数类型',
|
|
dataIndex: 'type',
|
|
slotName: 'type',
|
|
},
|
|
];
|
|
const activeKey = ref('1');
|
|
const renderData = ref([]);
|
|
const fetchData = async (Id: number) => {
|
|
const res = await queryDeviceDetail(Id);
|
|
renderData.value = res.data;
|
|
};
|
|
const handleMenuClick = (e: any) => {
|
|
activeKey.value = e;
|
|
};
|
|
onMounted(() => {
|
|
fetchData(id);
|
|
});
|
|
</script>
|
|
|
|
<style scoped>
|
|
.container {
|
|
padding: 0 20px 20px 20px;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 24px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.meta span {
|
|
margin-right: 20px;
|
|
}
|
|
|
|
.attachments li {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.attachments a {
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 14px;
|
|
color: #1890ff;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.attachments a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
.nav-btn {
|
|
border-color: rgb(var(--gray-2));
|
|
color: rgb(var(--gray-8));
|
|
font-size: 16px;
|
|
}
|
|
</style>
|