mirror of
https://github.com/nocobase/nocobase.git
synced 2026-10-29 18:16:18 +08:00
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:
@@ -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],
|
||||
|
||||
Reference in New Issue
Block a user