From d6dfdfd54d90317db31594f526b7485f4ac96930 Mon Sep 17 00:00:00 2001 From: wjh Date: Wed, 18 Sep 2024 18:23:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=AD=9B=E9=80=89=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=AD=97=E6=AE=B5=E6=B7=BB=E5=8A=A0=E8=BF=90?= =?UTF-8?q?=E7=AE=97=E7=AC=A6=20(#1537)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.daoyoucloud.com/daoyoucloud/tachybase/pulls/1537 Co-authored-by: wjh Co-committed-by: wjh --- .../src/collection-manager/interfaces/m2m.tsx | 3 ++- .../src/collection-manager/interfaces/m2o.tsx | 3 ++- .../src/collection-manager/interfaces/o2m.tsx | 3 ++- .../src/collection-manager/interfaces/o2o.tsx | 5 ++++- .../interfaces/properties/operators.ts | 14 ++++++++++++++ packages/core/client/src/filter-provider/utils.ts | 6 ++---- .../antd/form-item/SchemaSettingOptions.tsx | 6 ++++-- 7 files changed, 30 insertions(+), 10 deletions(-) diff --git a/packages/core/client/src/collection-manager/interfaces/m2m.tsx b/packages/core/client/src/collection-manager/interfaces/m2m.tsx index 685bcca54..a8627914e 100644 --- a/packages/core/client/src/collection-manager/interfaces/m2m.tsx +++ b/packages/core/client/src/collection-manager/interfaces/m2m.tsx @@ -2,7 +2,7 @@ import { ISchema, uid } from '@tachybase/schema'; import { CollectionFieldInterface } from '../../data-source/collection-field-interface/CollectionFieldInterface'; import { getUniqueKeyFromCollection } from './o2m'; -import { defaultProps, relationshipType, reverseFieldProperties } from './properties'; +import { defaultProps, operators, relationshipType, reverseFieldProperties } from './properties'; export class M2MFieldInterface extends CollectionFieldInterface { name = 'm2m'; @@ -233,6 +233,7 @@ export class M2MFieldInterface extends CollectionFieldInterface { }; filterable = { nested: true, + operators: operators.collectionField, children: [ // { // name: 'id', diff --git a/packages/core/client/src/collection-manager/interfaces/m2o.tsx b/packages/core/client/src/collection-manager/interfaces/m2o.tsx index 3236e7866..ce4954bfa 100644 --- a/packages/core/client/src/collection-manager/interfaces/m2o.tsx +++ b/packages/core/client/src/collection-manager/interfaces/m2o.tsx @@ -2,7 +2,7 @@ import { ISchema } from '@tachybase/schema'; import { CollectionFieldInterface } from '../../data-source/collection-field-interface/CollectionFieldInterface'; import { getUniqueKeyFromCollection } from './o2m'; -import { constraintsProps, relationshipType, reverseFieldProperties } from './properties'; +import { constraintsProps, operators, relationshipType, reverseFieldProperties } from './properties'; export class M2OFieldInterface extends CollectionFieldInterface { name = 'm2o'; @@ -168,6 +168,7 @@ export class M2OFieldInterface extends CollectionFieldInterface { filterable = { nested: true, + operators: operators.collectionField, children: [ // { // name: 'id', diff --git a/packages/core/client/src/collection-manager/interfaces/o2m.tsx b/packages/core/client/src/collection-manager/interfaces/o2m.tsx index 90a1def9c..96f1c258c 100644 --- a/packages/core/client/src/collection-manager/interfaces/o2m.tsx +++ b/packages/core/client/src/collection-manager/interfaces/o2m.tsx @@ -2,7 +2,7 @@ import { ISchema } from '@tachybase/schema'; import { Collection } from '../../data-source'; import { CollectionFieldInterface } from '../../data-source/collection-field-interface/CollectionFieldInterface'; -import { constraintsProps, relationshipType, reverseFieldProperties } from './properties'; +import { constraintsProps, operators, relationshipType, reverseFieldProperties } from './properties'; export class O2MFieldInterface extends CollectionFieldInterface { name = 'o2m'; @@ -190,6 +190,7 @@ export class O2MFieldInterface extends CollectionFieldInterface { }; filterable = { nested: true, + operators: operators.collectionField, children: [ // { // name: 'id', diff --git a/packages/core/client/src/collection-manager/interfaces/o2o.tsx b/packages/core/client/src/collection-manager/interfaces/o2o.tsx index e437c52d5..6200b27a5 100644 --- a/packages/core/client/src/collection-manager/interfaces/o2o.tsx +++ b/packages/core/client/src/collection-manager/interfaces/o2o.tsx @@ -2,7 +2,7 @@ import { ISchema } from '@tachybase/schema'; import { CollectionFieldInterface } from '../../data-source/collection-field-interface/CollectionFieldInterface'; import { getUniqueKeyFromCollection } from './o2m'; -import { constraintsProps, relationshipType, reverseFieldProperties } from './properties'; +import { constraintsProps, operators, relationshipType, reverseFieldProperties } from './properties'; export class O2OFieldInterface extends CollectionFieldInterface { name = 'o2o'; @@ -171,6 +171,7 @@ export class O2OFieldInterface extends CollectionFieldInterface { }; filterable = { nested: true, + operators: operators.collectionField, children: [ // { // name: 'id', @@ -351,6 +352,7 @@ export class OHOFieldInterface extends CollectionFieldInterface { }; filterable = { nested: true, + operators: operators.collectionField, children: [ // { // name: 'id', @@ -531,6 +533,7 @@ export class OBOFieldInterface extends CollectionFieldInterface { }; filterable = { nested: true, + operators: operators.collectionField, children: [ // { // name: 'id', diff --git a/packages/core/client/src/collection-manager/interfaces/properties/operators.ts b/packages/core/client/src/collection-manager/interfaces/properties/operators.ts index d91ca9ab0..d4135c9a4 100644 --- a/packages/core/client/src/collection-manager/interfaces/properties/operators.ts +++ b/packages/core/client/src/collection-manager/interfaces/properties/operators.ts @@ -174,3 +174,17 @@ export const collection = [ { label: '{{t("is empty")}}', value: '$empty', noValue: true }, { label: '{{t("is not empty")}}', value: '$notEmpty', noValue: true }, ]; + +export const collectionField = [ + { + label: '{{t("is")}}', + value: '$eq', + selected: true, + }, + { + label: '{{t("is not")}}', + value: '$ne', + }, + { label: '{{t("is empty")}}', value: '$empty', noValue: true }, + { label: '{{t("is not empty")}}', value: '$notEmpty', noValue: true }, +]; diff --git a/packages/core/client/src/filter-provider/utils.ts b/packages/core/client/src/filter-provider/utils.ts index cc90c1cab..9e033b94f 100644 --- a/packages/core/client/src/filter-provider/utils.ts +++ b/packages/core/client/src/filter-provider/utils.ts @@ -134,9 +134,9 @@ export const transformToFilter = ( const result = { $and: Object.keys(values) .map((key) => { + const defKey = key; let value = _.get(values, key); const collectionField = getCollectionJoinField(`${collectionName}.${key}`); - if (collectionField?.target) { value = getValuesByPath(value, collectionField.targetKey || 'id'); key = `${key}.${collectionField.targetKey || 'id'}`; @@ -145,7 +145,6 @@ export const transformToFilter = ( if (!value) { return null; } - // 处理布尔类型 if (operators[key] === '$isTruly' || operators[key] === '$isFalsy') { if (value === 'true') { @@ -162,10 +161,9 @@ export const transformToFilter = ( }; } } - return { [key]: { - [operators[key] || '$eq']: value, + [operators[key] || operators[defKey] || '$eq']: value, }, }; }) diff --git a/packages/core/client/src/schema-component/antd/form-item/SchemaSettingOptions.tsx b/packages/core/client/src/schema-component/antd/form-item/SchemaSettingOptions.tsx index 459d4a070..7258e4fe4 100644 --- a/packages/core/client/src/schema-component/antd/form-item/SchemaSettingOptions.tsx +++ b/packages/core/client/src/schema-component/antd/form-item/SchemaSettingOptions.tsx @@ -484,6 +484,7 @@ export const useEnsureOperatorsValid = () => { export const EditOperator = () => { const compile = useCompile(); const fieldSchema = useFieldSchema(); + const field = useField(); const { t } = useTranslation(); const { dn } = useDesignable(); @@ -507,7 +508,7 @@ export const EditOperator = () => { ['x-uid']: uid, ['x-filter-operators']: storedOperators, }; - let componentProps = {}; + let componentProps = { ...fieldSchema['x-component-props'] }; const isCustom = (fieldSchema.name as string).includes('__custom'); // 根据操作符的配置,设置组件的属性 if (operator?.schema?.['x-component']) { @@ -516,6 +517,7 @@ export const EditOperator = () => { field.reset(); componentProps = { component: operator.schema['x-component'], + ...fieldSchema['x-component-props'], ...operator.schema?.['x-component-props'], }; const dnSchema = { @@ -544,6 +546,7 @@ export const EditOperator = () => { field.reset(); componentProps = { component: isCustom ? fieldSchema['x-component-props']?.component : null, + ...fieldSchema['x-component-props'], ...operator.schema?.['x-component-props'], }; const dnSchema = { @@ -557,7 +560,6 @@ export const EditOperator = () => { } dn.emit('patch', dnSchema); } - field.componentProps = componentProps; dn.emit('patch', { schema,