From aaa30fbf10611de9a9c181d9262f3bcde3d7fc34 Mon Sep 17 00:00:00 2001 From: lzdjack <51448229+lzdjack@users.noreply.github.com> Date: 星期六, 19 三月 2022 00:06:01 +0800 Subject: [PATCH] feat(form): appendSchemaByField和updateSchema支持defaultValue (#1608) --- src/components/Form/src/hooks/useFormEvents.ts | 30 +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1 deletions(-) diff --git a/src/components/Form/src/hooks/useFormEvents.ts b/src/components/Form/src/hooks/useFormEvents.ts index 1d80120..ac10f32 100644 --- a/src/components/Form/src/hooks/useFormEvents.ts +++ b/src/components/Form/src/hooks/useFormEvents.ts @@ -2,7 +2,7 @@ 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 @@ 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 @@ } }); }); + _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 {}; -- Gitblit v1.8.0