diff --git a/src/components/composer/ComposerCard.vue b/src/components/composer/ComposerCard.vue index fd9ce7f..5e9212a 100644 --- a/src/components/composer/ComposerCard.vue +++ b/src/components/composer/ComposerCard.vue @@ -146,12 +146,10 @@ export default defineComponent({ }, }, setup(props) { - const getCurrentExistingVar = inject("getCurrentExistingVar"); // 创建响应式的commandIndex const commandIndex = computed(() => props.commandIndex); // 主要用于VariableInput组件的变量选择下拉框,获取当前命令的索引 provide("commandIndex", commandIndex); - return { getCurrentExistingVar }; }, methods: { handleOutputVariableUpdate(result) { diff --git a/src/components/composer/ComposerFlow.vue b/src/components/composer/ComposerFlow.vue index 46d6537..cddeea0 100644 --- a/src/components/composer/ComposerFlow.vue +++ b/src/components/composer/ComposerFlow.vue @@ -90,10 +90,6 @@ export default defineComponent({ default: true, }, }, - setup() { - const getCurrentExistingVar = inject("getCurrentExistingVar"); - return { getCurrentExistingVar }; - }, emits: ["update:modelValue", "add-command", "action"], data() { return { diff --git a/src/components/composer/FlowTabs.vue b/src/components/composer/FlowTabs.vue index e301be4..f7e18e0 100644 --- a/src/components/composer/FlowTabs.vue +++ b/src/components/composer/FlowTabs.vue @@ -151,7 +151,7 @@ export default defineComponent({ const getOutputVariables = (flow = getCurrentFlow()) => { const variables = []; for (const [index, cmd] of flow.commands.entries()) { - if (cmd.outputVariable) { + if (cmd.outputVariable && cmd.asyncMode !== "then") { const { name, details = {} } = cmd.outputVariable; variables.push( ...[name, ...Object.values(details)].map((variable) => ({ @@ -199,12 +199,6 @@ export default defineComponent({ provide("getCurrentVariables", getCurrentVariables); - const getCurrentExistingVar = () => { - return [...getCurrentVariables(), ...getCurrentFunctions()]; - }; - - provide("getCurrentExistingVar", getCurrentExistingVar); - return { flows, mainFlow, @@ -352,6 +346,7 @@ export default defineComponent({ "placeholder", "summary", "type", + "defaultOutputVariable", ]; uselessProps.forEach((prop) => delete cmdCopy[prop]); return cmdCopy; diff --git a/src/components/composer/MultiParams.vue b/src/components/composer/MultiParams.vue index 836a763..0b15bed 100644 --- a/src/components/composer/MultiParams.vue +++ b/src/components/composer/MultiParams.vue @@ -3,7 +3,7 @@ @@ -204,6 +204,15 @@ export default defineComponent({ width: `calc(${columnWidth}% - var(--grid-gap))`, }; }, + updateFuncName(value) { + this.funcName = value; + // 如果切换了子命令,更新输出变量 + const selectSubCommand = this.getSelectSubCommand(value); + if (!selectSubCommand) return; + const newModelValue = { ...this.modelValue, value: value }; + delete newModelValue.outputVariable; + this.$emit("update:modelValue", newModelValue); + }, }, mounted() { const argvs = this.modelValue.argvs || this.defaultArgvs; diff --git a/src/components/composer/card/OutputEditor.vue b/src/components/composer/card/OutputEditor.vue index 20fab7d..8eb6c97 100644 --- a/src/components/composer/card/OutputEditor.vue +++ b/src/components/composer/card/OutputEditor.vue @@ -10,6 +10,7 @@ cmd.value === this.command.value ); }, + defaultOutputVariable() { + return ( + this.currentSubCommand?.defaultOutputVariable || + this.command.defaultOutputVariable + ); + }, commandName() { return this.currentSubCommand.label || this.command.label; }, @@ -158,35 +165,36 @@ export default defineComponent({ }, watch: { "command.outputVariable": { - immediate: true, - deep: true, - handler(newValue) { - this.initOutputVars(newValue); + handler(value) { + this.initOutputVars(value); }, + immediate: true, }, "command.asyncMode": { - immediate: true, - handler(newValue) { - this.asyncMode = newValue; + handler(value) { + this.asyncMode = value; }, + immediate: true, }, "command.callbackFunc": { - immediate: true, - handler(newValue) { - this.callbackFunc = newValue; + handler(value) { + this.callbackFunc = value; }, + immediate: true, }, }, methods: { - initOutputVars(outputVariable) { + initOutputVars(value) { + const outputVariable = value || this.defaultOutputVariable; // 初始化完整输出变量名 - if (!outputVariable) return; - this.simpleOutputVar = outputVariable.name || ""; - - if (this.currentOutputs) { - // 初始化详细输出变量,直接使用扁平化的结构 - this.outputVars = outputVariable?.details || {}; + if (!outputVariable) { + this.simpleOutputVar = ""; + this.outputVars = {}; + return; } + + this.simpleOutputVar = outputVariable.name; + this.outputVars = outputVariable.details; }, handleConfirm() { const outputVariable = {}; diff --git a/src/components/composer/card/output/OutputField.vue b/src/components/composer/card/output/OutputField.vue index 3ec7bcc..2f30704 100644 --- a/src/components/composer/card/output/OutputField.vue +++ b/src/components/composer/card/output/OutputField.vue @@ -13,6 +13,21 @@
{{ label }}