From 3231c7ea1227ff413ae4d8b3c7b9259fafc47557 Mon Sep 17 00:00:00 2001
From: xieyonghong <18010623010@163.com>
Date: Fri, 7 Jul 2023 21:57:12 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E7=89=A9=E6=A8=A1?=
=?UTF-8?q?=E5=9E=8B-=E7=BC=96=E8=BE=91=E8=A1=A8=E6=A0=BC=E6=A0=87?=
=?UTF-8?q?=E8=AF=86=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../device/components/Metadata/Base/Base.vue | 6 +-
.../components/Metadata/Base/columns.tsx | 21 +++++-
.../Metadata/Base/components/ConfigModal.vue | 49 +++++++++++--
.../Metadata/Base/components/DataType.vue | 28 ++++----
.../Base/components/DataTypeObjectChild.vue | 1 -
.../Base/components/Events/ConfigParams.vue | 45 +++++++-----
.../Base/components/Function/InputParams.vue | 14 ++--
.../Base/components/Function/OutputParams.vue | 70 ++++++++++++-------
8 files changed, 162 insertions(+), 72 deletions(-)
diff --git a/src/views/device/components/Metadata/Base/Base.vue b/src/views/device/components/Metadata/Base/Base.vue
index 8d0ab6eb..3649d91b 100644
--- a/src/views/device/components/Metadata/Base/Base.vue
+++ b/src/views/device/components/Metadata/Base/Base.vue
@@ -89,7 +89,7 @@
{{ sourceMap?.[data.record?.expands?.source] || '' }}
-
+
{{ data.record.output?.type }}
@@ -101,7 +101,7 @@
{{ levelMap?.[data.record.expands?.level] || '-' }}
-
+
object
@@ -112,7 +112,7 @@
-
+
diff --git a/src/views/device/components/Metadata/Base/columns.tsx b/src/views/device/components/Metadata/Base/columns.tsx
index 4426550b..0969b385 100644
--- a/src/views/device/components/Metadata/Base/columns.tsx
+++ b/src/views/device/components/Metadata/Base/columns.tsx
@@ -4,7 +4,7 @@ import SelectColumn from './components/Events/SelectColumn.vue';
import AsyncSelect from './components/Function/AsyncSelect.vue';
import { EventLevel } from "@/views/device/data";
import {MetadataType} from "@/views/device/Product/typings";
-import rule from "components/Metadata/Rule";
+import { getUnit } from '@/api/device/instance';
import {Ref} from "vue";
interface DataTableColumnProps extends ColumnProps {
type?: string,
@@ -352,6 +352,25 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
return {columns}
}
+export const useUnit = (type: Ref) => {
+ const unitOptions = ref>([])
+
+ watch(() => type.value, () => {
+ if (['float', 'double', 'int', 'long'].includes(type.value) && !unitOptions.value.length) {
+ getUnit().then((res) => {
+ if (res.success) {
+ unitOptions.value = res.result.map((item: any) => ({
+ label: item.description,
+ value: item.id,
+ }));
+ }
+ });
+ }
+ })
+
+ return { unitOptions }
+}
+
// const MetadataMapping = new Map();
// MetadataMapping.set('properties', PropertyColumns);
diff --git a/src/views/device/components/Metadata/Base/components/ConfigModal.vue b/src/views/device/components/Metadata/Base/components/ConfigModal.vue
index e492ec86..75cce7de 100644
--- a/src/views/device/components/Metadata/Base/components/ConfigModal.vue
+++ b/src/views/device/components/Metadata/Base/components/ConfigModal.vue
@@ -2,7 +2,7 @@
@@ -17,8 +17,44 @@
placement="topRight"
:onAdd="objectAdd"
:columns="[
- { title: '参数标识', dataIndex: 'id', type: 'text', width: 100 },
- { title: '参数名称', dataIndex: 'name', type: 'text', width: 100 },
+ {
+ title: '参数标识',
+ dataIndex: 'id',
+ type: 'text',
+ width: 100,
+ form: {
+ required: true,
+ rules: [
+ {
+ callback(rule:any,value: any, _dataSource: any[]) {
+ if (value) {
+ const field = rule.field.split('.')
+ const fieldIndex = Number(field[1])
+ const hasId = _dataSource.some((item, index) => item.id === value && fieldIndex !== index)
+ if (hasId) {
+ return Promise.reject('该标识存在')
+ }
+ return Promise.resolve()
+ }
+ return Promise.reject('请输入标识')
+ }
+ }
+ ]
+ }
+ },
+ {
+ title: '参数名称',
+ dataIndex: 'name',
+ type: 'text',
+ width: 100,
+ form: {
+ required: true,
+ rules: [{
+ required: true,
+ message: '请输入参数名称'
+ }]
+ }
+ },
{
title: '数据类型',
type: 'components',
@@ -83,7 +119,7 @@
{
return {
@@ -186,6 +223,8 @@ const options = ref([])
const type = ref(props.value?.[props.valueKey]?.type)
+const { unitOptions } = useUnit(type)
+
const myValue = ref(props.value?.[props.valueKey])
const valueChange = () => {
diff --git a/src/views/device/components/Metadata/Base/components/DataType.vue b/src/views/device/components/Metadata/Base/components/DataType.vue
index cf0e3044..87142ea3 100644
--- a/src/views/device/components/Metadata/Base/components/DataType.vue
+++ b/src/views/device/components/Metadata/Base/components/DataType.vue
@@ -6,7 +6,7 @@
{valueChange(data, 'array')}"
/>
@@ -22,7 +22,7 @@
-
+
{valueChange(data, 'enum')}"/>
@@ -68,7 +68,7 @@ import {
DataTableObject,
} from 'jetlinks-ui-components';
import { cloneDeep } from 'lodash-es';
-import {handleTypeValue, typeSelectChange} from '../columns'
+import {handleTypeValue, typeSelectChange, useUnit } from '../columns'
import ConfigModal from './ConfigModal.vue'
const props = defineProps({
@@ -155,22 +155,24 @@ const valueChange = (_data: any, _type: string) => {
});
}
+const { unitOptions } = useUnit(type)
+
watch(
() => JSON.stringify(props.value),
() => {
type.value = props.value?.valueType?.type;
_valueType.value = props.value?.valueType
// elements.value = props.value?.valueType.elements;
- if (['float', 'double', 'int', 'long'].includes(type.value)) {
- const res = getUnit().then((res) => {
- if (res.success) {
- options.value = res.result.map((item) => ({
- label: item.description,
- value: item.id,
- }));
- }
- });
- }
+ // if (['float', 'double', 'int', 'long'].includes(type.value)) {
+ // const res = getUnit().then((res) => {
+ // if (res.success) {
+ // options.value = res.result.map((item) => ({
+ // label: item.description,
+ // value: item.id,
+ // }));
+ // }
+ // });
+ // }
},
{ immediate: true },
);
diff --git a/src/views/device/components/Metadata/Base/components/DataTypeObjectChild.vue b/src/views/device/components/Metadata/Base/components/DataTypeObjectChild.vue
index de821096..02f6a36a 100644
--- a/src/views/device/components/Metadata/Base/components/DataTypeObjectChild.vue
+++ b/src/views/device/components/Metadata/Base/components/DataTypeObjectChild.vue
@@ -29,7 +29,6 @@