From e3cc42c7470a3d28cba7fa27e8355ea495baa888 Mon Sep 17 00:00:00 2001 From: XieYongHong <18010623010@163.com> Date: Fri, 31 May 2024 17:15:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=89=A9=E6=A8=A1=E5=9E=8B-=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=9A=E4=B9=89=E3=80=81=E4=BA=8B=E4=BB=B6=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=B7=BB=E5=8A=A0=E3=80=90=E5=85=B6=E5=AE=83=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat: 物模型-功能定义、事件定义添加【其它配置】 --- .../device/components/Metadata/Base/Base.vue | 3 +- .../components/Metadata/Base/columns.tsx | 34 +++++++++++++++++++ .../components/Properties/OtherSetting.vue | 19 +++++++++-- .../device/components/Metadata/Cat/index.vue | 4 +-- 4 files changed, 55 insertions(+), 5 deletions(-) diff --git a/src/views/device/components/Metadata/Base/Base.vue b/src/views/device/components/Metadata/Base/Base.vue index 1cbec8b4..712aa3fa 100644 --- a/src/views/device/components/Metadata/Base/Base.vue +++ b/src/views/device/components/Metadata/Base/Base.vue @@ -125,8 +125,9 @@ :id="data.record.id" :disabled="target === 'device' && productNoEdit.id?.includes?.(data.record.id)" :record="data.record" - :type="data.record.valueType.type" + :type="type === 'properties' ? data.record.valueType?.type : 'object'" :has-permission="`${permission}:update`" + :medataType="type" :tooltip="target === 'device' && productNoEdit.id?.includes?.(data.record.id) ? { title: '继承自产品物模型的数据不支持删除', } : undefined" diff --git a/src/views/device/components/Metadata/Base/columns.tsx b/src/views/device/components/Metadata/Base/columns.tsx index b8e18ab0..cb55ec13 100644 --- a/src/views/device/components/Metadata/Base/columns.tsx +++ b/src/views/device/components/Metadata/Base/columns.tsx @@ -277,6 +277,23 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n return false }, }, + { + title: '其它配置', + dataIndex: 'other', + width: 100, + control(newValue, oldValue) { + if (!oldValue) { + return true + } else if (newValue && oldValue) { + // 仅留下存储和指标值 + const keys = ['source', 'type', 'virtualRule', 'required'] + const newObj = omit(cloneDeep(newValue.expands), keys) + const oldObj = omit(cloneDeep(oldValue.expands), keys) + return JSON.stringify(newObj) !== JSON.stringify(oldObj) + } + return false + }, + }, { title: '说明', dataIndex: 'description', @@ -379,6 +396,23 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n return false }, }, + { + title: '其它配置', + dataIndex: 'other', + width: 100, + control(newValue, oldValue) { + if (!oldValue) { + return true + } else if (newValue && oldValue) { + // 仅留下存储和指标值 + const keys = ['source', 'type', 'virtualRule', 'required'] + const newObj = omit(cloneDeep(newValue.expands), keys) + const oldObj = omit(cloneDeep(oldValue.expands), keys) + return JSON.stringify(newObj) !== JSON.stringify(oldObj) + } + return false + }, + }, { title: '说明', dataIndex: 'description', diff --git a/src/views/device/components/Metadata/Base/components/Properties/OtherSetting.vue b/src/views/device/components/Metadata/Base/components/Properties/OtherSetting.vue index ad4bd951..3a10722f 100644 --- a/src/views/device/components/Metadata/Base/components/Properties/OtherSetting.vue +++ b/src/views/device/components/Metadata/Base/components/Properties/OtherSetting.vue @@ -131,6 +131,10 @@ const props = defineProps({ type: Object, default: () => ({}), }, + medataType: { + type: String, + default: undefined + }, hasPermission: String, tooltip: Object, }); @@ -189,10 +193,20 @@ const columns = ref([ }, ]); +const getType = () => { + const _typeMap = { + 'propertys': 'property', + 'functions': 'function', + 'events': 'event', + 'tags': 'tag', + } + + return _typeMap[props.type] || 'property' +} + const getConfig = async () => { const id = type === 'product' ? productStore.current?.id : deviceStore.current.id; - console.log(props.id, id, props); if (!props.id || !id || !props.type) return; @@ -212,7 +226,7 @@ const getConfig = async () => { deviceId: id, metadata: { id: props.id, - type: 'property', + type: getType(), dataType: props.type, }, }; @@ -267,6 +281,7 @@ const confirm = () => { const visibleChange = (e: boolean) => { visible.value = e; + console.log('visibleChange',e) if (e) { configValue.value = omit(props.value, [ 'source', diff --git a/src/views/device/components/Metadata/Cat/index.vue b/src/views/device/components/Metadata/Cat/index.vue index 525236ff..980d26b3 100644 --- a/src/views/device/components/Metadata/Cat/index.vue +++ b/src/views/device/components/Metadata/Cat/index.vue @@ -135,7 +135,7 @@ const hideVirtualRule = (metadata: string) => { const _metadata = JSON.parse(metadata || '{}') if (_metadata.properties) { _metadata.properties = _metadata.properties.map((item: any) => { - if (item.expands.virtualRule) { + if (item.expands?.virtualRule) { item.expands = cloneDeep(omit(item.expands, ['virtualRule'])) } return item @@ -193,4 +193,4 @@ watch(() => metadata.value, () => { height: 670px; width: 650px; } - \ No newline at end of file +