diff --git a/modeler/src/router/config.ts b/modeler/src/router/config.ts index 10ac9f0..f5a2405 100644 --- a/modeler/src/router/config.ts +++ b/modeler/src/router/config.ts @@ -32,7 +32,15 @@ export const routes: RouteRecordRaw[] = [ meta: { title: '决策树', }, - component: () => import('@/views/decision/designer.vue'), + component: () => import('@/views/decision/designer/designer.vue'), + }, + { + name: 'decision-communication', + path: '/app/decision/communication', + meta: { + title: '通信', + }, + component: () => import('@/views/decision/communication/communication.vue'), }, { name: 'decision-algorithm-management', diff --git a/modeler/src/style.less b/modeler/src/style.less index 8c9a19b..756aa03 100644 --- a/modeler/src/style.less +++ b/modeler/src/style.less @@ -1767,4 +1767,55 @@ line-height: 26px; cursor: pointer; } +} + + + +.ant-collapse { + .ant-list-sm { + .ant-list-item { + padding: 4px 15px; + cursor: pointer; + color: rgb(130 196 233); + position: relative; + + .ks-tree-actions { + position: absolute; + right: 10px; + display: none; + } + + &:hover { + background: #0d2d4e; + + .ks-tree-actions { + display: block; + } + } + + } + } + + &.ks-trees-collapse { + + .ant-collapse-content-box { + padding: 0; + height: 40vh; + position: relative; + } + } +} + +.create-tree-icon { + cursor: pointer; +} + +.ant-list-item { + padding: 3px 5px; + cursor: pointer; + color: rgb(130 196 233); + + &:hover { + background: #0d2d4e; + } } \ No newline at end of file diff --git a/modeler/src/views/decision/communication/api.ts b/modeler/src/views/decision/communication/api.ts new file mode 100644 index 0000000..5a559d4 --- /dev/null +++ b/modeler/src/views/decision/communication/api.ts @@ -0,0 +1,37 @@ +/* + * This file is part of the kernelstudio package. + * + * (c) 2014-2026 zlin + * + * For the full copyright and license information, please view the LICENSE file + * that was distributed with this source code. + */ + +import { HttpRequestClient } from '@/utils/request'; +import type { ScenarioPageableResponse, ScenarioRequest } from './types'; +import type { BasicResponse } from '@/types'; + +const req = HttpRequestClient.create({ + baseURL: '/api', +}); + +export const findScenarioByQuery = (_query: Partial = {}): Promise => { + return new Promise((resolve) => { + resolve({ + code: 200, + msg: null, + total: 1, + rows: [ + { + id: 1, + name: '空战场景', + description: null, + }, + ], + }); + }); +}; + +export const deleteOneScenarioById = (id: number): Promise => { + return req.delete(`/system/behaviortree/${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 new file mode 100644 index 0000000..39e52c0 --- /dev/null +++ b/modeler/src/views/decision/communication/communication.vue @@ -0,0 +1,429 @@ + + + \ No newline at end of file diff --git a/modeler/src/views/decision/communication/nodes-card.vue b/modeler/src/views/decision/communication/nodes-card.vue new file mode 100644 index 0000000..c9b6882 --- /dev/null +++ b/modeler/src/views/decision/communication/nodes-card.vue @@ -0,0 +1,125 @@ + + + \ No newline at end of file diff --git a/modeler/src/views/decision/communication/platform-card.vue b/modeler/src/views/decision/communication/platform-card.vue new file mode 100644 index 0000000..434c396 --- /dev/null +++ b/modeler/src/views/decision/communication/platform-card.vue @@ -0,0 +1,141 @@ + + + \ No newline at end of file diff --git a/modeler/src/views/decision/communication/types.ts b/modeler/src/views/decision/communication/types.ts new file mode 100644 index 0000000..17f65c6 --- /dev/null +++ b/modeler/src/views/decision/communication/types.ts @@ -0,0 +1,27 @@ +/* + * This file is part of the kernelstudio package. + * + * (c) 2014-2026 zlin + * + * For the full copyright and license information, please view the LICENSE file + * that was distributed with this source code. + */ + + +import type { NullableString, PageableResponse } from '@/types'; +import type { FireRule } from '@/views/decision/rule/types.ts'; + +export interface Scenario { + id: number, + name: NullableString, + description: NullableString, +} + +export interface ScenarioRequest extends FireRule { + pageNum: number, + pageSize: number, +} + +export interface ScenarioPageableResponse extends PageableResponse { + +} \ No newline at end of file diff --git a/modeler/src/views/decision/api.ts b/modeler/src/views/decision/designer/api.ts similarity index 98% rename from modeler/src/views/decision/api.ts rename to modeler/src/views/decision/designer/api.ts index f79637d..e0dd04f 100644 --- a/modeler/src/views/decision/api.ts +++ b/modeler/src/views/decision/designer/api.ts @@ -8,7 +8,7 @@ */ import { HttpRequestClient } from '@/utils/request'; -import type { BehaviorTree, BehaviorTreeDetailsResponse, BehaviorTreePageResponse, BehaviorTreeRequest, NodeTemplatesResponse } from './types'; +import type { BehaviorTree, BehaviorTreeDetailsResponse, BehaviorTreePageResponse, BehaviorTreeRequest, NodeTemplatesResponse } from '../types'; import type { BasicResponse } from '@/types'; const req = HttpRequestClient.create({ diff --git a/modeler/src/views/decision/designer.vue b/modeler/src/views/decision/designer/designer.vue similarity index 97% rename from modeler/src/views/decision/designer.vue rename to modeler/src/views/decision/designer/designer.vue index 315168f..f659b17 100644 --- a/modeler/src/views/decision/designer.vue +++ b/modeler/src/views/decision/designer/designer.vue @@ -72,16 +72,16 @@ import { Graph, Node, type NodeProperties } from '@antv/x6'; import { CheckCircleOutlined, CheckOutlined, RollbackOutlined, SaveOutlined } from '@ant-design/icons-vue'; import { Wrapper } from '@/components/wrapper'; import { safePreventDefault, safeStopPropagation } from '@/utils/event'; -import Header from './header.vue'; +import Header from '../header.vue'; import Properties from './properties.vue'; -import type { BehaviorTree, NodeDragTemplate, NodeTemplate } from './types'; -import type { GraphTaskElement, NodeGraph } from './builder/element'; -import { useGraphCanvas } from './builder/hooks'; -import { registerNodeElement } from './builder/register'; -import { createLineOptions } from './builder/line'; +import type { BehaviorTree, NodeDragTemplate, NodeTemplate } from '../types'; +import type { GraphTaskElement, NodeGraph } from '../builder/element'; +import { useGraphCanvas } from '../builder/hooks'; +import { registerNodeElement } from '../builder/register'; +import { createLineOptions } from '../builder/line'; import { createTree, findOneTreeById, updateTree } from './api'; -import { createGraphTaskElement, hasElements, hasRootElementNode, resolveNodeGraph } from './builder/utils'; -import { createGraphTaskElementFromTemplate } from './utils/node'; +import { createGraphTaskElement, hasElements, hasRootElementNode, resolveNodeGraph } from '../builder/utils'; +import { createGraphTaskElementFromTemplate } from '../utils/node'; import TressCard from './trees-card.vue'; import NodesCard from './nodes-card.vue'; diff --git a/modeler/src/views/decision/nodes-card.vue b/modeler/src/views/decision/designer/nodes-card.vue similarity index 98% rename from modeler/src/views/decision/nodes-card.vue rename to modeler/src/views/decision/designer/nodes-card.vue index f4e2a7e..97f7ff7 100644 --- a/modeler/src/views/decision/nodes-card.vue +++ b/modeler/src/views/decision/designer/nodes-card.vue @@ -71,7 +71,7 @@ - - \ No newline at end of file