diff --git a/src/components/Form/src/BasicForm.vue b/src/components/Form/src/BasicForm.vue index 97c4cf3bcb6..5c040ff1f44 100644 --- a/src/components/Form/src/BasicForm.vue +++ b/src/components/Form/src/BasicForm.vue @@ -47,7 +47,7 @@ import FormItem from './components/FormItem.vue'; import FormAction from './components/FormAction.vue'; - import { dateItemType } from './helper'; + import { dateItemType, isIncludeSimpleComponents } from './helper'; import { dateUtil } from '@/utils/dateUtil'; import { deepMerge } from '@/utils'; @@ -163,7 +163,9 @@ } } if (unref(getProps).showAdvancedButton) { - return cloneDeep(schemas.filter((schema) => schema.component !== 'Divider') as FormSchema[]); + return cloneDeep( + schemas.filter((schema) => !isIncludeSimpleComponents(schema.component)) as FormSchema[], + ); } else { return cloneDeep(schemas as FormSchema[]); } diff --git a/src/components/Form/src/components/FormItem.vue b/src/components/Form/src/components/FormItem.vue index 9def55091f3..c0021519846 100644 --- a/src/components/Form/src/components/FormItem.vue +++ b/src/components/Form/src/components/FormItem.vue @@ -17,6 +17,7 @@ import { getSlot } from '@/utils/helper/tsxHelper'; import { createPlaceholderMessage, + isIncludeSimpleComponents, NO_AUTO_LINK_COMPONENTS, setComponentRuleType, } from '../helper'; @@ -89,7 +90,7 @@ if (isFunction(componentProps)) { componentProps = componentProps({ schema, tableAction, formModel, formActionType }) ?? {}; } - if (schema.component === 'Divider') { + if (isIncludeSimpleComponents(schema.component)) { componentProps = Object.assign( { type: 'horizontal' }, { diff --git a/src/components/Form/src/helper.ts b/src/components/Form/src/helper.ts index 77e9fbf6f8e..6312931b026 100644 --- a/src/components/Form/src/helper.ts +++ b/src/components/Form/src/helper.ts @@ -95,3 +95,9 @@ export const NO_AUTO_LINK_COMPONENTS: ComponentType[] = [ 'ImageUpload', 'ApiSelect', ]; + +export const simpleComponents = ['Divider', 'BasicTitle']; + +export function isIncludeSimpleComponents(component?: ComponentType) { + return simpleComponents.includes(component || ''); +} diff --git a/src/components/Form/src/hooks/useFormEvents.ts b/src/components/Form/src/hooks/useFormEvents.ts index 6982c611cb3..d27f5af86cc 100644 --- a/src/components/Form/src/hooks/useFormEvents.ts +++ b/src/components/Form/src/hooks/useFormEvents.ts @@ -4,7 +4,12 @@ import type { NamePath } from 'ant-design-vue/lib/form/interface'; import { unref, toRaw, nextTick } from 'vue'; import { isArray, isFunction, isObject, isString, isDef, isNil } from '@/utils/is'; import { deepMerge } from '@/utils'; -import { dateItemType, handleInputNumberValue, defaultValueComponents } from '../helper'; +import { + dateItemType, + handleInputNumberValue, + defaultValueComponents, + isIncludeSimpleComponents, +} from '../helper'; import { dateUtil } from '@/utils/dateUtil'; import { cloneDeep, set, uniqBy, get } from 'lodash-es'; import { error } from '@/utils/log'; @@ -245,7 +250,8 @@ export function useFormEvents({ } const hasField = updateData.every( - (item) => item.component === 'Divider' || (Reflect.has(item, 'field') && item.field), + (item) => + isIncludeSimpleComponents(item.component) || (Reflect.has(item, 'field') && item.field), ); if (!hasField) { @@ -267,7 +273,8 @@ export function useFormEvents({ } const hasField = updateData.every( - (item) => item.component === 'Divider' || (Reflect.has(item, 'field') && item.field), + (item) => + isIncludeSimpleComponents(item.component) || (Reflect.has(item, 'field') && item.field), ); if (!hasField) { @@ -309,7 +316,7 @@ export function useFormEvents({ const currentFieldsValue = getFieldsValue(); schemas.forEach((item) => { if ( - item.component != 'Divider' && + !isIncludeSimpleComponents(item.component) && Reflect.has(item, 'field') && item.field && !isNil(item.defaultValue) &&