diff --git a/modeler/src/views/decision/designer/designer.vue b/modeler/src/views/decision/designer/designer.vue index 57e4e9e..8766aa0 100644 --- a/modeler/src/views/decision/designer/designer.vue +++ b/modeler/src/views/decision/designer/designer.vue @@ -43,6 +43,7 @@ (false); const treesCardRef = ref | null>(null); const platforms = ref([]); + const subPlatforms = ref([]); const nodeCommands = ref([]) const currentScenarioId = ref(null); const currentPlatformId = ref(null); @@ -153,6 +155,27 @@ export default defineComponent({ loadNodeCommands(); } + // 加载下属平台 + const loadSubPlatforms = (treeId: number) => { + console.log(treeId); + + if (!treeId || treeId <= 0) { + subPlatforms.value = []; + return; + } + + findSubPlatforms(treeId).then(r => { + if (r.data && Array.isArray(r.data)) { + subPlatforms.value = r.data as Platform[]; + } else { + subPlatforms.value = []; + } + }).catch(err => { + console.error('加载下属平台失败:', err); + subPlatforms.value = []; + }); + }; + // 处理拖动开始 const handleDragStart = (nm: NodeDragTemplate) => { draggedNodeData.value = nm; @@ -267,6 +290,10 @@ export default defineComponent({ graph: nodeGraph, }; currentTreeEditing.value = true; + + // 加载下属平台 + loadSubPlatforms(r.data.id); + nextTick(() => { initGraph(); }); @@ -343,6 +370,7 @@ export default defineComponent({ }; selectedModelNode.value = null; selectedNodeTaskElement.value = null; + subPlatforms.value = []; // 重置下属平台 nextTick(() => { initGraph(); @@ -487,6 +515,7 @@ export default defineComponent({ nodeCommands, currentScenarioId, platforms, + subPlatforms, treesCardRef, handleCreateTree, currentTreeEditing, diff --git a/modeler/src/views/decision/designer/properties.vue b/modeler/src/views/decision/designer/properties.vue index ed0e85a..bde1f84 100644 --- a/modeler/src/views/decision/designer/properties.vue +++ b/modeler/src/views/decision/designer/properties.vue @@ -101,7 +101,7 @@ size="small" type="editable-card" @edit="onEditParameterTab"> - + - {{pl.description}} + {{pl.description}} | null | undefined>, required: false }, graph: { type: [Object, null] as PropType, required: true }, platforms: { type: Array as PropType, required: true }, + subPlatforms: { type: Array as PropType, required: false, default: () => [] }, nodeCommands: { type: Array as PropType, required: true }, }, emits: ['update-element', 'update-tree'], setup(props, { emit }) { const platforms = ref(props.platforms ?? []); + const subPlatforms = ref(props.subPlatforms ?? []); const nodeCommands = ref(props.nodeCommands ?? []); const activeTopTabsKey = ref('1'); @@ -299,6 +301,41 @@ export default defineComponent({ multiableParameters.value = multiable === true && groupedParameters.value.length > 0; }; + // 获取平台Tab显示名称 + const getPlatformTabName = (index: number): string => { + if (!currentTree.value?.platformId) { + return `平台 ${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 || '平台'; + }; + + // 获取可用的平台列表(包括当前平台和其下属平台) + const getAvailablePlatforms = (): Platform[] => { + if (!currentTree.value?.platformId) { + return platforms.value; + } + + // 如果有下属平台,返回下属平台列表 + if (subPlatforms.value && subPlatforms.value.length > 0) { + return subPlatforms.value; + } + + // 否则返回所有平台 + return platforms.value; + }; + const resolveNode = (n?: Node | null | undefined) => { groupedParametersActiveTab.value = 0; @@ -389,6 +426,7 @@ export default defineComponent({ watch(() => props.nodeCommands, (n: NodeCommand[] | null | undefined) => nodeCommands.value = n ?? [], { deep: true, immediate: true }); watch(() => props.platforms, (n: Platform[] | null | undefined) => platforms.value = n ?? [], { deep: true, immediate: true }); + watch(() => props.subPlatforms, (n: Platform[] | null | undefined) => subPlatforms.value = n ?? [], { deep: true, immediate: true }); onMounted(() => load()); @@ -400,6 +438,8 @@ export default defineComponent({ multiableParameters, onEditParameterTab, groupedParameters, + getPlatformTabName, + getAvailablePlatforms, actionSpaceColumns, activeTopTabsKey, activeBottomTabsKey,