diff --git a/src/views/device/components/Metadata/Base/DetailModal/PropertiesModal.vue b/src/views/device/components/Metadata/Base/DetailModal/PropertiesModal.vue index e5a089c4..56d14767 100644 --- a/src/views/device/components/Metadata/Base/DetailModal/PropertiesModal.vue +++ b/src/views/device/components/Metadata/Base/DetailModal/PropertiesModal.vue @@ -135,7 +135,7 @@ const handleDataTable = (type: string) => { break; case 'boolean': dataTypeTable.dataSource = { - ...props.data.valueType + ...omit(props.data.valueType, ['type']) } break; case 'array': diff --git a/src/views/device/components/Metadata/Base/columns.tsx b/src/views/device/components/Metadata/Base/columns.tsx index 58c5137a..4426550b 100644 --- a/src/views/device/components/Metadata/Base/columns.tsx +++ b/src/views/device/components/Metadata/Base/columns.tsx @@ -32,6 +32,36 @@ const type = { report: '上报', }; +export const handleTypeValue = (type:string, value: any = {}) => { + let obj: any = {} + switch (type) { + case 'array': + obj.elementType = value + break; + case 'object': + obj.properties = value + break; + case 'int': + case 'long': + obj.unit = value + break; + case 'file': + obj.fileType = value + break; + case 'date': + obj.format = value + break; + case 'string': + case 'password': + obj.maxLength = value + break; + default: + obj = value + break; + } + return obj +} + export const typeSelectChange = (type: string) => { let obj: any = {} switch (type) { diff --git a/src/views/device/components/Metadata/Base/components/Constraint.vue b/src/views/device/components/Metadata/Base/components/Constraint.vue index 72cc53f4..754f6cff 100644 --- a/src/views/device/components/Metadata/Base/components/Constraint.vue +++ b/src/views/device/components/Metadata/Base/components/Constraint.vue @@ -20,7 +20,7 @@ const props = defineProps({ }, name: { type: [String, Array], - default: 'required' + default: ['expands','required'] } }) @@ -28,10 +28,10 @@ const emit = defineEmits(['update:value']) const myValue = ref() -const change = () => { +const change = (e) => { const newData = { ...props.value } set(newData, props.name, myValue.value) - console.log(newData); + console.log(newData, e); emit('update:value', newData) } diff --git a/src/views/device/components/Metadata/Base/components/DataType.vue b/src/views/device/components/Metadata/Base/components/DataType.vue index fe0da6d4..cf0e3044 100644 --- a/src/views/device/components/Metadata/Base/components/DataType.vue +++ b/src/views/device/components/Metadata/Base/components/DataType.vue @@ -8,64 +8,14 @@ v-model:value="_valueType.elementType" :unitOptions="options" placement="topRight" - @confirm="valueChange" + @confirm="(data) => {valueChange(data, 'array')}" /> - - + + - - + + @@ -117,7 +68,7 @@ import { DataTableObject, } from 'jetlinks-ui-components'; import { cloneDeep } from 'lodash-es'; -import { typeSelectChange } from '../columns' +import {handleTypeValue, typeSelectChange} from '../columns' import ConfigModal from './ConfigModal.vue' const props = defineProps({ @@ -127,6 +78,56 @@ const props = defineProps({ }, }); +const columns = [{ + title: '参数标识', + dataIndex: 'id', + type: 'text', + width: 100, + form: { + required: true, + rules: [{ + callback() { + return Promise.resolve() + } + }] + } +}, + { + title: '参数名称', + dataIndex: 'name', + type: 'text', + width: 100, + form: { + required: true, + rules: [{ + required: true, + message: '请输入参数名称' + }] + } + }, + { + title: '数据类型', + type: 'components', + dataIndex: 'valueType', + components: { + name: ValueObject, + props: { + filter: ['object'] + } + }, + width: 100 + }, + { + title: '其他配置', + dataIndex: 'config', + width: 100 + }, + { + title: '操作', + dataIndex: 'action', + width: 60 + }] + const options = ref<{ label: string; value: string }[]>([]); const emit = defineEmits(['update:value']); @@ -144,10 +145,13 @@ const typeChange = (e: string) => { }); }; -const valueChange = () => { +const valueChange = (_data: any, _type: string) => { + console.log(_type, _data) + const newData = handleTypeValue(_type, _data) + console.log('dataType',{...newData, type: type.value}) emit('update:value', { ...props.value, - valueType: {...(_valueType.value || {}), type: type.value}, + valueType: {...newData, type: type.value}, }); } diff --git a/src/views/device/components/Metadata/Base/components/Function/InputParams.vue b/src/views/device/components/Metadata/Base/components/Function/InputParams.vue index 4419c38a..dc818b8b 100644 --- a/src/views/device/components/Metadata/Base/components/Function/InputParams.vue +++ b/src/views/device/components/Metadata/Base/components/Function/InputParams.vue @@ -1,5 +1,5 @@ @@ -18,26 +18,12 @@ diff --git a/yarn.lock b/yarn.lock index 8025a1ef..48e566bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3825,8 +3825,8 @@ jetlinks-store@^0.0.3: jetlinks-ui-components@^1.0.23, jetlinks-ui-components@^1.0.24: version "1.0.24" - resolved "http://registry.jetlinks.cn/jetlinks-ui-components/-/jetlinks-ui-components-1.0.24.tgz#552bad6c9ef733c941168c01fcfe594317add9e2" - integrity sha512-34a8yGQpOHy3DsdRO+pc9Qn5HoeLSGhc2wJhVd22/EbyG5X08EENOsIu+Jg6o/ELmSB2gKnvvhpR4rxawN28hQ== + resolved "http://registry.jetlinks.cn/jetlinks-ui-components/-/jetlinks-ui-components-1.0.24.tgz#7d651f3d333ad52154f5dbbbcba7f6ed8e85e442" + integrity sha512-MtIwdFA2kq3s1rGLExYjjjuit05pjoIURDelUIE4swN3q9qh8QgHcjAOtwEor+UNp333LT2FnSQbMkfXctrqUQ== dependencies: "@vueuse/core" "^9.12.0" "@vueuse/router" "^9.13.0"