diff --git a/src/views/iot/device/device/detail/DeviceDetailsThingModelProperty.vue b/src/views/iot/device/device/detail/DeviceDetailsThingModelProperty.vue index bd4a7c4f2..e2824365d 100644 --- a/src/views/iot/device/device/detail/DeviceDetailsThingModelProperty.vue +++ b/src/views/iot/device/device/detail/DeviceDetailsThingModelProperty.vue @@ -89,7 +89,7 @@
@@ -135,7 +135,11 @@ /> @@ -202,8 +206,8 @@ const handleQuery = () => { /** 历史操作 */ const historyRef = ref() -const openHistory = (deviceId: number, identifier: string) => { - historyRef.value.open(deviceId, identifier) +const openHistory = (deviceId: number, identifier: string, dataType: string) => { + historyRef.value.open(deviceId, identifier, dataType) } /** 格式化属性值和单位 */ diff --git a/src/views/iot/device/device/detail/DeviceDetailsThingModelPropertyHistory.vue b/src/views/iot/device/device/detail/DeviceDetailsThingModelPropertyHistory.vue index ea8bfe45f..c913f1de8 100644 --- a/src/views/iot/device/device/detail/DeviceDetailsThingModelPropertyHistory.vue +++ b/src/views/iot/device/device/detail/DeviceDetailsThingModelPropertyHistory.vue @@ -27,6 +27,7 @@ @@ -57,7 +58,11 @@ {{ formatDate(new Date(scope.row.updateTime)) }} - + + + @@ -67,6 +72,7 @@ import { DeviceApi, IotDevicePropertyRespVO } from '@/api/iot/device/device' import { beginOfDay, defaultShortcuts, endOfDay, formatDate } from '@/utils/formatTime' import { Echart } from '@/components/Echart' +import { IoTDataSpecsDataTypeEnum } from '@/views/iot/utils/constants' defineProps<{ deviceId: number }>() @@ -78,6 +84,7 @@ const loading = ref(false) const viewMode = ref<'chart' | 'list'>('chart') // 视图模式状态 const list = ref([]) // 列表的数据 const chartKey = ref(0) // 图表重新渲染的key +const thingModelDataType = ref('') // 物模型数据类型 const queryParams = reactive({ deviceId: -1, identifier: '', @@ -89,6 +96,14 @@ const queryParams = reactive({ }) const queryFormRef = ref() // 搜索的表单 +// 判断是否为复杂数据类型(struct 或 array) +const isComplexDataType = computed(() => { + if (!thingModelDataType.value) return false + return [IoTDataSpecsDataTypeEnum.STRUCT, IoTDataSpecsDataTypeEnum.ARRAY].includes( + thingModelDataType.value as any + ) +}) + // Echarts 数据 const echartsData = computed(() => { if (!list.value || list.value.length === 0) return [] @@ -165,15 +180,24 @@ const getList = async () => { } /** 打开弹窗 */ -const open = async (deviceId: number, identifier: string) => { +const open = async (deviceId: number, identifier: string, dataType: string) => { dialogVisible.value = true queryParams.deviceId = deviceId queryParams.identifier = identifier - // 重置图表key,确保每次打开都能正常渲染 + thingModelDataType.value = dataType + + // 如果物模型是 struct、array,需要默认使用 list 模式 + if (isComplexDataType.value) { + viewMode.value = 'list' + } else { + viewMode.value = 'chart' + } + // 重置图表 key,确保每次打开都能正常渲染 chartKey.value = 0 + // 等待弹窗完全渲染后再获取数据 await nextTick() - getList() + await getList() } /** 时间变化处理 */ diff --git a/src/views/iot/thingmodel/ThingModelForm.vue b/src/views/iot/thingmodel/ThingModelForm.vue index d9ee14540..cc049fe13 100644 --- a/src/views/iot/thingmodel/ThingModelForm.vue +++ b/src/views/iot/thingmodel/ThingModelForm.vue @@ -153,9 +153,10 @@ const submitForm = async () => { await ThingModelApi.updateThingModel(data) message.success(t('common.updateSuccess')) } - } finally { - dialogVisible.value = false // 确保关闭弹框 + // 关闭弹窗 + dialogVisible.value = false emit('success') + } finally { formLoading.value = false } }