From aaa30fbf10611de9a9c181d9262f3bcde3d7fc34 Mon Sep 17 00:00:00 2001 From: lzdjack <51448229+lzdjack@users.noreply.github.com> Date: Sat, 19 Mar 2022 00:06:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(form):=20appendSchemaByField=E5=92=8Cupdat?= =?UTF-8?q?eSchema=E6=94=AF=E6=8C=81defaultValue=20(#1608)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 兼容appendSchemaByField和updateSchema支持设置默认值 --- .../Form/src/hooks/useFormEvents.ts | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) 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 {}; -- GitLab