fix(plugin-workflow): fix scope variable in loop (#2633)
This commit is contained in:
		
							parent
							
								
									cf17d8015f
								
							
						
					
					
						commit
						12c811eab3
					
				@ -6,7 +6,13 @@ import { Branch } from '../Branch';
 | 
				
			|||||||
import { useFlowContext } from '../FlowContext';
 | 
					import { useFlowContext } from '../FlowContext';
 | 
				
			||||||
import { NAMESPACE, lang } from '../locale';
 | 
					import { NAMESPACE, lang } from '../locale';
 | 
				
			||||||
import useStyles from '../style';
 | 
					import useStyles from '../style';
 | 
				
			||||||
import { VariableOption, defaultFieldNames, nodesOptions, triggerOptions, useWorkflowVariableOptions } from '../variable';
 | 
					import {
 | 
				
			||||||
 | 
					  VariableOption,
 | 
				
			||||||
 | 
					  defaultFieldNames,
 | 
				
			||||||
 | 
					  nodesOptions,
 | 
				
			||||||
 | 
					  triggerOptions,
 | 
				
			||||||
 | 
					  useWorkflowVariableOptions,
 | 
				
			||||||
 | 
					} from '../variable';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function findOption(options: VariableOption[], paths: string[]) {
 | 
					function findOption(options: VariableOption[], paths: string[]) {
 | 
				
			||||||
  let opts = options;
 | 
					  let opts = options;
 | 
				
			||||||
@ -15,9 +21,12 @@ function findOption(options: VariableOption[], paths: string[]) {
 | 
				
			|||||||
    const path = paths[i];
 | 
					    const path = paths[i];
 | 
				
			||||||
    const current = opts.find((item) => item.value === path);
 | 
					    const current = opts.find((item) => item.value === path);
 | 
				
			||||||
    if (!current) {
 | 
					    if (!current) {
 | 
				
			||||||
      break;
 | 
					      return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    option = current;
 | 
					    option = current;
 | 
				
			||||||
 | 
					    if (!current.isLeaf && current.loadChildren) {
 | 
				
			||||||
 | 
					      current.loadChildren(current);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    if (current.children) {
 | 
					    if (current.children) {
 | 
				
			||||||
      opts = current.children;
 | 
					      opts = current.children;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -111,7 +120,11 @@ export default {
 | 
				
			|||||||
    // find target data model by path described in `config.target`
 | 
					    // find target data model by path described in `config.target`
 | 
				
			||||||
    // 1. get options from $context/$jobsMapByNodeId
 | 
					    // 1. get options from $context/$jobsMapByNodeId
 | 
				
			||||||
    // 2. route to sub-options and use as loop target options
 | 
					    // 2. route to sub-options and use as loop target options
 | 
				
			||||||
    let targetOption: VariableOption = { key: 'item', [fieldNames.value]: 'item', [fieldNames.label]: lang('Loop target') };
 | 
					    let targetOption: VariableOption = {
 | 
				
			||||||
 | 
					      key: 'item',
 | 
				
			||||||
 | 
					      [fieldNames.value]: 'item',
 | 
				
			||||||
 | 
					      [fieldNames.label]: lang('Loop target'),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (typeof target === 'string' && target.startsWith('{{') && target.endsWith('}}')) {
 | 
					    if (typeof target === 'string' && target.startsWith('{{') && target.endsWith('}}')) {
 | 
				
			||||||
      const paths = target
 | 
					      const paths = target
 | 
				
			||||||
@ -122,7 +135,7 @@ export default {
 | 
				
			|||||||
      const targetOptions = [nodesOptions, triggerOptions].map((item: any) => {
 | 
					      const targetOptions = [nodesOptions, triggerOptions].map((item: any) => {
 | 
				
			||||||
        const opts = item.useOptions(options).filter(Boolean);
 | 
					        const opts = item.useOptions(options).filter(Boolean);
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
          [fieldNames.label]: compile(item.title),
 | 
					          [fieldNames.label]: compile(item.label),
 | 
				
			||||||
          [fieldNames.value]: item.value,
 | 
					          [fieldNames.value]: item.value,
 | 
				
			||||||
          key: item.value,
 | 
					          key: item.value,
 | 
				
			||||||
          [fieldNames.children]: opts,
 | 
					          [fieldNames.children]: opts,
 | 
				
			||||||
@ -132,7 +145,7 @@ export default {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      const found = findOption(targetOptions, paths);
 | 
					      const found = findOption(targetOptions, paths);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      targetOption = Object.assign({ ...targetOption }, found, targetOption);
 | 
					      targetOption = Object.assign({}, found, targetOption);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return [
 | 
					    return [
 | 
				
			||||||
 | 
				
			|||||||
@ -260,7 +260,7 @@ function getNormalizedFields(collectionName, { compile, getCollectionFields }) {
 | 
				
			|||||||
  return otherFields.filter((field) => field.interface && !field.hidden);
 | 
					  return otherFields.filter((field) => field.interface && !field.hidden);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function loadChildren(option) {
 | 
					function loadChildren(option) {
 | 
				
			||||||
  const appends = getNextAppends(option.field, option.appends);
 | 
					  const appends = getNextAppends(option.field, option.appends);
 | 
				
			||||||
  const result = getCollectionFieldOptions({
 | 
					  const result = getCollectionFieldOptions({
 | 
				
			||||||
    collection: option.field.target,
 | 
					    collection: option.field.target,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user