diff --git a/src/components/Form/src/hooks/useFormEvents.ts b/src/components/Form/src/hooks/useFormEvents.ts index 1d80120c..ac10f32a 100644 --- a/src/components/Form/src/hooks/useFormEvents.ts +++ b/src/components/Form/src/hooks/useFormEvents.ts @@ -2,7 +2,7 @@ import type { ComputedRef, Ref } from 'vue'; import type { FormProps, FormSchema, FormActionType } from '../types/form'; import type { NamePath } from 'ant-design-vue/lib/form/interface'; import { unref, toRaw, nextTick } from 'vue'; -import { isArray, isFunction, isObject, isString } from '/@/utils/is'; +import { isArray, isFunction, isNullOrUnDef, isObject, isString } from '/@/utils/is'; import { deepMerge } from '/@/utils'; import { dateItemType, handleInputNumberValue, defaultValueComponents } from '../helper'; import { dateUtil } from '/@/utils/dateUtil'; @@ -132,11 +132,14 @@ export function useFormEvents({ if (!prefixField || index === -1 || first) { first ? schemaList.unshift(schema) : schemaList.push(schema); schemaRef.value = schemaList; + _setDefaultValue(schema); return; } if (index !== -1) { schemaList.splice(index + 1, 0, schema); } + _setDefaultValue(schema); + schemaRef.value = schemaList; } @@ -192,9 +195,34 @@ export function useFormEvents({ } }); }); + _setDefaultValue(schema); + schemaRef.value = uniqBy(schema, 'field'); } + function _setDefaultValue(data: FormSchema | FormSchema[]) { + let schemas: FormSchema[] = []; + if (isObject(data)) { + schemas.push(data as FormSchema); + } + if (isArray(data)) { + schemas = [...data]; + } + + const obj: Recordable = {}; + schemas.forEach((item) => { + if ( + item.component != 'Divider' && + Reflect.has(item, 'field') && + item.field && + !isNullOrUnDef(item.defaultValue) + ) { + obj[item.field] = item.defaultValue; + } + }); + setFieldsValue(obj); + } + function getFieldsValue(): Recordable { const formEl = unref(formElRef); if (!formEl) return {};