更新返回按钮逻辑,添加从场景页面跳转的状态管理
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
<span>保存</span>
|
||||
</a-button>
|
||||
|
||||
<a-button v-if="currentScenarioId" class="ks-model-builder-save" size="small" @click="handleGoback">
|
||||
<a-button v-if="fromScenarioPage" class="ks-model-builder-save" size="small" @click="handleGoback">
|
||||
<BackwardFilled />
|
||||
<span>返回</span>
|
||||
</a-button>
|
||||
@@ -125,6 +125,7 @@ export default defineComponent({
|
||||
const nodeCommands = ref<NodeCommand[]>([])
|
||||
const currentScenarioId = ref<number | undefined>();
|
||||
const currentPlatformId = ref<number | null>(null);
|
||||
const fromScenarioPage = ref<boolean>(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,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user