diff --git a/packages/core/client/src/block-provider/TableBlockProvider.tsx b/packages/core/client/src/block-provider/TableBlockProvider.tsx index 64c2e4b72..59a8f4375 100644 --- a/packages/core/client/src/block-provider/TableBlockProvider.tsx +++ b/packages/core/client/src/block-provider/TableBlockProvider.tsx @@ -1,7 +1,7 @@ import { ArrayField, createForm } from '@formily/core'; import { FormContext, useField, useFieldSchema } from '@formily/react'; import React, { createContext, useContext, useEffect, useMemo, useState } from 'react'; -import { useCollection, useCollectionManager } from '../collection-manager'; +import { useCollectionManager } from '../collection-manager'; import { useFilterBlock } from '../filter-provider/FilterProvider'; import { useRecord } from '../record-provider'; import { FixedBlockWrapper, SchemaComponentOptions, removeNullCondition } from '../schema-component'; @@ -102,13 +102,8 @@ export const TableBlockProvider = (props) => { const record = useRecord(); const fieldSchema = useFieldSchema(); const { getCollection, getCollectionField } = useCollectionManager(); - const parent = useCollection(); - const filter = generateFilterParams(record, parent.name, parent.filterTargetKey, {}); const collection = getCollection(props.collection); const { treeTable } = fieldSchema?.['x-decorator-props'] || {}; - if (filter) { - params.filter = filter; - } if (props.dragSort) { params['sort'] = ['sort']; } @@ -255,28 +250,3 @@ export const useTableBlockProps = () => { }, }; }; - -export const generateFilterParams = (record, parentName, filterTargetKey, defaultFilter) => { - let filter = defaultFilter; - - if (parentName) { - const filterByTk = `${record?.[filterTargetKey || 'id']}`; - if (filter) { - filter = { - $and: [ - filter, - { - collectionName: parentName, - recordId: filterByTk, - }, - ], - }; - } else { - filter = { - collectionName: parentName, - recordId: filterByTk, - }; - } - } - return 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 656c092d1..b5cba5ce1 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 @@ -13,8 +13,6 @@ import { useCompile, useDesignable } from '../../hooks'; import { removeNullCondition } from '../filter'; import { FixedBlockDesignerItem } from '../page'; import { FilterDynamicComponent } from './FilterDynamicComponent'; -import cloneDeep from 'lodash/cloneDeep'; -import isEmpty from 'lodash/isEmpty'; export const TableBlockDesigner = () => { const { name, title, sortable } = useCollection(); @@ -27,9 +25,7 @@ export const TableBlockDesigner = () => { const { t } = useTranslation(); const { dn } = useDesignable(); const compile = useCompile(); - const defaultFilter = removeNullCondition(fieldSchema?.['x-decorator-props']?.params?.filter || {}); - // 当前filter 不需要在 "设置数据范围" 表单里初始化,只需要在查询的时候合并到查询条件 filter中 - const crypticFilter = fieldSchema?.['x-decorator-props']?.params?.crypticFilter; + const defaultFilter = fieldSchema?.['x-decorator-props']?.params?.filter || {}; const defaultSort = fieldSchema?.['x-decorator-props']?.params?.sort || []; const defaultResource = fieldSchema?.['x-decorator-props']?.resource; const supportTemplate = !fieldSchema?.['x-decorator-props']?.disableTemplate; @@ -71,16 +67,12 @@ export const TableBlockDesigner = () => { ({ filter }) => { filter = removeNullCondition(filter); const params = field.decoratorProps.params || {}; - let tempFilter = !isEmpty(crypticFilter) ? crypticFilter : filter; - if (!isEmpty(filter)) { - tempFilter = !isEmpty(crypticFilter) ? mergeFilter([filter, tempFilter]) : cloneDeep(filter); - } params.filter = filter; field.decoratorProps.params = params; fieldSchema['x-decorator-props']['params'] = params; const filters = service.params?.[1]?.filters || {}; service.run( - { ...service.params?.[0], filter: mergeFilter([...Object.values(filters), tempFilter]), page: 1 }, + { ...service.params?.[0], filter: mergeFilter([...Object.values(filters), filter]), page: 1 }, { filters }, ); dn.emit('patch', { @@ -90,7 +82,7 @@ export const TableBlockDesigner = () => { }, }); }, - [field, crypticFilter], + [field], ); return ( diff --git a/packages/core/client/src/schema-initializer/utils.ts b/packages/core/client/src/schema-initializer/utils.ts index e442cea74..fa6759d81 100644 --- a/packages/core/client/src/schema-initializer/utils.ts +++ b/packages/core/client/src/schema-initializer/utils.ts @@ -1323,8 +1323,6 @@ export const createTableBlockSchema = (options) => { TableBlockDesigner, blockType, pageSize = 20, - // 当前filter 不需要在 "设置数据范围" 表单里初始化,只需要在查询的时候合并到查询条件 filter中 - crypticFilter = {}, ...others } = options; const schema: ISchema = { @@ -1337,7 +1335,6 @@ export const createTableBlockSchema = (options) => { action: 'list', params: { pageSize, - crypticFilter, }, rowKey, showIndex: true, diff --git a/packages/plugins/audit-logs/src/client/AuditLogsBlockInitializer.tsx b/packages/plugins/audit-logs/src/client/AuditLogsBlockInitializer.tsx index 4c09cf0bc..a8ccbd350 100644 --- a/packages/plugins/audit-logs/src/client/AuditLogsBlockInitializer.tsx +++ b/packages/plugins/audit-logs/src/client/AuditLogsBlockInitializer.tsx @@ -1,30 +1,13 @@ import { TableOutlined } from '@ant-design/icons'; -import { ISchema, useFieldSchema } from '@formily/react'; -import { - createTableBlockSchema, - generateFilterParams, - SchemaInitializer, - useCollection, - useRecord, -} from '@nocobase/client'; +import { ISchema } from '@formily/react'; +import { createTableBlockSchema, SchemaInitializer } from '@nocobase/client'; import React from 'react'; import { useTranslation } from 'react-i18next'; -import { getResourceOfBlockDesigner } from './utils'; export const AuditLogsBlockInitializer = (props) => { - const { filterTargetKey } = useCollection(); - const { insert } = props; const { t } = useTranslation(); - const record = useRecord(); - const fieldSchema = useFieldSchema(); - const crypticFilterFromAuditLogs = generateFilterParams( - record, - getResourceOfBlockDesigner(fieldSchema), - filterTargetKey, - {}, - ); const schema = createTableBlockSchema({ collection: 'auditLogs', rowKey: 'id', @@ -33,8 +16,6 @@ export const AuditLogsBlockInitializer = (props) => { tableActionColumnInitializers: 'AuditLogsTableActionColumnInitializers', tableBlockProvider: 'AuditLogsBlockProvider', disableTemplate: true, - // 当前filter 不需要在 "设置数据范围" 表单里初始化,只需要在查询的时候合并到查询条件 filter中 - crypticFilter: crypticFilterFromAuditLogs, }); return ( diff --git a/packages/plugins/audit-logs/src/client/deplicated/AuditLogs.tsx b/packages/plugins/audit-logs/src/client/deplicated/AuditLogs.tsx index 67d043b86..8d8781d60 100644 --- a/packages/plugins/audit-logs/src/client/deplicated/AuditLogs.tsx +++ b/packages/plugins/audit-logs/src/client/deplicated/AuditLogs.tsx @@ -4,7 +4,6 @@ import { CollectionManagerContext, CollectionManagerProvider, FormProvider, - generateFilterParams, SchemaComponent, TableBlockProvider, useCollection, @@ -459,35 +458,55 @@ export const AuditLogs: any = () => { ); }; -AuditLogs.Decorator = observer((props: any) => { - const parent = useCollection(); - const record = useRecord(); - const { interfaces } = useContext(CollectionManagerContext); - const filter = generateFilterParams(record, parent.name, parent.filterTargetKey, props?.params?.filter) || {}; - const defaults = { - collection: 'auditLogs', - resource: 'auditLogs', - action: 'list', - params: { - pageSize: 20, - appends: ['collection', 'user'], - ...props.params, - filter, - sort: '-createdAt', - }, - rowKey: 'id', - showIndex: true, - dragSort: false, - }; - return ( - - - {props.children} - - - ); -}, { - displayName: 'AuditLogs.Decorator' -}); +AuditLogs.Decorator = observer( + (props: any) => { + const parent = useCollection(); + const record = useRecord(); + const { interfaces } = useContext(CollectionManagerContext); + let filter = props?.params?.filter; + if (parent.name) { + const filterByTk = record?.[parent.filterTargetKey || 'id']; + if (filter) { + filter = { + $and: [ + filter, + { + collectionName: parent.name, + recordId: `${filterByTk}`, + }, + ], + }; + } else { + filter = { + collectionName: parent.name, + recordId: `${filterByTk}`, + }; + } + } + const defaults = { + collection: 'auditLogs', + resource: 'auditLogs', + action: 'list', + params: { + pageSize: 20, + appends: ['collection', 'user'], + ...props.params, + filter, + sort: '-createdAt', + }, + rowKey: 'id', + showIndex: true, + dragSort: false, + }; + return ( + + + {props.children} + + + ); + }, + { displayName: 'AuditLogs.Decorator' }, +); AuditLogs.Designer = AuditLogsDesigner; diff --git a/packages/plugins/audit-logs/src/client/utils.ts b/packages/plugins/audit-logs/src/client/utils.ts index 3a7cc2177..1ecc63443 100644 --- a/packages/plugins/audit-logs/src/client/utils.ts +++ b/packages/plugins/audit-logs/src/client/utils.ts @@ -1,6 +1,4 @@ import { uid } from '@formily/shared'; -import { Schema } from '@formily/react'; -import cloneDeep from 'lodash/cloneDeep'; export const createSchema = () => { const filterSchema = { @@ -303,18 +301,3 @@ export const createSchema = () => { }; return schema; }; - -/** - * 获取 TableBlockDesigner 或 DetailsDesigner 的 resource - */ -export function getResourceOfBlockDesigner(schema: Schema) { - let tempSchema = cloneDeep(schema); - while ( - tempSchema && - ((tempSchema?.['x-designer'] !== 'TableBlockDesigner' && tempSchema?.['x-designer'] !== 'DetailsDesigner') || - tempSchema?.['x-decorator-props']?.['resource'] === 'auditLogs') - ) { - tempSchema = tempSchema.parent; - } - return tempSchema?.['x-decorator-props']?.['resource']; -}