From 1975e46cb2eec65169eeeece015082d644b5d954 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 19 Jun 2025 23:32:57 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90IoT=20=E7=89=A9=E8=81=94?= =?UTF-8?q?=E7=BD=91=E3=80=91=E5=A2=9E=E5=8A=A0=E2=80=9C=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/iot/device/device/index.ts | 5 + .../device/detail/DeviceDetailsSimulator.vue | 1 + .../device/detail/DeviceDetailsThingModel.vue | 21 +- .../detail/DeviceDetailsThingModelEvent.vue | 187 +++++++++++++++++- .../DeviceDetailsThingModelProperty.vue | 17 +- ...DeviceDetailsThingModelPropertyHistory.vue | 5 +- .../detail/DeviceDetailsThingModelService.vue | 5 +- src/views/iot/device/device/detail/index.vue | 26 ++- 8 files changed, 231 insertions(+), 36 deletions(-) diff --git a/src/api/iot/device/device/index.ts b/src/api/iot/device/device/index.ts index ff0c6fabb..efc3bfe3d 100644 --- a/src/api/iot/device/device/index.ts +++ b/src/api/iot/device/device/index.ts @@ -159,6 +159,11 @@ export const DeviceApi = { return await request.get({ url: `/iot/device/message/page`, params }) }, + // 查询设备消息配对分页 + getDeviceMessagePairPage: async (params: any) => { + return await request.get({ url: `/iot/device/message/pair-page`, params }) + }, + // 发送设备消息 sendDeviceMessage: async (params: IotDeviceMessageSendReqVO) => { return await request.post({ url: `/iot/device/message/send`, data: params }) diff --git a/src/views/iot/device/device/detail/DeviceDetailsSimulator.vue b/src/views/iot/device/device/detail/DeviceDetailsSimulator.vue index 2f4858aa8..4e7a3a7e7 100644 --- a/src/views/iot/device/device/detail/DeviceDetailsSimulator.vue +++ b/src/views/iot/device/device/detail/DeviceDetailsSimulator.vue @@ -171,6 +171,7 @@ const dataTypeOptionsLabel = computed(() => (value: string) => getDataTypeOption /** 查询物模型列表 */ // TODO @super:getThingModelList 更精准 +// TODO @haohao:目前 index.vue 已经有了 thingModels,可以考虑服用下; const getList = async () => { loading.value = true try { diff --git a/src/views/iot/device/device/detail/DeviceDetailsThingModel.vue b/src/views/iot/device/device/detail/DeviceDetailsThingModel.vue index 021916fdc..847221559 100644 --- a/src/views/iot/device/device/detail/DeviceDetailsThingModel.vue +++ b/src/views/iot/device/device/detail/DeviceDetailsThingModel.vue @@ -3,25 +3,30 @@ - + - - + + - - + + diff --git a/src/views/iot/device/device/detail/DeviceDetailsThingModelEvent.vue b/src/views/iot/device/device/detail/DeviceDetailsThingModelEvent.vue index 91fcbf75c..e3c302040 100644 --- a/src/views/iot/device/device/detail/DeviceDetailsThingModelEvent.vue +++ b/src/views/iot/device/device/detail/DeviceDetailsThingModelEvent.vue @@ -1,16 +1,189 @@ + diff --git a/src/views/iot/device/device/detail/DeviceDetailsThingModelProperty.vue b/src/views/iot/device/device/detail/DeviceDetailsThingModelProperty.vue index ac401989f..c6ea0a451 100644 --- a/src/views/iot/device/device/detail/DeviceDetailsThingModelProperty.vue +++ b/src/views/iot/device/device/detail/DeviceDetailsThingModelProperty.vue @@ -88,7 +88,7 @@
@@ -134,11 +134,7 @@ /> @@ -146,16 +142,15 @@ - + diff --git a/src/views/iot/device/device/detail/index.vue b/src/views/iot/device/device/detail/index.vue index 95402dd3c..3fa835e06 100644 --- a/src/views/iot/device/device/detail/index.vue +++ b/src/views/iot/device/device/detail/index.vue @@ -3,7 +3,7 @@ :loading="loading" :product="product" :device="device" - @refresh="getDeviceData(id)" + @refresh="getDeviceData" /> @@ -11,7 +11,11 @@ - + @@ -38,6 +42,7 @@ import { useTagsViewStore } from '@/store/modules/tagsView' import { DeviceApi, DeviceVO } from '@/api/iot/device/device' import { DeviceTypeEnum, ProductApi, ProductVO } from '@/api/iot/product/product' +import { ThingModelApi, ThingModelData } from '@/api/iot/thingmodel' import DeviceDetailsHeader from './DeviceDetailsHeader.vue' import DeviceDetailsInfo from './DeviceDetailsInfo.vue' import DeviceDetailsThingModel from './DeviceDetailsThingModel.vue' @@ -49,11 +54,12 @@ defineOptions({ name: 'IoTDeviceDetail' }) const route = useRoute() const message = useMessage() -const id = route.params.id // 将字符串转换为数字 +const id = Number(route.params.id) // 将字符串转换为数字 const loading = ref(true) // 加载中 const product = ref({} as ProductVO) // 产品详情 const device = ref({} as DeviceVO) // 设备详情 const activeTab = ref('info') // 默认激活的标签页 +const thingModelList = ref([]) // 物模型列表数据 /** 获取设备详情 */ const getDeviceData = async () => { @@ -61,6 +67,7 @@ const getDeviceData = async () => { try { device.value = await DeviceApi.getDevice(id) await getProductData(device.value.productId) + await getThingModelList(device.value.productId) } finally { loading.value = false } @@ -71,6 +78,19 @@ const getProductData = async (id: number) => { product.value = await ProductApi.getProduct(id) } +/** 获取物模型列表 */ +const getThingModelList = async (productId: number) => { + try { + const data = await ThingModelApi.getThingModelList({ + productId: productId + }) + thingModelList.value = data || [] + } catch (error) { + console.error('获取物模型列表失败:', error) + thingModelList.value = [] + } +} + /** 初始化 */ const { delView } = useTagsViewStore() // 视图操作 const router = useRouter() // 路由