diff --git a/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.Item.tsx b/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.Item.tsx index f4b579d38..d011c13bb 100644 --- a/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.Item.tsx +++ b/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.Item.tsx @@ -23,7 +23,8 @@ export const AssociationFilterItem = (props) => { const fieldSchema = useFieldSchema(); const Designer = useDesigner(); const compile = useCompile(); - const { service } = useBlockRequestContext(); + const { service, props: blockProps } = useBlockRequestContext(); + const [searchVisible, setSearchVisible] = useState(false); const collectionFieldName = collectionField.name; @@ -76,7 +77,15 @@ export const AssociationFilterItem = (props) => { delete filters[`af.${collectionFieldName}`]; } - service.run({ ...service.params?.[0], pageSize: 200, page: 1, filter: mergeFilter(Object.values(filters)) }, { filters }); + service.run( + { + ...service.params?.[0], + pageSize: 200, + page: 1, + filter: mergeFilter([Object.values(filters), blockProps?.params?.filter]), + }, + { filters }, + ); }; const handleSearchToggle = (e: MouseEvent) => { diff --git a/packages/core/client/src/schema-component/antd/filter/useFilterActionProps.ts b/packages/core/client/src/schema-component/antd/filter/useFilterActionProps.ts index bbd596645..ed3add46a 100644 --- a/packages/core/client/src/schema-component/antd/filter/useFilterActionProps.ts +++ b/packages/core/client/src/schema-component/antd/filter/useFilterActionProps.ts @@ -107,9 +107,11 @@ export const useFilterFieldProps = ({ options, service, params }) => { const filter = removeNullCondition(values?.filter); const filters = service.params?.[1]?.filters || {}; - filters[`default`] = mergeFilter([defaultFilter, filter]); - - service.run({ ...service.params?.[0], page: 1, filter: mergeFilter(Object.values(filters)) }, { filters }); + filters[`filterAction`] = filter; + service.run( + { ...service.params?.[0], page: 1, filter: mergeFilter([...Object.values(filters), defaultFilter]) }, + { filters }, + ); const items = filter?.$and || filter?.$or; if (items?.length) { field.title = t('{{count}} filter items', { count: items?.length || 0 }); @@ -119,7 +121,16 @@ export const useFilterFieldProps = ({ options, service, params }) => { }, onReset() { const filter = params.filter; - service.run({ ...service.params?.[0], filter, page: 1 }); + const filters = service.params?.[1]?.filters || {}; + delete filters[`filterAction`]; + service.run( + { + ...service.params?.[0], + filter: mergeFilter([...Object.values(filters), filter]), + page: 1, + }, + { filters }, + ); field.title = t('Filter'); }, }; diff --git a/packages/core/client/src/schema-component/antd/table-v2/TableBlockDesigner.tsx b/packages/core/client/src/schema-component/antd/table-v2/TableBlockDesigner.tsx index dce7a8c51..94c301d64 100644 --- a/packages/core/client/src/schema-component/antd/table-v2/TableBlockDesigner.tsx +++ b/packages/core/client/src/schema-component/antd/table-v2/TableBlockDesigner.tsx @@ -1,11 +1,11 @@ import { ArrayItems } from '@formily/antd'; -import { ISchema, observer, useField, useFieldSchema } from '@formily/react'; -import React, { useEffect } from 'react'; +import { ISchema, useField, useFieldSchema } from '@formily/react'; +import React from 'react'; import { useTranslation } from 'react-i18next'; import { useTableBlockContext } from '../../../block-provider'; +import { mergeFilter } from '../../../block-provider/SharedFilterProvider'; import { useCollection } from '../../../collection-manager'; import { useCollectionFilterOptions, useSortFields } from '../../../collection-manager/action-hooks'; -import { useRecord } from '../../../record-provider'; import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings'; import { useSchemaTemplate } from '../../../schema-templates'; import { useDesignable } from '../../hooks'; @@ -81,7 +81,11 @@ export const TableBlockDesigner = () => { params.filter = filter; field.decoratorProps.params = params; fieldSchema['x-decorator-props']['params'] = params; - service.run({ ...service.params?.[0], filter, page: 1 }); + const filters = service.params?.[1]?.filters || {}; + service.run( + { ...service.params?.[0], filter: mergeFilter([...Object.values(filters), filter]), page: 1 }, + { filters }, + ); dn.emit('patch', { schema: { ['x-uid']: fieldSchema['x-uid'],