fix: bug#16301
This commit is contained in:
parent
3e354f1a21
commit
75098a4388
|
@ -37,7 +37,7 @@ const type = {
|
|||
report: '上报',
|
||||
};
|
||||
|
||||
export const validatorConfig = (value: any) => {
|
||||
export const validatorConfig = (value: any, isObject: boolean = false) => {
|
||||
if (value.type === 'enum' && !value.elements?.length) {
|
||||
return Promise.reject('请添加枚举项')
|
||||
}
|
||||
|
@ -45,6 +45,10 @@ export const validatorConfig = (value: any) => {
|
|||
return Promise.reject('请选择元素类型')
|
||||
}
|
||||
|
||||
if (isObject && value.type === 'object' && !value.properties?.length) {
|
||||
return Promise.reject('请添加元素类型')
|
||||
}
|
||||
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
|
@ -227,17 +231,13 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
|
|||
callback(rule: any, value: any, dataSource: any[]) {
|
||||
const field = rule.field.split('.')
|
||||
const fieldIndex = Number(field[1])
|
||||
const record = dataSource[fieldIndex]
|
||||
const record = dataSource.find((item, index) => index === fieldIndex)
|
||||
|
||||
console.log(record)
|
||||
if (!record.valueType.properties.length) {
|
||||
return Promise.reject('请添加配置参数')
|
||||
}
|
||||
|
||||
return Promise.resolve()
|
||||
// if (!value?.type) {
|
||||
// }
|
||||
// return Promise.resolve()
|
||||
}
|
||||
}]
|
||||
},
|
||||
|
@ -294,6 +294,22 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
|
|||
title: '输入参数',
|
||||
dataIndex: 'inputs',
|
||||
width: 120,
|
||||
form: {
|
||||
required: true,
|
||||
rules: [{
|
||||
callback(rule:any,value: any, dataSource: any[]) {
|
||||
const field = rule.field.split('.')
|
||||
const fieldIndex = Number(field[1])
|
||||
|
||||
const values = dataSource.find((item, index) => index === fieldIndex)
|
||||
|
||||
return validatorConfig({
|
||||
type: 'object',
|
||||
properties: values.inputs
|
||||
}, true)
|
||||
}
|
||||
}]
|
||||
},
|
||||
control(newValue, oldValue) {
|
||||
if (newValue && !oldValue) {
|
||||
return true
|
||||
|
@ -310,6 +326,18 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
|
|||
components: {
|
||||
name: OutputParams
|
||||
},
|
||||
form: {
|
||||
rules: [{
|
||||
callback(rule:any,value: any, dataSource: any[]) {
|
||||
const field = rule.field.split('.')
|
||||
const fieldIndex = Number(field[1])
|
||||
|
||||
const values = dataSource.find((item, index) => index === fieldIndex)
|
||||
|
||||
return validatorConfig(values.output)
|
||||
}
|
||||
}]
|
||||
},
|
||||
doubleClick(record) {
|
||||
return !isExtendsProdcut(record._sortIndex, productNoEdit?.value, 'output');
|
||||
},
|
||||
|
@ -360,7 +388,7 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
|
|||
if (!value?.type) {
|
||||
return Promise.reject('请选择数据类型')
|
||||
}
|
||||
return Promise.resolve()
|
||||
return validatorConfig(value, true)
|
||||
}
|
||||
}]
|
||||
},
|
||||
|
@ -471,7 +499,7 @@ export const useColumns = (type?: MetadataType, target?: 'device' | 'product', n
|
|||
if (!value?.type) {
|
||||
return Promise.reject('请选择数据类型')
|
||||
}
|
||||
return Promise.resolve()
|
||||
return validatorConfig(value, true)
|
||||
}
|
||||
}]
|
||||
},
|
||||
|
|
|
@ -99,10 +99,14 @@ import {
|
|||
DataTableFile,
|
||||
DataTableDate,
|
||||
DataTableObject,
|
||||
Form
|
||||
} from 'jetlinks-ui-components';
|
||||
import ValueObject from '@/views/device/components/Metadata/Base/components/Events/ValueObject.vue'
|
||||
import DataTypeObjectChild from '@/views/device/components/Metadata/Base/components/DataTypeObjectChild.vue'
|
||||
import OtherConfigInfo from './Events/OtherConfigInfo.vue'
|
||||
import {handleTypeValue, TypeStringMap, useUnit} from "@/views/device/components/Metadata/Base/columns";
|
||||
import ModelButton from '@/views/device/components/Metadata/Base/components/ModelButton.vue'
|
||||
import {omit} from "lodash-es";
|
||||
|
||||
const props = defineProps({
|
||||
value: {
|
||||
|
@ -120,10 +124,8 @@ const props = defineProps({
|
|||
})
|
||||
|
||||
const emit = defineEmits(['update:value'])
|
||||
import {handleTypeValue, TypeStringMap, useUnit} from "@/views/device/components/Metadata/Base/columns";
|
||||
import ModelButton from '@/views/device/components/Metadata/Base/components/ModelButton.vue'
|
||||
import {omit} from "lodash-es";
|
||||
|
||||
const formItemContext = Form.useInjectFormItemContext();
|
||||
const objectAdd = () => {
|
||||
return {
|
||||
id: undefined,
|
||||
|
@ -238,17 +240,14 @@ const columns = [
|
|||
]
|
||||
|
||||
const valueChange = (data: any) => {
|
||||
console.log('configModal - confirm',data, props.value, type.value)
|
||||
const newObj = handleTypeValue(type.value, data)
|
||||
console.log('configModal - newObj', newObj)
|
||||
console.log('configModal - newObj2', {
|
||||
type: type.value,
|
||||
...newObj
|
||||
})
|
||||
|
||||
|
||||
emit('update:value', {
|
||||
type: type.value,
|
||||
...newObj
|
||||
})
|
||||
formItemContext.onFieldChange()
|
||||
}
|
||||
|
||||
watch(() => JSON.stringify(props.value), () => {
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<script setup lang="ts" name="ConfigParams">
|
||||
import type { PropType } from 'vue';
|
||||
import {
|
||||
DataTableObject,
|
||||
DataTableObject, Form,
|
||||
} from 'jetlinks-ui-components';
|
||||
import { ValueObject } from '../index'
|
||||
|
||||
|
@ -97,12 +97,7 @@ const columns = [
|
|||
const field = rule.field.split('.')
|
||||
const fieldIndex = Number(field[1])
|
||||
const record = dataSource[fieldIndex]
|
||||
console.log(record)
|
||||
return validatorConfig(record.valueType)
|
||||
// if (!value?.type) {
|
||||
// return Promise.reject('请选择数据类型')
|
||||
// }
|
||||
// return Promise.resolve()
|
||||
}
|
||||
}]
|
||||
},
|
||||
|
@ -146,10 +141,11 @@ const props = defineProps({
|
|||
});
|
||||
|
||||
const value = ref(props.value.properties);
|
||||
const formItemContext = Form.useInjectFormItemContext();
|
||||
|
||||
const confirm = (data: any) => {
|
||||
console.log('ConfigParams',data)
|
||||
const newObject = data.map((item) => {
|
||||
const newObject = data.map((item: any) => {
|
||||
return omit(item, ['_sortIndex', 'config', 'action'])
|
||||
})
|
||||
|
||||
|
@ -159,6 +155,7 @@ const confirm = (data: any) => {
|
|||
properties: newObject,
|
||||
type: 'object',
|
||||
})
|
||||
formItemContext.onFieldChange()
|
||||
}
|
||||
|
||||
watch(
|
||||
|
|
|
@ -17,10 +17,10 @@
|
|||
import type { PropType } from 'vue';
|
||||
import ConfigModal from '@/views/device/components/Metadata/Base/components/ConfigModal.vue'
|
||||
import {
|
||||
DataTableObject,
|
||||
DataTableObject, Form
|
||||
} from 'jetlinks-ui-components';
|
||||
import { ConstraintSelect, ValueObject } from '../index'
|
||||
import {TypeStringMap} from "../../columns";
|
||||
import {TypeStringMap, validatorConfig} from "../../columns";
|
||||
import ModelButton from '@/views/device/components/Metadata/Base/components/ModelButton.vue'
|
||||
import {omit} from "lodash-es";
|
||||
|
||||
|
@ -44,7 +44,7 @@ const props = defineProps({
|
|||
default: () => [],
|
||||
},
|
||||
});
|
||||
|
||||
const formItemContext = Form.useInjectFormItemContext();
|
||||
|
||||
const addItem = () => {
|
||||
return {
|
||||
|
@ -121,7 +121,6 @@ const columns = ref([
|
|||
required: true,
|
||||
rules: [{
|
||||
validator(_: any, value: any) {
|
||||
console.log('validator',value)
|
||||
if (!value?.type) {
|
||||
return Promise.reject('请选择数据类型')
|
||||
}
|
||||
|
@ -136,6 +135,18 @@ const columns = ref([
|
|||
{
|
||||
title: '其他配置',
|
||||
dataIndex: 'config',
|
||||
form: {
|
||||
required: true,
|
||||
rules: [{
|
||||
callback(rule:any,value: any, dataSource: any[]) {
|
||||
const field = rule.field.split('.')
|
||||
const fieldIndex = Number(field[1])
|
||||
|
||||
const values = dataSource.find((item, index) => index === fieldIndex)
|
||||
return validatorConfig(values.valueType)
|
||||
}
|
||||
}]
|
||||
},
|
||||
control(newValue: any, oldValue: any) {
|
||||
if (newValue && !oldValue) {
|
||||
return true
|
||||
|
@ -168,6 +179,7 @@ const columns = ref([
|
|||
const confirm = (v: any) => {
|
||||
console.log('inputParams',v)
|
||||
emit('update:value', v)
|
||||
formItemContext.onFieldChange()
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
@ -64,7 +64,12 @@ import {
|
|||
|
||||
import ConfigModal from '@/views/device/components/Metadata/Base/components/ConfigModal.vue'
|
||||
import {cloneDeep, omit} from 'lodash-es';
|
||||
import {typeSelectChange, TypeStringMap, useUnit} from "@/views/device/components/Metadata/Base/columns";
|
||||
import {
|
||||
typeSelectChange,
|
||||
TypeStringMap,
|
||||
useUnit,
|
||||
validatorConfig
|
||||
} from "@/views/device/components/Metadata/Base/columns";
|
||||
import Type from './Type.vue'
|
||||
|
||||
const props = defineProps({
|
||||
|
@ -160,6 +165,18 @@ const columns = [
|
|||
{
|
||||
title: '其他配置',
|
||||
dataIndex: 'config',
|
||||
form: {
|
||||
required: true,
|
||||
rules: [{
|
||||
callback(rule:any,value: any, dataSource: any[]) {
|
||||
const field = rule.field.split('.')
|
||||
const fieldIndex = Number(field[1])
|
||||
const values = dataSource.find((item, index) => index === fieldIndex)
|
||||
|
||||
return validatorConfig(values.valueType)
|
||||
}
|
||||
}]
|
||||
},
|
||||
control(newValue: any, oldValue: any) {
|
||||
if (newValue && !oldValue) {
|
||||
return true
|
||||
|
|
|
@ -3837,8 +3837,8 @@ 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#920ba82872b918eb6f592813cdb08ddefc9a822c"
|
||||
integrity sha512-x8J/jduzSeBJ7faxspaWgi/MbKiNl3aG1Mhw2TWIcr3y9qVuPS8CcQB0OHOikAFlHM+iUg7lJtfYFj11kdz4FA==
|
||||
resolved "http://registry.jetlinks.cn/jetlinks-ui-components/-/jetlinks-ui-components-1.0.24.tgz#e973e030eb62714f7ec22202a984fa1d5e6ef451"
|
||||
integrity sha512-/3bcz76Fq7MDVHI6GKxcIPLzhPRxY0aSUowH91+SuJzkOqCRcUXhBSfVyEL6mTjg/yi8fvb4Pglfkj2fomFKFw==
|
||||
dependencies:
|
||||
"@vueuse/core" "^9.12.0"
|
||||
"@vueuse/router" "^9.13.0"
|
||||
|
|
Loading…
Reference in New Issue