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)) }}
-
+
+
+ {{ scope.row.value }}
+
+
@@ -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
}
}