diff --git a/src/views/settings/creation/index.vue b/src/views/settings/creation/index.vue index b48070f..036f18c 100644 --- a/src/views/settings/creation/index.vue +++ b/src/views/settings/creation/index.vue @@ -273,7 +273,7 @@ + 添加自定义字段 - +
@@ -1494,10 +1494,21 @@ const handleTemplatePageChange = (page: number) => { // 处理技能选择确认(只更新临时状态,不保存到节点) const handleSkillConfirm = (skill: SkillItem) => { selectedSkill.value = skill; + if (selectedElement.value?.kind === 'node') { + selectedElement.value.properties = { + ...(selectedElement.value.properties || {}), + skillName: skill.name, + }; + } }; // 移除已选择的技能(只更新临时状态) const handleRemoveSkill = () => { selectedSkill.value = null; + if (selectedElement.value?.kind === 'node') { + const nextProperties = { ...(selectedElement.value.properties || {}) }; + delete nextProperties.skillName; + selectedElement.value.properties = nextProperties; + } }; // 处理模型选择确认(只更新临时状态,不保存到节点) const handleModelConfirm = (model: any) => { @@ -1710,7 +1721,20 @@ const useWorkflow = async (workflow: WorkflowItem) => { // 初始化其他配置字段(从 config 中读取) if (node.config) { Object.keys(node.config).forEach((key) => { - if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel', 'modelOutputFields'].includes(key)) { + if ( + ![ + 'nodeCode', + 'width', + 'height', + 'x', + 'y', + 'formConfig', + 'inputSource', + 'fieldMetadata', + 'selectedModel', + 'modelOutputFields', + ].includes(key) + ) { const fieldKey = `${node.id}_${key}`; creationFormValues[fieldKey] = node.config[key]; } @@ -1879,7 +1903,10 @@ const hydrateCreationFileFields = (nodes: any[] = []) => { const urls = Array.isArray(rawValue) ? rawValue : rawValue ? [rawValue] : []; if (urls.length === 0) return; creationFieldFiles[key] = urls.map((url: string, index: number) => ({ - name: String(url || '').split('/').pop() || `file-${index + 1}`, + name: + String(url || '') + .split('/') + .pop() || `file-${index + 1}`, url, })); }); @@ -2090,13 +2117,10 @@ const sendMessage = async () => { // 2. 构建节点输入参数 const nodeInputParams = currentWorkflowForCreation.value.nodeInputParams?.map((node: any) => { - const nodeParam: any = { - id: node.id, - nodeCode: node.nodeCode, - name: node.name, - }; + // 先展开原始节点的所有字段(保留 promptContent、isSaveFile、outputConfig、modelOutputFields 等) + const nodeParam: any = { ...node }; - // 添加表单配置和值 + // 用用户填写的值覆盖 formConfig if (node.formConfig && Array.isArray(node.formConfig)) { nodeParam.formConfig = node.formConfig.map((field: any) => { // HTTP body: 将创作模式填写值回写到 body 的 showInForm 子字段 @@ -2138,10 +2162,9 @@ const sendMessage = async () => { }); } - // 添加其他配置 + // 用用户填写的值覆盖 config if (node.config) { nodeParam.config = { ...node.config }; - // 更新 config 中的值 Object.keys(node.config).forEach((key) => { const fieldKey = `${node.id}_${key}`; if (creationFormValues[fieldKey] !== undefined) { @@ -2150,11 +2173,6 @@ const sendMessage = async () => { }); } - // 添加其他字段 - if (node.inputSource) nodeParam.inputSource = node.inputSource; - if (node.modelConfig) nodeParam.modelConfig = node.modelConfig; - if (node.skillName) nodeParam.skillName = node.skillName; - return nodeParam; }) || []; @@ -2310,7 +2328,20 @@ const handleTreeNodeClick = async (data: TreeNode) => { // 初始化其他配置字段(从 config 中读取) if (node.config) { Object.keys(node.config).forEach((key) => { - if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel', 'modelOutputFields'].includes(key)) { + if ( + ![ + 'nodeCode', + 'width', + 'height', + 'x', + 'y', + 'formConfig', + 'inputSource', + 'fieldMetadata', + 'selectedModel', + 'modelOutputFields', + ].includes(key) + ) { const fieldKey = `${node.id}_${key}`; creationFormValues[fieldKey] = node.config[key]; } @@ -2392,7 +2423,20 @@ const handleTreeNodeClick = async (data: TreeNode) => { // 初始化其他配置字段(从 config 中读取) if (node.config) { Object.keys(node.config).forEach((key) => { - if (!['nodeCode', 'width', 'height', 'x', 'y', 'formConfig', 'inputSource', 'fieldMetadata', 'selectedModel', 'modelOutputFields'].includes(key)) { + if ( + ![ + 'nodeCode', + 'width', + 'height', + 'x', + 'y', + 'formConfig', + 'inputSource', + 'fieldMetadata', + 'selectedModel', + 'modelOutputFields', + ].includes(key) + ) { const fieldKey = `${node.id}_${key}`; creationFormValues[fieldKey] = node.config[key]; } @@ -3539,7 +3583,7 @@ const applySelected = () => { if (selectedSkill.value) { p.skillName = selectedSkill.value.name; } else { - delete p.skillName; + p.skillName = null; } // 保存提示词内容