fix: 优化物模型-功能定义(输入、输出)
This commit is contained in:
parent
c4faec62c1
commit
1622206283
|
@ -138,13 +138,16 @@ const handleDataTable = (type: string) => {
|
|||
...props.data.valueType
|
||||
}
|
||||
break;
|
||||
case 'array':
|
||||
dataTypeTable.dataSource = props.data.valueType.elementType
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
watch(() => props.data.valueType.type, () => {
|
||||
const type = props.data.valueType.type
|
||||
handleDataTable(props.data.valueType.type === 'array' ? props.data.valueType.elementType : props.data.valueType.type)
|
||||
handleDataTable(props.data.valueType.type)
|
||||
|
||||
if (['float', 'double', 'int', 'long'].includes(type)) {
|
||||
getUnit().then((res) => {
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<template>
|
||||
<div class="input-params">
|
||||
<div class="input-params-text">
|
||||
{{ value?.map((item) => item.name).join(',') }}
|
||||
{{ dataSource?.map((item) => item.name).join(',') }}
|
||||
</div>
|
||||
<DataTableObject v-model:value="value" :columns="columns" :addItem="addItem" width="700px" @confirm="confirm">
|
||||
<DataTableObject v-model:value="dataSource" :columns="columns" :onAdd="addItem" width="700px" @confirm="confirm">
|
||||
<template #valueType="{ data }">
|
||||
<span>{{ data.record.valueType?.type }}</span>
|
||||
</template>
|
||||
|
@ -40,43 +40,7 @@ const addItem = () => {
|
|||
}
|
||||
}
|
||||
|
||||
const columns = [
|
||||
{ title: '参数标识', dataIndex: 'id', type: 'text', form: { required: true, rules: [{ required: true, message: '请输入标识'}]} },
|
||||
{ title: '参数名称', dataIndex: 'name', type: 'text', form: { required: true, rules: [{ required: true, message: '请输入名称'}]} },
|
||||
{
|
||||
title: '填写约束',
|
||||
dataIndex: 'required',
|
||||
type: 'components',
|
||||
width: 100,
|
||||
components: {
|
||||
name: ConstraintSelect,
|
||||
props: {
|
||||
name: ['expands', 'required']
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '数据类型',
|
||||
type: 'components',
|
||||
dataIndex: 'valueType',
|
||||
components: {
|
||||
name: ValueObject,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '其他配置',
|
||||
dataIndex: 'config',
|
||||
type: 'components',
|
||||
components: {
|
||||
name: DataTypeObjectChild
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
width: 60
|
||||
},
|
||||
];
|
||||
const columns = ref()
|
||||
|
||||
type Emits = {
|
||||
(e: 'update:value', data: Record<string, any>): void;
|
||||
|
@ -99,26 +63,91 @@ const props = defineProps({
|
|||
},
|
||||
});
|
||||
|
||||
const value = ref(props.value);
|
||||
const dataSource = ref(props.value);
|
||||
|
||||
const change = (v: string) => {
|
||||
emit('update:value', { ...props.value, async: value.value });
|
||||
emit('update:value', { ...props.value, async: dataSource.value });
|
||||
emit('change', v);
|
||||
};
|
||||
|
||||
watch(
|
||||
() => props.value,
|
||||
(newV) => {
|
||||
value.value = props.value.inputs;
|
||||
dataSource.value = props.value.inputs;
|
||||
},
|
||||
{ immediate: true },
|
||||
);
|
||||
|
||||
watch(() => JSON.stringify(dataSource.value), () => {
|
||||
columns.value = [
|
||||
{
|
||||
title: '参数标识',
|
||||
dataIndex: 'id',
|
||||
type: 'text',
|
||||
form: {
|
||||
required: true,
|
||||
rules: [
|
||||
{ required: true, message: '请输入标识' },
|
||||
{
|
||||
validator(va:any,value: any) {
|
||||
const fieldIndex = va.field.split('.')[1]
|
||||
const oldValue = (dataSource!.value || []).filter((_, index) => index != fieldIndex)
|
||||
console.log(dataSource!.value)
|
||||
const hasId = oldValue.some((item) => item.id === value)
|
||||
if (value) {
|
||||
if (hasId) {
|
||||
return Promise.reject('标识重复')
|
||||
}
|
||||
return Promise.resolve()
|
||||
}
|
||||
return Promise.reject('请输入标识')
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
{ title: '参数名称', dataIndex: 'name', type: 'text', form: { required: true, rules: [{ required: true, message: '请输入名称'}]} },
|
||||
{
|
||||
title: '填写约束',
|
||||
dataIndex: 'required',
|
||||
type: 'components',
|
||||
width: 100,
|
||||
components: {
|
||||
name: ConstraintSelect,
|
||||
props: {
|
||||
name: ['expands', 'required']
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '数据类型',
|
||||
type: 'components',
|
||||
dataIndex: 'valueType',
|
||||
components: {
|
||||
name: ValueObject,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '其他配置',
|
||||
dataIndex: 'config',
|
||||
type: 'components',
|
||||
components: {
|
||||
name: DataTypeObjectChild
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
width: 60
|
||||
},
|
||||
]
|
||||
}, { immediate: true})
|
||||
|
||||
const confirm = (v: any) => {
|
||||
console.log(v)
|
||||
emit('update:value', {
|
||||
...props.value,
|
||||
inputs: value.value
|
||||
inputs: dataSource.value
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
{
|
||||
title: '数据类型',
|
||||
type: 'components',
|
||||
dataIndex: ['valueType', 'type'],
|
||||
dataIndex: 'valueTypes',
|
||||
components: {
|
||||
name: DataTableTypeSelect,
|
||||
}
|
||||
|
@ -36,6 +36,7 @@
|
|||
}
|
||||
]"
|
||||
@confirm="valueChange"
|
||||
:onAdd="addItem"
|
||||
/>
|
||||
<DataTableEnum v-else-if="type === 'enum'" v-model:value="data" @confirm="valueChange"/>
|
||||
<DataTableBoolean v-else-if="type === 'boolean'" v-model:value="data" @confirm="valueChange"/>
|
||||
|
@ -120,6 +121,16 @@ watch(
|
|||
{ immediate: true, deep: true },
|
||||
);
|
||||
|
||||
const addItem = () => {
|
||||
return {
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
valueType: {
|
||||
type: undefined
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const valueChange = () => {
|
||||
|
||||
emit('update:value', {
|
||||
|
|
|
@ -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#201ac2119b4707a4d793b819a79ac37fe9bd1ae6"
|
||||
integrity sha512-382mUqzC+/rWrqTJyarlODdwCchxgB0ZzcGOGmrqOn37eAF+grfPnpY6UsT4or0njes4eu//RlniLc92dVNcUA==
|
||||
resolved "http://registry.jetlinks.cn/jetlinks-ui-components/-/jetlinks-ui-components-1.0.24.tgz#1b7ad3ecf9eb4cc8f42692f935d6f2c5cf70e597"
|
||||
integrity sha512-+tS6vzKJlphNUCR59Lc8vJpRfHIzSyMVuhHPfTH3dAa4Ow3OXaUxRdqJhQbDxIwptP3u2Rc7nxdZ5GZFMbJgjw==
|
||||
dependencies:
|
||||
"@vueuse/core" "^9.12.0"
|
||||
"@vueuse/router" "^9.13.0"
|
||||
|
|
Loading…
Reference in New Issue