From 1bc2978bc6234247f03d9f530f3d96c6a9cf1fef Mon Sep 17 00:00:00 2001 From: puhui999 Date: Sat, 29 Mar 2025 23:02:56 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E3=80=91IoT:=20=E5=9C=BA=E6=99=AF=E8=81=94=E5=8A=A8=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=99=A8=20array=E3=80=81struct=20=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/JsonEditor/src/JsonEditor.vue | 6 +- .../scene/components/ThingModelDualView.vue | 81 +++++++++++++++++++ .../scene/components/ThingModelParamInput.vue | 28 ++++++- 3 files changed, 110 insertions(+), 5 deletions(-) create mode 100644 src/views/iot/rule/scene/components/ThingModelDualView.vue diff --git a/src/components/JsonEditor/src/JsonEditor.vue b/src/components/JsonEditor/src/JsonEditor.vue index ef14a106..f3789ee1 100644 --- a/src/components/JsonEditor/src/JsonEditor.vue +++ b/src/components/JsonEditor/src/JsonEditor.vue @@ -12,7 +12,7 @@ import { JsonEditorEmits, JsonEditorExpose, JsonEditorProps } from '../types' defineOptions({ name: 'JsonEditor' }) const props = withDefaults(defineProps(), { - mode: 'tree' as JSONEditorMode, + mode: 'view' as JSONEditorMode, height: '400px', showModeSelection: false, showNavigationBar: false, @@ -58,6 +58,10 @@ const initJsonEditor = () => { if (jsonObj.value) { jsonEditor.set(jsonObj.value) } + + if (props.mode === 'view') { + jsonEditor?.expandAll() // 默认展开全部 + } } // 监听数据变化 diff --git a/src/views/iot/rule/scene/components/ThingModelDualView.vue b/src/views/iot/rule/scene/components/ThingModelDualView.vue new file mode 100644 index 00000000..24fb6000 --- /dev/null +++ b/src/views/iot/rule/scene/components/ThingModelDualView.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/views/iot/rule/scene/components/ThingModelParamInput.vue b/src/views/iot/rule/scene/components/ThingModelParamInput.vue index bc602da5..b6e35cbe 100644 --- a/src/views/iot/rule/scene/components/ThingModelParamInput.vue +++ b/src/views/iot/rule/scene/components/ThingModelParamInput.vue @@ -59,7 +59,17 @@ @@ -68,6 +78,7 @@ import { computed } from 'vue' import { useVModel } from '@vueuse/core' import { DataSpecsDataType } from '@/views/iot/thingmodel/config' +import ThingModelDualView from './ThingModelDualView.vue' /** 物模型属性参数输入组件 */ defineOptions({ name: 'ThingModelParamInput' }) @@ -80,6 +91,11 @@ const props = defineProps<{ const emits = defineEmits(['update:modelValue', 'change']) const value = useVModel(props, 'modelValue', emits) +const thingModelDualViewRef = ref>() +const openJsonEditor = () => { + thingModelDualViewRef.value?.open() +} + /** 计算属性:判断数据类型 */ const isNumeric = computed(() => [DataSpecsDataType.INT, DataSpecsDataType.FLOAT, DataSpecsDataType.DOUBLE].includes( @@ -93,13 +109,17 @@ const isText = computed(() => props.thingModel?.dataType === DataSpecsDataType.T /** 获取数据规格 */ const dataSpecs = computed(() => { if (isNumeric.value || isDate.value || isText.value) { - return props.thingModel?.dataSpecs + return props.thingModel?.dataSpecs || {} } return {} }) const dataSpecsList = computed(() => { - if (isBool.value || isEnum.value) { - return props.thingModel?.dataSpecsList + if ( + isBool.value || + isEnum.value || + [DataSpecsDataType.ARRAY, DataSpecsDataType.STRUCT].includes(props.thingModel?.dataType) + ) { + return props.thingModel?.dataSpecsList || [] } return [] })