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,
};
},
});