From 0d90e8eeb92e78570f03a75e1173c055473e3805 Mon Sep 17 00:00:00 2001 From: Luo Fan <44999219+fannluo@users.noreply.github.com> Date: Fri, 12 Apr 2019 18:02:40 +0800 Subject: [PATCH] =?UTF-8?q?improvement:=20=E5=AD=90=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E4=BF=9D=E7=95=99=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E5=8F=82=E6=95=B0=E5=80=BC=20(#79)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/TemplateEdit/NodeConfig.vue | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/pipeline/blueflow/src/pages/template/TemplateEdit/NodeConfig.vue b/pipeline/blueflow/src/pages/template/TemplateEdit/NodeConfig.vue index 98157ed2a1..29b86d0404 100644 --- a/pipeline/blueflow/src/pages/template/TemplateEdit/NodeConfig.vue +++ b/pipeline/blueflow/src/pages/template/TemplateEdit/NodeConfig.vue @@ -492,7 +492,7 @@ export default { const isSubAtomChanged = this.currentAtom !== this.nodeConfigData.template_id try { this.subAtomConfigData = await this.loadSubflowConfig({templateId: id, version, common: this.common}) - this.nodeConfigData.version = this.subAtomConfigData.version + const constants = {} const inputConfig = [] const outputConfig = [] let variableArray = [] @@ -525,7 +525,6 @@ export default { // 遍历加载标准插件表单配置文件 for (let form of variableArray) { let key = form.key - let constantData = {} const sourceTag = form.source_tag if (sourceTag) { const [ atomType, tagCode ] = sourceTag.split('.') @@ -569,9 +568,9 @@ export default { // 子流程表单项的取值 // 首次添加、子流程切换、子流程更新时,取接口返回的 form // 编辑时,取 activities 里对应的全局变量 form - constantData = this.activities[this.nodeId].constants[key] || form - this.$set(this.nodeConfigData.constants, key, tools.deepClone(constantData)) + constants[key] = this.activities[this.nodeId].constants[key] || form } + this.$set(this.nodeConfigData, 'constants', tools.deepClone(constants)) for ( let key in this.subAtomConfigData.outputs ) { const output = this.subAtomConfigData.outputs[key] const item = { @@ -642,7 +641,6 @@ export default { } } else { this.currentAtom = formData.template_id - for (let key in formData.constants) { const form = formData.constants[key] const tagCode = key.match(varKeyReg)[1] @@ -800,9 +798,8 @@ export default { /** * 切换标准插件节点,清空勾选的变量 */ - clearHookedVaribles () { - const hookedVariables = this.getHookedInputVariables() - hookedVariables.forEach(item => { + clearHookedVaribles (hookedInputs, outputs) { + hookedInputs.forEach(item => { const {id, variableKey, formKey, tagCode} = item const variable = this.constants[variableKey] this.setVariableSourceInfo({type: 'delete', id, key: variableKey, tagCode: formKey}) @@ -811,7 +808,7 @@ export default { } }) this.taskTypeEmpty = false - this.renderOutputData.forEach(item => { + outputs.forEach(item => { if (item.hook) { this.deleteVariable(item.key) } @@ -820,7 +817,7 @@ export default { onAtomSelect (id, data) { this.isAtomChanged = true let nodeName - this.clearHookedVaribles() + tthis.clearHookedVaribles(this.getHookedInputVariables(), this.renderOutputData) this.currentAtom = id if (this.isSingleAtom) { nodeName = data.name.split('-').slice(1).join().replace(/\s/g, '') @@ -852,7 +849,8 @@ export default { * 更新 store 数据状态 */ onUpdateSubflowVersion () { - this.clearHookedVaribles() + const oldInputAtomHook = this.inputAtomHook + const oldInputAtomData = this.inputAtomData // 清空 store 里的 constants 值 this.subAtomConfigData.form = {} @@ -860,7 +858,24 @@ export default { this.inputAtomData = {} this.updateActivities() - this.getSubflowConfig(this.currentAtom).then( ()=> { + this.getSubflowConfig(this.currentAtom).then(()=> { + const newInputAtomData = tools.deepClone(this.inputAtomData) + Object.keys(oldInputAtomData).forEach(key => { + if (this.inputAtomData.hasOwnProperty(key)) { + this.$set(this.inputAtomData, key, oldInputAtomData[key]) + } else if (oldInputAtomHook[key]) { + const variable = [ + { + variableKey: key, + formKey: key, + id: this.nodeId, + tagCode: key + } + ] + this.clearHookedVaribles(variable, []) + } + }) + this.updateActivities() this.subflowHasUpdate = false this.$emit('onUpdateNodeInfo', this.idOfNodeInConfigPanel, { hasUpdated: false }) this.setSubprocessUpdated({