From ef0d60b683f2ff90f8e4dfeb173e1d8e3ddb71bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=98=B6?= Date: Mon, 11 Jul 2022 18:11:27 +0800 Subject: [PATCH] fix: obo table selector (#613) Co-authored-by: chenos --- .../block-provider/TableSelectorProvider.tsx | 30 ++++++++++++++++--- .../schema-component/antd/table-v2/Table.tsx | 1 + 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/packages/core/client/src/block-provider/TableSelectorProvider.tsx b/packages/core/client/src/block-provider/TableSelectorProvider.tsx index bf66c8573..3fb2a1284 100644 --- a/packages/core/client/src/block-provider/TableSelectorProvider.tsx +++ b/packages/core/client/src/block-provider/TableSelectorProvider.tsx @@ -47,7 +47,7 @@ const recursiveParent = (schema: Schema, component) => { export const TableSelectorProvider = (props) => { const fieldSchema = useFieldSchema(); const ctx = useFormBlockContext() - const { getCollectionJoinField } = useCollectionManager(); + const { getCollectionJoinField, getCollectionFields } = useCollectionManager(); const record = useRecord(); const collectionFieldSchema = recursiveParent(fieldSchema, 'CollectionField'); @@ -63,7 +63,6 @@ export const TableSelectorProvider = (props) => { if (appends?.length) { params['appends'] = appends; } - console.log('record', record); if (collectionField) { if (['oho', 'o2m'].includes(collectionField.interface)) { if (record?.[collectionField.sourceKey]) { @@ -86,8 +85,31 @@ export const TableSelectorProvider = (props) => { } } } - // if (['obo'].includes(collectionField.interface)) { - // } + if (['obo'].includes(collectionField.interface)) { + const fields = getCollectionFields(collectionField.target); + const targetField = fields.find(f => f.foreignKey && f.foreignKey === collectionField.foreignKey); + if (targetField) { + if (record?.[collectionField.foreignKey]) { + params['filter'] = { + $or: [{ + [`${targetField.name}.${targetField.foreignKey}`]: { + $is: null, + } + }, { + [`${targetField.name}.${targetField.foreignKey}`]: { + $eq: record?.[collectionField.foreignKey], + } + }] + } + } else { + params['filter'] = { + [`${targetField.name}.${targetField.foreignKey}`]: { + $is: null, + } + } + } + } + } } return ( diff --git a/packages/core/client/src/schema-component/antd/table-v2/Table.tsx b/packages/core/client/src/schema-component/antd/table-v2/Table.tsx index 213ce603f..2974ea6c2 100644 --- a/packages/core/client/src/schema-component/antd/table-v2/Table.tsx +++ b/packages/core/client/src/schema-component/antd/table-v2/Table.tsx @@ -37,6 +37,7 @@ const useTableColumns = () => { } }, []); const dataIndex = collectionFields?.length > 0 ? collectionFields[0].name : s.name; + return { title: , dataIndex,