diff --git a/packages/core/client/src/schema-component/antd/action/Action.tsx b/packages/core/client/src/schema-component/antd/action/Action.tsx index 0b0852a83b4..96f8eec8e46 100644 --- a/packages/core/client/src/schema-component/antd/action/Action.tsx +++ b/packages/core/client/src/schema-component/antd/action/Action.tsx @@ -137,6 +137,7 @@ export const Action: ComposedAction = withDynamicSchemaProps( variables, localVariables, conditionType: rule.conditionType, + variableNameOfLeftCondition: '$nRecord', }, app.jsonLogic, ); diff --git a/packages/core/client/src/schema-component/antd/action/utils.ts b/packages/core/client/src/schema-component/antd/action/utils.ts index 216035160a4..dd0b165ca38 100644 --- a/packages/core/client/src/schema-component/antd/action/utils.ts +++ b/packages/core/client/src/schema-component/antd/action/utils.ts @@ -88,6 +88,7 @@ export const linkageAction = async ( variables, localVariables, conditionType, + variableNameOfLeftCondition, }: { operator; field; @@ -95,6 +96,7 @@ export const linkageAction = async ( variables: VariablesContextType; localVariables: VariableOption[]; conditionType: 'advanced' | 'basic'; + variableNameOfLeftCondition?: string; }, jsonLogic: any, ) => { @@ -103,7 +105,12 @@ export const linkageAction = async ( switch (operator) { case ActionType.Visible: - if (await conditionAnalyses({ ruleGroup: condition, variables, localVariables, conditionType }, jsonLogic)) { + if ( + await conditionAnalyses( + { ruleGroup: condition, variables, localVariables, conditionType, variableNameOfLeftCondition }, + jsonLogic, + ) + ) { displayResult.push(operator); field.data = field.data || {}; field.data.hidden = false; @@ -115,7 +122,12 @@ export const linkageAction = async ( field.display = last(displayResult); break; case ActionType.Hidden: - if (await conditionAnalyses({ ruleGroup: condition, variables, localVariables, conditionType }, jsonLogic)) { + if ( + await conditionAnalyses( + { ruleGroup: condition, variables, localVariables, conditionType, variableNameOfLeftCondition }, + jsonLogic, + ) + ) { field.data = field.data || {}; field.data.hidden = true; } else { @@ -135,7 +147,12 @@ export const linkageAction = async ( field.componentProps['disabled'] = last(disableResult); break; case ActionType.Active: - if (await conditionAnalyses({ ruleGroup: condition, variables, localVariables, conditionType }, jsonLogic)) { + if ( + await conditionAnalyses( + { ruleGroup: condition, variables, localVariables, conditionType, variableNameOfLeftCondition }, + jsonLogic, + ) + ) { disableResult.push(false); } else { disableResult.push(!!field.componentProps?.['disabled']); diff --git a/packages/core/client/src/schema-component/antd/linkageFilter/useValues.ts b/packages/core/client/src/schema-component/antd/linkageFilter/useValues.ts index 57fbd075012..9e4919e8a87 100644 --- a/packages/core/client/src/schema-component/antd/linkageFilter/useValues.ts +++ b/packages/core/client/src/schema-component/antd/linkageFilter/useValues.ts @@ -118,7 +118,9 @@ export const useValues = (): UseValuesReturn => { const s1 = cloneDeep(field.data.schema); const s2 = cloneDeep(operator?.schema); field.data.schema = merge(s1, s2); - field.data.value = operator.noValue ? operator.default || true : undefined; + if (!operator.noValue) { + setRightValue(undefined); + } data2value(); }, [data2value, field.data],