diff --git a/src/views/device/components/Metadata/Base/Base.vue b/src/views/device/components/Metadata/Base/Base.vue
index 0642095d..9c243981 100644
--- a/src/views/device/components/Metadata/Base/Base.vue
+++ b/src/views/device/components/Metadata/Base/Base.vue
@@ -115,7 +115,20 @@
-
+
+
+
+
@@ -124,7 +137,7 @@
type="link"
key="edit"
style="padding: 0"
- :disabled="operateLimits('add', type)"
+ :disabled="!!operateLimits('add', type)"
@click="copyItem(data.record, data.index)"
:tooltip="{
title: operateLimits('add', type) ? '当前的存储方式不支持复制' : '复制',
@@ -137,7 +150,7 @@
type="link"
key="edit"
style="padding: 0"
- :disabled="operateLimits('add', type)"
+ :disabled="!!operateLimits('add', type)"
@click="handleAddClick(null, data.index)"
:tooltip="{
title: operateLimits('add', type) ? '当前的存储方式不支持新增' : '新增',
@@ -165,14 +178,16 @@
danger
:pop-confirm="{
placement: 'topRight',
- title: showSave ? '这是最后一条数据了,确认删除?' : '确认删除?',
- onConfirm: async () => {
- await removeItem(data.index, showSave);
- },
- }"
+ title: showSave ? '这是最后一条数据了,确认删除?' : '确认删除?',
+ onConfirm: async () => {
+ await removeItem(data.index, showSave);
+ },
+ }"
:tooltip="{
- title: '删除',
+ placement: 'topRight',
+ title: target === 'device' && productNoEdit.id?.includes?.(data.record._sortIndex) ? '继承自产品物模型的数据不支持删除' :'删除',
}"
+ :disabled="target === 'device' && productNoEdit.id?.includes?.(data.record._sortIndex)"
>
@@ -242,7 +257,7 @@ const props = defineProps({
const _target = inject<'device' | 'product'>('_metadataType', props.target);
-const { data: metadata, noEdit } = useMetadata(_target, props.type);
+const { data: metadata, noEdit, productNoEdit } = useMetadata(_target, props.type);
const { hasOperate } = useOperateLimits(_target);
const metadataStore = useMetadataStore()
@@ -254,7 +269,7 @@ const tableRef = ref();
const loading = ref(false)
// const columns = computed(() => MetadataMapping.get(props.type!));
-const {columns} = useColumns(props.type, _target, noEdit)
+const {columns} = useColumns(props.type, _target, noEdit, productNoEdit)
const detailData = reactive({
data: {},
diff --git a/src/views/device/components/Metadata/Base/columns.tsx b/src/views/device/components/Metadata/Base/columns.tsx
index 98d1b418..27708efb 100644
--- a/src/views/device/components/Metadata/Base/columns.tsx
+++ b/src/views/device/components/Metadata/Base/columns.tsx
@@ -7,6 +7,8 @@ import {MetadataType} from "@/views/device/Product/typings";
import { getUnit } from '@/api/device/instance';
import {Ref} from "vue";
import {omit} from "lodash-es";
+import { message } from 'jetlinks-ui-components'
+import { onlyMessage } from "@/utils/comm";
interface DataTableColumnProps extends ColumnProps {
type?: string,
components?: {
@@ -106,7 +108,16 @@ export const typeSelectChange = (type: string) => {
return obj
}
-export const useColumns = (type?: MetadataType, target?: 'device' | 'product', noEdit?: Ref) => {
+const isExtendsProdcut = (index: string, productKeys: string, type: string) => {
+ const vailKeys = productKeys[type] || []
+ if (vailKeys.includes(index)) {
+ onlyMessage('继承自产品物模型的数据不支持修改', 'warning')
+ return true
+ }
+ return false
+}
+
+export const useColumns = (type?: MetadataType, target?: 'device' | 'product', noEdit?: Ref, productNoEdit?: Ref) => {
const BaseColumns: DataTableColumnProps[] = [
{
@@ -137,6 +148,9 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
]
},
doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'id')) {
+ return false
+ }
const ids = (noEdit?.value?.id || []) as any[]
return !ids.includes(record._sortIndex)
}
@@ -155,6 +169,12 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
},
{ max: 64, message: '最多可输入64个字符' },
]
+ },
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'name')) {
+ return false
+ }
+ return true
}
},
];
@@ -169,6 +189,12 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
props: {
options: EventLevel
}
+ },
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'expands')) {
+ return false
+ }
+ return true
}
},
{
@@ -184,6 +210,12 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
title: '说明',
dataIndex: 'description',
type: 'text',
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'description')) {
+ return false
+ }
+ return true
+ }
},
{
title: '操作',
@@ -205,6 +237,12 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
{ label: '否', value: false }
]
}
+ },
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'async')) {
+ return false
+ }
+ return true
}
},
{
@@ -218,12 +256,24 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
type: 'components',
components: {
name: OutputParams
+ },
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'output')) {
+ return false
+ }
+ return true
}
},
{
title: '说明',
dataIndex: 'description',
type: 'text',
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'description')) {
+ return false
+ }
+ return true
+ }
},
{
title: '操作',
@@ -257,7 +307,13 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
}
}]
},
- width: 230
+ width: 230,
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'valueType')) {
+ return false
+ }
+ return true
+ }
},
{
title: '属性来源',
@@ -269,8 +325,9 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
noEdit: noEdit?.value?.source || []
}
},
- doubleClick(){
- return target !== 'device'
+ doubleClick(record){
+ console.log(record);
+ return target !== 'device' || (target === 'device' && record.expands.source === 'rule')
},
form: {
required: true,
@@ -333,6 +390,12 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
}
}]
},
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'valueType')) {
+ return false
+ }
+ return true
+ }
},
{
title: '读写类型',
@@ -340,12 +403,24 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
type: 'components',
components: {
name: TagsType
+ },
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'readType')) {
+ return false
+ }
+ return true
}
},
{
title: '说明',
dataIndex: 'description',
type: 'text',
+ doubleClick(record) {
+ if (isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'description')) {
+ return false
+ }
+ return true
+ }
},
{
title: '操作',
diff --git a/src/views/device/components/Metadata/Base/components/ModelButton.vue b/src/views/device/components/Metadata/Base/components/ModelButton.vue
index 02b64f92..49793ff0 100644
--- a/src/views/device/components/Metadata/Base/components/ModelButton.vue
+++ b/src/views/device/components/Metadata/Base/components/ModelButton.vue
@@ -1,5 +1,5 @@
-
+
配置
@@ -7,6 +7,12 @@