diff --git a/modeler/src/views/decision/designer/designer.vue b/modeler/src/views/decision/designer/designer.vue index 72b8b08..b0a4c66 100644 --- a/modeler/src/views/decision/designer/designer.vue +++ b/modeler/src/views/decision/designer/designer.vue @@ -29,7 +29,7 @@ 保存 - + 返回 @@ -125,6 +125,7 @@ export default defineComponent({ const nodeCommands = ref([]) const currentScenarioId = ref(); const currentPlatformId = ref(null); + const fromScenarioPage = ref(false); const { handleGraphEvent, @@ -269,8 +270,7 @@ export default defineComponent({ const handleSelectTree = (tree: BehaviorTree) => { destroyGraph(); - currentPlatformId.value = null; - // currentScenarioId.value = undefined; + currentPlatformId.value = null; console.info('handleSelectTree', tree); findOneTreeById(tree.id).then(r => { @@ -334,14 +334,27 @@ export default defineComponent({ }); }; + const STORAGE_KEY_SCENARIO = 'designer_from_scenario_id'; + const resolveQuery = ()=> { console.log(currentRoute); let scenarioId = Number(currentRoute.query.scenario); - if (!isNaN(scenarioId)) { + if (!isNaN(scenarioId) && scenarioId > 0) { currentScenarioId.value = scenarioId; + fromScenarioPage.value = true; + sessionStorage.setItem(STORAGE_KEY_SCENARIO, String(scenarioId)); } else { - currentScenarioId.value = undefined; + // 尝试从 sessionStorage 恢复(页面刷新或 SPA 内部跳转后 query 参数丢失的情况) + const stored = sessionStorage.getItem(STORAGE_KEY_SCENARIO); + const storedId = Number(stored); + if (stored && !isNaN(storedId) && storedId > 0) { + currentScenarioId.value = storedId; + fromScenarioPage.value = true; + } else { + currentScenarioId.value = undefined; + fromScenarioPage.value = false; + } } let platformId = Number(currentRoute.query.platform); if (!isNaN(platformId)) { @@ -444,7 +457,7 @@ export default defineComponent({ initGraph(); window.addEventListener('resize', handleResize); console.log('节点挂载完成'); - + resolveQuery(); if (currentPlatformId.value) { @@ -476,6 +489,7 @@ export default defineComponent({ }; const handleGoback = ()=> { + sessionStorage.removeItem(STORAGE_KEY_SCENARIO); window.location.href = `/app/decision/communication?scenario=${currentScenarioId.value}` } @@ -555,6 +569,7 @@ export default defineComponent({ handleUpdateElement, handleSelectTree, handleGoback, + fromScenarioPage, }; }, });