fix: fix operator called of date field (#2701)

This commit is contained in:
被雨水过滤的空气-Rain 2023-09-22 10:51:17 +08:00 committed by GitHub
parent b0069ca64a
commit 9f147085a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 1 deletions

View File

@ -83,6 +83,11 @@ export const transformToFilter = (
values = flatten(values, { values = flatten(values, {
breakOn({ value, path }) { breakOn({ value, path }) {
// 日期字段的 `$dateBetween` 操作符的值是一个数组,需要特殊处理
if (operators[path] === '$dateBetween') {
return true;
}
const collectionField = getCollectionJoinField(`${collectionName}.${path}`); const collectionField = getCollectionJoinField(`${collectionName}.${path}`);
if (collectionField?.target) { if (collectionField?.target) {
if (Array.isArray(value)) { if (Array.isArray(value)) {

View File

@ -7,7 +7,7 @@ import React from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { useFormBlockContext } from '../../../block-provider'; import { useFormBlockContext } from '../../../block-provider';
import { useCollection, useCollectionManager } from '../../../collection-manager'; import { useCollection, useCollectionManager } from '../../../collection-manager';
import { isPatternDisabled, SchemaSettings } from '../../../schema-settings'; import { SchemaSettings, isPatternDisabled } from '../../../schema-settings';
import { useCompile, useDesignable, useFieldModeOptions } from '../../hooks'; import { useCompile, useDesignable, useFieldModeOptions } from '../../hooks';
import { useOperatorList } from '../filter/useOperators'; import { useOperatorList } from '../filter/useOperators';
import { isFileCollection } from './FormItem'; import { isFileCollection } from './FormItem';
@ -496,6 +496,7 @@ export const useEnsureOperatorsValid = () => {
export const EditOperator = () => { export const EditOperator = () => {
const compile = useCompile(); const compile = useCompile();
const fieldSchema = useFieldSchema(); const fieldSchema = useFieldSchema();
const field = useField<Field>();
const { t } = useTranslation(); const { t } = useTranslation();
const { dn } = useDesignable(); const { dn } = useDesignable();
const operatorList = useOperatorList(); const operatorList = useOperatorList();
@ -513,10 +514,39 @@ export const EditOperator = () => {
options={compile(operatorList)} options={compile(operatorList)}
onChange={(v) => { onChange={(v) => {
storedOperators[fieldSchema.name] = v; storedOperators[fieldSchema.name] = v;
const operator = operatorList.find((item) => item.value === v);
const schema: ISchema = { const schema: ISchema = {
['x-uid']: uid, ['x-uid']: uid,
['x-filter-operators']: storedOperators, ['x-filter-operators']: storedOperators,
}; };
// 根据操作符的配置,设置组件的属性
if (operator?.schema?.['x-component']) {
_.set(fieldSchema, 'x-component-props.component', operator.schema['x-component']);
_.set(field, 'componentProps.component', operator.schema['x-component']);
field.reset();
dn.emit('patch', {
schema: {
['x-uid']: fieldSchema['x-uid'],
['x-component-props']: {
component: operator.schema['x-component'],
},
},
});
} else if (fieldSchema['x-component-props']?.component) {
_.set(fieldSchema, 'x-component-props.component', null);
_.set(field, 'componentProps.component', null);
field.reset();
dn.emit('patch', {
schema: {
['x-uid']: fieldSchema['x-uid'],
['x-component-props']: {
component: null,
},
},
});
}
dn.emit('patch', { dn.emit('patch', {
schema, schema,
}); });