修复节点添加和删除时的报错
This commit is contained in:
@@ -1,94 +1,96 @@
|
||||
<template>
|
||||
<a-dropdown
|
||||
:trigger="['contextmenu']"
|
||||
:getPopupContainer="getPopupContainer"
|
||||
@openChange="handleVisibleChange"
|
||||
>
|
||||
<a-card
|
||||
:class="[
|
||||
'ks-scenario-node',
|
||||
`ks-scenario-${element?.category ?? 'model'}-node`
|
||||
]"
|
||||
hoverable
|
||||
<div>
|
||||
<a-dropdown
|
||||
:trigger="['contextmenu']"
|
||||
:getPopupContainer="getPopupContainer"
|
||||
@openChange="handleVisibleChange"
|
||||
>
|
||||
<template #title>
|
||||
<a-space>
|
||||
<span class="ks-scenario-node-title">{{ element?.description ?? element?.name ?? '-' }}</span>
|
||||
</a-space>
|
||||
</template>
|
||||
<a-card
|
||||
:class="[
|
||||
'ks-scenario-node',
|
||||
`ks-scenario-${element?.category ?? 'model'}-node`
|
||||
]"
|
||||
hoverable
|
||||
>
|
||||
<template #title>
|
||||
<a-space>
|
||||
<span class="ks-scenario-node-title">{{ element?.description ?? element?.name ?? '-' }}</span>
|
||||
</a-space>
|
||||
</template>
|
||||
|
||||
<!-- 节点内容区域 -->
|
||||
<div class="w-full">
|
||||
<div class="ks-scenario-node-content">
|
||||
<div
|
||||
v-for="(item, index) in element?.components || []"
|
||||
:key="item.id || index"
|
||||
class="ks-scenario-node-row"
|
||||
>
|
||||
<!-- 节点内容区域 -->
|
||||
<div class="w-full">
|
||||
<div class="ks-scenario-node-content">
|
||||
<div
|
||||
:data-port="`in-${item.id || index}`"
|
||||
:port="`in-${item.id || index}`"
|
||||
:title="`入桩: ${item.name}`"
|
||||
class="port port-in"
|
||||
magnet="passive"
|
||||
:data-item="JSON.stringify(item)"
|
||||
v-for="(item, index) in element?.components || []"
|
||||
:key="item.id || index"
|
||||
class="ks-scenario-node-row"
|
||||
>
|
||||
<div class="triangle-left"></div>
|
||||
</div>
|
||||
<div
|
||||
:data-port="`in-${item.id || index}`"
|
||||
:port="`in-${item.id || index}`"
|
||||
:title="`入桩: ${item.name}`"
|
||||
class="port port-in"
|
||||
magnet="passive"
|
||||
:data-item="JSON.stringify(item)"
|
||||
>
|
||||
<div class="triangle-left"></div>
|
||||
</div>
|
||||
|
||||
<!-- child名称 -->
|
||||
<div class="ks-scenario-node-name">
|
||||
{{ substring(item.description ?? item.name, 20) }}
|
||||
</div>
|
||||
<!-- child名称 -->
|
||||
<div class="ks-scenario-node-name">
|
||||
{{ substring(item.description ?? item.name, 20) }}
|
||||
</div>
|
||||
|
||||
<!-- 右侧出桩:只能作为连线源 -->
|
||||
<div
|
||||
:data-port="`out-${item.id || index}`"
|
||||
:port="`out-${item.id || index}`"
|
||||
:title="`出桩: ${item.name}`"
|
||||
class="port port-out"
|
||||
magnet="active"
|
||||
:data-item="JSON.stringify(item)"
|
||||
>
|
||||
<div class="triangle-right" ></div>
|
||||
<!-- 右侧出桩:只能作为连线源 -->
|
||||
<div
|
||||
:data-port="`out-${item.id || index}`"
|
||||
:port="`out-${item.id || index}`"
|
||||
:title="`出桩: ${item.name}`"
|
||||
class="port port-out"
|
||||
magnet="active"
|
||||
:data-item="JSON.stringify(item)"
|
||||
>
|
||||
<div class="triangle-right" ></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-card>
|
||||
</a-card>
|
||||
|
||||
<template #overlay>
|
||||
<a-menu @click="handleMenuClick">
|
||||
<a-sub-menu key="mount">
|
||||
<template #icon>
|
||||
<LinkOutlined />
|
||||
</template>
|
||||
<template #title>挂载</template>
|
||||
<a-menu-item
|
||||
v-for="tree in availableTrees"
|
||||
:key="`tree-${tree.id}`"
|
||||
:disabled="isTreeMounted(tree.id)"
|
||||
@click="() => handleMountTree(tree)"
|
||||
>
|
||||
<template #overlay>
|
||||
<a-menu @click="handleMenuClick">
|
||||
<a-sub-menu key="mount">
|
||||
<template #icon>
|
||||
<CheckOutlined v-if="isTreeMounted(tree.id)" />
|
||||
<LinkOutlined />
|
||||
</template>
|
||||
{{ tree.name }}
|
||||
<template #title>挂载</template>
|
||||
<a-menu-item
|
||||
v-for="tree in availableTrees"
|
||||
:key="`tree-${tree.id}`"
|
||||
:disabled="isTreeMounted(tree.id)"
|
||||
@click="() => handleMountTree(tree)"
|
||||
>
|
||||
<template #icon>
|
||||
<CheckOutlined v-if="isTreeMounted(tree.id)" />
|
||||
</template>
|
||||
{{ tree.name }}
|
||||
</a-menu-item>
|
||||
<a-menu-item v-if="availableTrees.length === 0" disabled>
|
||||
暂无可用行为树
|
||||
</a-menu-item>
|
||||
</a-sub-menu>
|
||||
<a-menu-divider />
|
||||
<a-menu-item key="delete">
|
||||
<template #icon>
|
||||
<DeleteOutlined />
|
||||
</template>
|
||||
删除
|
||||
</a-menu-item>
|
||||
<a-menu-item v-if="availableTrees.length === 0" disabled>
|
||||
暂无可用行为树
|
||||
</a-menu-item>
|
||||
</a-sub-menu>
|
||||
<a-menu-divider />
|
||||
<a-menu-item key="delete">
|
||||
<template #icon>
|
||||
<DeleteOutlined />
|
||||
</template>
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
@@ -99,7 +101,7 @@ import { DeleteOutlined, LinkOutlined, CheckOutlined, SettingOutlined } from '@a
|
||||
import type { Graph } from '@antv/x6';
|
||||
import { message } from 'ant-design-vue';
|
||||
import { substring } from '@/utils/strings';
|
||||
import { getAllBehaviorTreesBySceneId, updateBehaviorTree } from './api';
|
||||
import { updateBehaviorTree } from './api';
|
||||
import type { BehaviorTree } from '../designer/tree';
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
@@ -1,49 +1,53 @@
|
||||
<template>
|
||||
<a-dropdown :trigger="['contextmenu']" @openChange="handleVisibleChange">
|
||||
<a-card
|
||||
:class="[
|
||||
'ks-designer-node',
|
||||
`ks-designer-${element?.category ?? 'model'}-node`,
|
||||
`ks-designer-group-${element?.group ?? 'general'}`
|
||||
]"
|
||||
hoverable
|
||||
>
|
||||
<template #title>
|
||||
<a-space>
|
||||
<!-- <span class="ks-designer-node-icon"></span>-->
|
||||
<span class="ks-designer-node-title">{{ element?.name ?? '-' }}</span>
|
||||
</a-space>
|
||||
<div>
|
||||
<a-dropdown :trigger="['contextmenu']" @openChange="handleVisibleChange">
|
||||
|
||||
|
||||
<a-card
|
||||
:class="[
|
||||
'ks-designer-node',
|
||||
`ks-designer-${element?.category ?? 'model'}-node`,
|
||||
`ks-designer-group-${element?.group ?? 'general'}`
|
||||
]"
|
||||
hoverable
|
||||
>
|
||||
<template #title>
|
||||
<a-space>
|
||||
<!-- <span class="ks-designer-node-icon"></span>-->
|
||||
<span class="ks-designer-node-title">{{ element?.name ?? '-' }}</span>
|
||||
</a-space>
|
||||
</template>
|
||||
|
||||
<div class="port port-in" data-port="in-0" magnet="passive">
|
||||
<div class="triangle-left"></div>
|
||||
</div>
|
||||
<div class="w-full ks-designer-node-text">
|
||||
<a-tooltip >
|
||||
<template #title>
|
||||
{{ element?.description ?? element?.name }}
|
||||
</template>
|
||||
<p class="ks-designer-node-label">
|
||||
{{ substring(element?.name ?? (element?.name ?? '-'), 40) }}
|
||||
</p>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div class="port port-out" data-port="out-0" magnet="active">
|
||||
<div class="triangle-right" ></div>
|
||||
</div>
|
||||
</a-card>
|
||||
|
||||
<template #overlay>
|
||||
<a-menu @click="handleMenuClick">
|
||||
<a-menu-item key="delete">
|
||||
<template #icon>
|
||||
<DeleteOutlined />
|
||||
</template>
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
|
||||
<div class="port port-in" data-port="in-0" magnet="passive">
|
||||
<div class="triangle-left"></div>
|
||||
</div>
|
||||
<div class="w-full ks-designer-node-text">
|
||||
<a-tooltip >
|
||||
<template #title>
|
||||
{{ element?.description ?? element?.name }}
|
||||
</template>
|
||||
<p class="ks-designer-node-label">
|
||||
{{ substring(element?.name ?? (element?.name ?? '-'), 40) }}
|
||||
</p>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div class="port port-out" data-port="out-0" magnet="active">
|
||||
<div class="triangle-right" ></div>
|
||||
</div>
|
||||
</a-card>
|
||||
|
||||
<template #overlay>
|
||||
<a-menu @click="handleMenuClick">
|
||||
<a-menu-item key="delete">
|
||||
<template #icon>
|
||||
<DeleteOutlined />
|
||||
</template>
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
|
||||
Reference in New Issue
Block a user