From 2e55254412b53ce4852f191fc2d57a6903a13902 Mon Sep 17 00:00:00 2001 From: libertyspy Date: Sat, 14 Mar 2026 22:35:21 +0800 Subject: [PATCH] UPDATE: VERSION-20260314 --- modeler/src/style.less | 9 +++ .../src/views/decision/communication/api.ts | 6 +- .../decision/communication/communication.vue | 38 ++++++----- .../decision/communication/nodes-card.vue | 67 +++++++------------ .../src/views/decision/communication/types.ts | 28 +++++++- 5 files changed, 84 insertions(+), 64 deletions(-) diff --git a/modeler/src/style.less b/modeler/src/style.less index 756aa03..48e7e4c 100644 --- a/modeler/src/style.less +++ b/modeler/src/style.less @@ -1818,4 +1818,13 @@ &:hover { background: #0d2d4e; } +} + +.ks-model-builder-body .ks-model-builder-left .ant-collapse { + &.platform-collapse{ + .ant-collapse-content-box{ + max-height: 45.5vh; + } + } + } \ No newline at end of file diff --git a/modeler/src/views/decision/communication/api.ts b/modeler/src/views/decision/communication/api.ts index 5a559d4..04405ba 100644 --- a/modeler/src/views/decision/communication/api.ts +++ b/modeler/src/views/decision/communication/api.ts @@ -8,7 +8,7 @@ */ import { HttpRequestClient } from '@/utils/request'; -import type { ScenarioPageableResponse, ScenarioRequest } from './types'; +import type { PlatformWithComponentsResponse, ScenarioPageableResponse, ScenarioRequest } from './types'; import type { BasicResponse } from '@/types'; const req = HttpRequestClient.create({ @@ -34,4 +34,8 @@ export const findScenarioByQuery = (_query: Partial = {}): Prom export const deleteOneScenarioById = (id: number): Promise => { return req.delete(`/system/behaviortree/${id}`); +}; + +export const findPlatformWithComponents = (id: number): Promise => { + return req.get(`system/firerule/platforms/${id}`); }; \ No newline at end of file diff --git a/modeler/src/views/decision/communication/communication.vue b/modeler/src/views/decision/communication/communication.vue index 39e52c0..ea142f1 100644 --- a/modeler/src/views/decision/communication/communication.vue +++ b/modeler/src/views/decision/communication/communication.vue @@ -19,7 +19,7 @@
- + 保存 @@ -51,7 +51,8 @@ import { CheckCircleOutlined, CheckOutlined, RollbackOutlined, SaveOutlined } fr import { Wrapper } from '@/components/wrapper'; import { safePreventDefault, safeStopPropagation } from '@/utils/event'; import Header from '../header.vue'; -import type { BehaviorTree, NodeDragTemplate, NodeTemplate } from '../types'; + +import type { currentScenario, NodeDragTemplate, NodeTemplate } from '../types'; import type { GraphTaskElement, NodeGraph } from '../builder/element'; import { useGraphCanvas } from '../builder/hooks'; import { registerNodeElement } from '../builder/register'; @@ -59,6 +60,7 @@ import { createLineOptions } from '../builder/line'; import { createTree, findOneTreeById, updateTree } from '../designer/api'; import { createGraphTaskElement, hasElements, hasRootElementNode, resolveNodeGraph } from '../builder/utils'; import { createGraphTaskElementFromTemplate } from '../utils/node'; + import PlatformCard from './platform-card.vue'; import NodesCard from './nodes-card.vue'; @@ -85,7 +87,7 @@ export default defineComponent({ const draggedNodeData = ref(null); const isDraggingOver = ref(false); const currentTreeEditing = ref(false); - const currentBehaviorTree = ref(null); + const currentScenario = ref(null); const currentNodeGraph = ref(null); const selectedModelNode = ref | null>(null); const selectedNodeTaskElement = ref(null); @@ -142,7 +144,7 @@ export default defineComponent({ isDraggingOver.value = false; currentTreeEditing.value = false; - if (!currentBehaviorTree.value) { + if (!currentScenario.value) { message.error('请先选择或者创建行为树.'); return; } @@ -191,7 +193,7 @@ export default defineComponent({ } }; - const handleSelectTree = (tree: BehaviorTree) => { + const handleSelectTree = (tree: currentScenario) => { console.info('handleSelectTree', tree); findOneTreeById(tree.id).then(r => { if (r.data) { @@ -207,7 +209,7 @@ export default defineComponent({ edges: [], }; } - currentBehaviorTree.value = { + currentScenario.value = { ...r.data, graph: nodeGraph, }; @@ -227,19 +229,19 @@ export default defineComponent({ console.error('clear cells error, cause:', e); } setTimeout(() => { - if (currentBehaviorTree.value?.graph && graph.value) { - if (currentBehaviorTree.value?.graph.nodes) { - currentBehaviorTree.value?.graph.nodes.forEach(ele => { + if (currentScenario.value?.graph && graph.value) { + if (currentScenario.value?.graph.nodes) { + currentScenario.value?.graph.nodes.forEach(ele => { const node = createGraphTaskElement(ele as GraphTaskElement); console.info('create node: ', ele); // 将节点添加到画布 graph.value?.addNode(node as Node); }); } - if (currentBehaviorTree.value?.graph.edges) { + if (currentScenario.value?.graph.edges) { // 然后添加所有边,确保包含桩点信息 setTimeout(() => { - currentBehaviorTree.value?.graph.edges.forEach(edgeData => { + currentScenario.value?.graph.edges.forEach(edgeData => { graph.value?.addEdge({ ...edgeData, ...createLineOptions(), @@ -253,7 +255,7 @@ export default defineComponent({ }; const handleCreateTree = () => { - currentBehaviorTree.value = { + currentScenario.value = { id: 0, name: '行为树', description: null, @@ -296,7 +298,7 @@ export default defineComponent({ handleGraphEvent('blank:click', () => { selectedModelNode.value = null; selectedNodeTaskElement.value = null; - currentTreeEditing.value = null !== currentBehaviorTree.value; + currentTreeEditing.value = null !== currentScenario.value; }); handleGraphEvent('node:click', (args: any) => { @@ -348,12 +350,12 @@ export default defineComponent({ const handleSave = () => { const graphData: NodeGraph = resolveNodeGraph(graph.value as Graph); console.info('handleSave', graphData); - if (!currentBehaviorTree.value) { + if (!currentScenario.value) { message.error('当前决策树不存在'); return; } - const newTree: BehaviorTree = { - ...currentBehaviorTree.value, + const newTree: currentScenario = { + ...currentScenario.value, graph: graphData, xmlContent: JSON.stringify(graphData), }; @@ -366,7 +368,7 @@ export default defineComponent({ return; } let res = null; - if (currentBehaviorTree.value.id > 0) { + if (currentScenario.value.id > 0) { res = createTree(newTree); } else { res = updateTree(newTree); @@ -404,7 +406,7 @@ export default defineComponent({ treesCardRef, handleCreateTree, currentTreeEditing, - currentBehaviorTree, + currentScenario, currentNodeGraph, selectedNodeTaskElement, selectedModelNode, diff --git a/modeler/src/views/decision/communication/nodes-card.vue b/modeler/src/views/decision/communication/nodes-card.vue index c9b6882..60605c7 100644 --- a/modeler/src/views/decision/communication/nodes-card.vue +++ b/modeler/src/views/decision/communication/nodes-card.vue @@ -1,22 +1,21 @@