【功能完善】IOT: 产品物模型-数组型的 dataSpecs 校验规则完善

This commit is contained in:
puhui999 2024-12-17 14:24:34 +08:00
parent 12abcddb12
commit 6b9aaf3c9a

View File

@ -1,21 +1,32 @@
<template> <template>
<el-form-item label="元素类型" prop="childDataType"> <el-form-item
:rules="[{ required: true, message: '元素类型不能为空' }]"
label="元素类型"
prop="property.dataSpecs.childDataType"
>
<el-radio-group v-model="dataSpecs.childDataType"> <el-radio-group v-model="dataSpecs.childDataType">
<template v-for="item in dataTypeOptions" :key="item.value"> <template v-for="item in dataTypeOptions" :key="item.value">
<el-radio <el-radio
:value="item.value"
v-if=" v-if="
!( !(
[DataSpecsDataType.ENUM, DataSpecsDataType.ARRAY, DataSpecsDataType.DATE] as any[] [DataSpecsDataType.ENUM, DataSpecsDataType.ARRAY, DataSpecsDataType.DATE] as any[]
).includes(item.value) ).includes(item.value)
" "
:value="item.value"
> >
{{ item.label }} {{ item.label }}
</el-radio> </el-radio>
</template> </template>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="元素个数" prop="size"> <el-form-item
:rules="[
{ required: true, message: '元素个数不能为空' },
{ validator: validateSize, trigger: 'blur' }
]"
label="元素个数"
prop="property.dataSpecs.size"
>
<el-input v-model="dataSpecs.size" placeholder="请输入数组中的元素个数" /> <el-input v-model="dataSpecs.size" placeholder="请输入数组中的元素个数" />
</el-form-item> </el-form-item>
</template> </template>
@ -23,12 +34,26 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useVModel } from '@vueuse/core' import { useVModel } from '@vueuse/core'
import { DataSpecsDataType, dataTypeOptions } from '../config' import { DataSpecsDataType, dataTypeOptions } from '../config'
import { isEmpty } from '@/utils/is'
/** 数组型的 dataSpecs 配置组件 */ /** 数组型的 dataSpecs 配置组件 */
defineOptions({ name: 'ThingModelArrayTypeDataSpecs' }) defineOptions({ name: 'ThingModelArrayTypeDataSpecs' })
const props = defineProps<{ modelValue: any }>() const props = defineProps<{ modelValue: any }>()
const emits = defineEmits(['update:modelValue']) const emits = defineEmits(['update:modelValue'])
const dataSpecs = useVModel(props, 'modelValue', emits) as Ref<any> const dataSpecs = useVModel(props, 'modelValue', emits) as Ref<any>
/** 校验元素个数 */
const validateSize = (_: any, value: any, callback: any) => {
if (isEmpty(value)) {
callback(new Error('元素个数不能为空'))
return
}
if (isNaN(Number(value))) {
callback(new Error('元素个数必须是数字'))
return
}
callback()
}
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>