fix: clear right-hand value when operator changes in linkage rule (#6862)

* fix:  clear right-hand value when operator changes in linkage rule

* fix: bug
This commit is contained in:
Katherine
2025-05-14 21:43:56 +08:00
committed by GitHub
parent e02581726a
commit 8a5f1f0f2f
3 changed files with 24 additions and 4 deletions
@@ -137,6 +137,7 @@ export const Action: ComposedAction = withDynamicSchemaProps(
variables,
localVariables,
conditionType: rule.conditionType,
variableNameOfLeftCondition: '$nRecord',
},
app.jsonLogic,
);
@@ -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']);
@@ -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],