From d923a70cb4abe4b17cc20a97570aa74b1c525d06 Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Fri, 19 Jun 2026 21:30:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20[bpm]=20simple=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=AF=BC=E5=85=A5=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/simple-process-model.vue | 11 +++++++++++ .../components/simple-process-model.vue | 11 +++++++++++ .../components/simple-process-model.vue | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/apps/web-antd/src/views/bpm/components/simple-process-design/components/simple-process-model.vue b/apps/web-antd/src/views/bpm/components/simple-process-design/components/simple-process-model.vue index 7679c9316..f6674dcf0 100644 --- a/apps/web-antd/src/views/bpm/components/simple-process-design/components/simple-process-model.vue +++ b/apps/web-antd/src/views/bpm/components/simple-process-design/components/simple-process-model.vue @@ -179,14 +179,24 @@ function exportJson() { /** 导入 JSON */ const refFile = ref(); +/** 导入后自增,作为 ProcessNodeTree 的 key,强制重新挂载以保证画布刷新 */ +const importKey = ref(0); function importJson() { refFile.value.click(); } function importLocalFile() { const file = refFile.value.files[0]; + // 清空 input 的 value,否则再次选择同一个文件时 change 事件不会触发 + refFile.value.value = ''; + if (!file) { + return; + } file.text().then((result: any) => { if (isString(result)) { processNodeTree.value = JSON.parse(result); + // 改变 key,强制 ProcessNodeTree 重新挂载, + // 规避 watch(() => props.flowNode) 在组件复用场景下同步失效导致画布不刷新的问题 + importKey.value++; emits('save', processNodeTree.value); } }); @@ -244,6 +254,7 @@ onMounted(() => { > diff --git a/apps/web-antdv-next/src/views/bpm/components/simple-process-design/components/simple-process-model.vue b/apps/web-antdv-next/src/views/bpm/components/simple-process-design/components/simple-process-model.vue index b5e58f3d6..dbfece5f4 100644 --- a/apps/web-antdv-next/src/views/bpm/components/simple-process-design/components/simple-process-model.vue +++ b/apps/web-antdv-next/src/views/bpm/components/simple-process-design/components/simple-process-model.vue @@ -179,14 +179,24 @@ function exportJson() { /** 导入 JSON */ const refFile = ref(); +/** 导入后自增,作为 ProcessNodeTree 的 key,强制重新挂载以保证画布刷新 */ +const importKey = ref(0); function importJson() { refFile.value.click(); } function importLocalFile() { const file = refFile.value.files[0]; + // 清空 input 的 value,否则再次选择同一个文件时 change 事件不会触发 + refFile.value.value = ''; + if (!file) { + return; + } file.text().then((result: any) => { if (isString(result)) { processNodeTree.value = JSON.parse(result); + // 改变 key,强制 ProcessNodeTree 重新挂载, + // 规避 watch(() => props.flowNode) 在组件复用场景下同步失效导致画布不刷新的问题 + importKey.value++; emits('save', processNodeTree.value); } }); @@ -244,6 +254,7 @@ onMounted(() => { > diff --git a/apps/web-ele/src/views/bpm/components/simple-process-design/components/simple-process-model.vue b/apps/web-ele/src/views/bpm/components/simple-process-design/components/simple-process-model.vue index d4fa3b152..ef477c4f1 100644 --- a/apps/web-ele/src/views/bpm/components/simple-process-design/components/simple-process-model.vue +++ b/apps/web-ele/src/views/bpm/components/simple-process-design/components/simple-process-model.vue @@ -179,14 +179,24 @@ function exportJson() { /** 导入 JSON */ const refFile = ref(); +/** 导入后自增,作为 ProcessNodeTree 的 key,强制重新挂载以保证画布刷新 */ +const importKey = ref(0); function importJson() { refFile.value.click(); } function importLocalFile() { const file = refFile.value.files[0]; + // 清空 input 的 value,否则再次选择同一个文件时 change 事件不会触发 + refFile.value.value = ''; + if (!file) { + return; + } file.text().then((result: any) => { if (isString(result)) { processNodeTree.value = JSON.parse(result); + // 改变 key,强制 ProcessNodeTree 重新挂载, + // 规避 watch(() => props.flowNode) 在组件复用场景下同步失效导致画布不刷新的问题 + importKey.value++; emits('save', processNodeTree.value); } }); @@ -244,6 +254,7 @@ onMounted(() => { >