From 08665a35ac606549322039d073daf8072053eef4 Mon Sep 17 00:00:00 2001 From: kailong321200875 <321200875@qq.com> Date: Mon, 8 Apr 2024 13:57:35 +0800 Subject: [PATCH] fix: #451 --- .vscode/settings.json | 2 +- src/components/Form/src/helper/index.ts | 8 ++++++++ src/views/Components/Form/UseFormDemo.vue | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 4980db4..c6be8a8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,7 +5,7 @@ "source.fixAll.eslint": "explicit" }, "[vue]": { - "editor.defaultFormatter": "Vue.volar" + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "i18n-ally.localesPaths": ["src/locales"], "i18n-ally.keystyle": "nested", diff --git a/src/components/Form/src/helper/index.ts b/src/components/Form/src/helper/index.ts index d537ad4..8d676b4 100644 --- a/src/components/Form/src/helper/index.ts +++ b/src/components/Form/src/helper/index.ts @@ -143,6 +143,7 @@ export const setItemComponentSlots = (slotsProps: Recordable = {}): Recordable = */ export const initModel = (schema: FormSchema[], formModel: Recordable) => { const model: Recordable = { ...formModel } + console.log('【model】:', model) schema.map((v) => { if (v.remove) { delete model[v.field] @@ -158,5 +159,12 @@ export const initModel = (schema: FormSchema[], formModel: Recordable) => { // model[v.field] = hasField ? model[v.field] : v.value !== void 0 ? v.value : undefined } }) + // 如果 schema 对应的 field 不存在,则删除 model 中的对应的 field + Object.keys(model).forEach((key) => { + const isExist = schema.some((item) => item.field === key) + if (!isExist) { + delete model[key] + } + }) return model } diff --git a/src/views/Components/Form/UseFormDemo.vue b/src/views/Components/Form/UseFormDemo.vue index 10e8f61..de9cc64 100644 --- a/src/views/Components/Form/UseFormDemo.vue +++ b/src/views/Components/Form/UseFormDemo.vue @@ -407,6 +407,11 @@ setTimeout(async () => { const formData = await getFormData() console.log(formData) }, 2000) + +const getData = async () => { + const formData = await getFormData() + console.log(formData) +}