From dbbc8a27c3691569f4667902006679e82a0acf56 Mon Sep 17 00:00:00 2001 From: yitaikarma Date: Wed, 15 Apr 2026 17:22:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=98=B5=E4=BD=8D=E5=88=86?= =?UTF-8?q?=E9=85=8D=E5=91=BD=E4=BB=A4=E7=9A=84=E5=8F=98=E9=87=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modeler/src/views/decision/designer/api.ts | 5 +-- .../src/views/decision/designer/designer.vue | 17 ++++------ .../views/decision/designer/properties.vue | 34 +++++++++---------- 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/modeler/src/views/decision/designer/api.ts b/modeler/src/views/decision/designer/api.ts index 16fdd21..a647086 100644 --- a/modeler/src/views/decision/designer/api.ts +++ b/modeler/src/views/decision/designer/api.ts @@ -11,6 +11,7 @@ import { HttpRequestClient } from '@/utils/request'; import type { NodeTemplatesResponse } from './template'; import type { BehaviorTree, BehaviorTreeDetailsResponse, BehaviorTreePageResponse, BehaviorTreeRequest } from './tree'; import type { BasicResponse } from '@/types'; +import type { PlatformListableResponse } from '../types'; const req = HttpRequestClient.create({ baseURL: '/api', @@ -28,8 +29,8 @@ export const findOneTreeByPlatformId = (platformId: number): Promise => { - return req.get(`/system/behaviortree/underling/${treeId}`); +export const findSubPlatforms = (platformId: number): Promise => { + return req.get(`/system/behaviortree/underling/${platformId}`); }; export const findOneTreeById = (id: number): Promise => { diff --git a/modeler/src/views/decision/designer/designer.vue b/modeler/src/views/decision/designer/designer.vue index 8766aa0..732c0d2 100644 --- a/modeler/src/views/decision/designer/designer.vue +++ b/modeler/src/views/decision/designer/designer.vue @@ -156,20 +156,14 @@ export default defineComponent({ } // 加载下属平台 - const loadSubPlatforms = (treeId: number) => { - console.log(treeId); - - if (!treeId || treeId <= 0) { + const loadSubPlatforms = (platformId: number | null) => { + if (!platformId || platformId <= 0) { subPlatforms.value = []; return; } - findSubPlatforms(treeId).then(r => { - if (r.data && Array.isArray(r.data)) { - subPlatforms.value = r.data as Platform[]; - } else { - subPlatforms.value = []; - } + findSubPlatforms(platformId).then(r => { + subPlatforms.value = r.data ?? []; }).catch(err => { console.error('加载下属平台失败:', err); subPlatforms.value = []; @@ -292,7 +286,7 @@ export default defineComponent({ currentTreeEditing.value = true; // 加载下属平台 - loadSubPlatforms(r.data.id); + loadSubPlatforms(r.data.platformId); nextTick(() => { initGraph(); @@ -508,6 +502,7 @@ export default defineComponent({ loadDatasource(); }); + // 清理 onBeforeUnmount(() => destroy()); diff --git a/modeler/src/views/decision/designer/properties.vue b/modeler/src/views/decision/designer/properties.vue index 48b3c25..e99d01c 100644 --- a/modeler/src/views/decision/designer/properties.vue +++ b/modeler/src/views/decision/designer/properties.vue @@ -135,7 +135,7 @@ - {{ pl.description }} + {{ pl.description }} { let newParameters = dumpParameters(); - // 新增一个空的参数分组 + // 如果有下属平台,预填对应索引的平台名称 + const nextIndex = groupedParameters.value.length; + const subPlatform = subPlatforms.value[nextIndex]; + if (subPlatform) { + const platformParam = newParameters.find(p => p.paramKey === 'platforms'); + if (platformParam) { + platformParam.defaultValue = subPlatform.name; + } + } + // 新增一个参数分组 groupedParameters.value.push(newParameters); // 自动切换到新增的分组 groupedParametersActiveTab.value = groupedParameters.value.length - 1; @@ -301,24 +310,13 @@ export default defineComponent({ multiableParameters.value = multiable === true && groupedParameters.value.length > 0; }; - // 获取平台Tab显示名称 + // 获取平台Tab显示名称(优先使用下属平台名称) const getPlatformTabName = (index: number): string => { - if (!currentTree.value?.platformId) { - return `平台 ${index + 1}`; + const sub = subPlatforms.value[index]; + if (sub) { + return sub.name || sub.description || `平台 ${index + 1}`; } - - // 查找当前行为树绑定的平台 - const currentPlatform = platforms.value.find(p => p.id === currentTree.value?.platformId); - if (!currentPlatform) { - return `平台 ${index + 1}`; - } - - // 如果有多个分组,显示平台名称和索引 - if (groupedParameters.value.length > 1) { - return `${currentPlatform.name || '未知平台'}-${index + 1}`; - } - - return currentPlatform.name || '平台'; + return `平台 ${index + 1}`; }; // 获取可用的平台列表(包括当前平台和其下属平台)