diff --git a/src/components/Canvas/FlowCanvas/manager/NodeManager.ts b/src/components/Canvas/FlowCanvas/manager/NodeManager.ts index f964d4d..47f0d19 100644 --- a/src/components/Canvas/FlowCanvas/manager/NodeManager.ts +++ b/src/components/Canvas/FlowCanvas/manager/NodeManager.ts @@ -1,12 +1,22 @@ import { createId } from '../../tools/tools' import { NODE_DATATYPE, NODE_COMPONENT, NODE_DATATIER } from '../tools/index.d' +interface NodeData { + type?: string + component?: any// 节点组件 + data?: object// 节点数据 + tier?: string// 节点层级 + isHeader?: boolean// 是否显示头 + superiorID?: string// 上级节点ID + disableDelete?: boolean// 是否禁用删除 + disableCopy?: boolean// 是否禁用复制 +} interface NodeOptions { id?: string position?: { x: number, y: number } positionX?: number positionY?: number component?: any - data?: object + data?: NodeData }// 不可传入type class (内部使用) export class NodeManager { @@ -106,7 +116,8 @@ export class NodeManager { copyNodeById(id: string) { const node = this.stateManager.getNodeById(id) const flowNode = this.stateManager.flowManager.getNodeById(id) - if (!node) return console.warn(`copyNodeById: ${id}找不到对应节点`) + if (!node) return console.warn(`${id}找不到对应节点`) + if (node.data?.disableCopy) return console.warn(`${id}节点已禁用复制`) const node_ = { ...JSON.parse(JSON.stringify(node)), id: createId(), @@ -116,6 +127,7 @@ export class NodeManager { } } delete node_.data?.superiorID + delete node_.data?.disableDelete this.stateManager.addNode(node_) } } diff --git a/src/components/Canvas/FlowCanvas/manager/StateManager.ts b/src/components/Canvas/FlowCanvas/manager/StateManager.ts index 1a4bddb..1d5bba8 100644 --- a/src/components/Canvas/FlowCanvas/manager/StateManager.ts +++ b/src/components/Canvas/FlowCanvas/manager/StateManager.ts @@ -104,6 +104,9 @@ export class StateManager { } /** 删除节点 */ async deleteNode(id: string, { isElMessageBox } = { isElMessageBox: false }) { + const node = this.getNodeById(id) + if (!node) return console.warn(`没有找到指定id:${id}`) + if (node.data.disableDelete) return console.warn('该节点禁用删除') let deletePromise: any = true if (isElMessageBox) { deletePromise = await new Promise((resolve, reject) => { @@ -122,9 +125,6 @@ export class StateManager { }) } if (!deletePromise) return console.log('删除操作被取消') - const node = this.getNodeById(id) - if (!node) return console.warn(`没有找到指定id:${id}`) - if (node.data.disableDelete) return console.warn('该节点禁用删除') this.nodes.value = this.nodes.value.filter((node: NodesItem) => node.id !== id) this.recordState() }