diff --git a/apps/web-naive/src/views/demos/form/basic.vue b/apps/web-naive/src/views/demos/form/basic.vue index 0dcf9bc30..3477aae5c 100644 --- a/apps/web-naive/src/views/demos/form/basic.vue +++ b/apps/web-naive/src/views/demos/form/basic.vue @@ -30,17 +30,18 @@ const layouts = [ const layout = ref(layouts[0].value); function getNumberValidator(key: string, limit?: [number, number]) { - const validator = z.number({ + let validator = z.number({ required_error: `${key} 值不能为空`, invalid_type_error: `${key} 值只能为数字`, }); if (limit) { - validator.min(limit[0], { message: `${key} 值不在区间范围内` }); - validator.max(limit[1], { message: `${key} 值不在区间范围内` }); + validator = validator + .min(limit[0], { message: `${key} 值不在区间范围内` }) + .max(limit[1], { message: `${key} 值不在区间范围内` }); } - return validator; + return validator.default(null); } const paramsSchema = [ diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible-params-item.vue b/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible-params-item.vue index 54383aa96..f133f5e6e 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible-params-item.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible-params-item.vue @@ -15,12 +15,13 @@ const modelValue = defineModel('value'); const finalOption = computed(() => { const { type, ...otherOption } = props.data.option; - if (type === 'number') { + if (type === 'number' || type === 'exponential') { return { step: props.data.option.step ?? 1, min: props.data.option.min, max: props.data.option.max, precision: props.data.option.precision ?? 0, + ...otherOption, }; } diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible-params.vue b/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible-params.vue index 6ed20a827..2589c1603 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible-params.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible-params.vue @@ -55,6 +55,10 @@ const bodyStyle = computed(() => { }); function init() { + if (!modelValue.value) { + modelValue.value = {}; + } + for (const param of props.params) { modelValue.value[param.key] = param.defaultValue ?? null; } diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible.vue b/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible.vue index 1ac1d7f78..f76dbf13e 100755 --- a/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/collapsible.vue @@ -1,6 +1,8 @@