From 600bfc7aaf2deb3d241c1306a0e8629b220599fc Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Wed, 25 Sep 2024 14:02:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=B9=E9=80=A0setValues=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/@core/ui-kit/form-ui/src/form-api.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/@core/ui-kit/form-ui/src/form-api.ts b/packages/@core/ui-kit/form-ui/src/form-api.ts index 459ba080..77f3204e 100644 --- a/packages/@core/ui-kit/form-ui/src/form-api.ts +++ b/packages/@core/ui-kit/form-ui/src/form-api.ts @@ -17,6 +17,8 @@ import { StateHandler, } from '@vben-core/shared/utils'; +import { objectPick } from '@vueuse/core'; + const merge = createMerge((originObj, key, updates) => { if (Array.isArray(originObj[key]) && Array.isArray(updates)) { originObj[key] = updates; @@ -182,12 +184,25 @@ export class FormApi { } } + /** + * 设置表单值 + * @param fields record + * @param filterFields 过滤不在schema中定义的字段 默认为true + * @param shouldValidate + */ async setValues( fields: Record, + filterFields: boolean = true, shouldValidate: boolean = false, ) { const form = await this.getForm(); - form.setValues(fields, shouldValidate); + if (!filterFields) { + form.setValues(fields, shouldValidate); + return; + } + const fieldNames = this.state?.schema?.map((item) => item.fieldName) ?? []; + const filteredFields = objectPick(fields, fieldNames); + form.setValues(filteredFields, shouldValidate); } async submitForm(e?: Event) {