From 4c2cbebc156cd350ff46ff6e4cdd715c25896378 Mon Sep 17 00:00:00 2001 From: lzp Date: Thu, 5 Mar 2026 15:47:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=8D=A1=E7=89=87data=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/nodes/cards/index.vue | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/components/Canvas/FlowCanvas/components/nodes/cards/index.vue b/src/components/Canvas/FlowCanvas/components/nodes/cards/index.vue index 85f93e7..125bde5 100644 --- a/src/components/Canvas/FlowCanvas/components/nodes/cards/index.vue +++ b/src/components/Canvas/FlowCanvas/components/nodes/cards/index.vue @@ -27,7 +27,7 @@ From bd75352099806ef9b6ff6d16f031a20a0416c6df Mon Sep 17 00:00:00 2001 From: lzp Date: Thu, 5 Mar 2026 15:51:24 +0800 Subject: [PATCH 2/4] 1 --- .../Canvas/FlowCanvas/components/nodes/result-image.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Canvas/FlowCanvas/components/nodes/result-image.vue b/src/components/Canvas/FlowCanvas/components/nodes/result-image.vue index 7dc50eb..743e8d2 100644 --- a/src/components/Canvas/FlowCanvas/components/nodes/result-image.vue +++ b/src/components/Canvas/FlowCanvas/components/nodes/result-image.vue @@ -97,12 +97,12 @@ width: 244px; border-radius: 16px; border: 1px solid #d9d9d9; - box-shadow: 0px 15px 21px 0px #0000000d; + box-shadow: 0 15px 21px 0 rgba(0, 0, 0, 0.05); padding: 25px 6px; user-select: none; background-color: #fff; &.active{ - border: 3px solid #d9d9d9; + box-shadow: 0 15px 21px 0 rgba(0, 0, 0, 0.05), 0 0 0 2px #d9d9d9; } > .header { position: absolute; From 624273e4789b44e29f73ecdd964c141a6607616d Mon Sep 17 00:00:00 2001 From: lzp Date: Thu, 5 Mar 2026 15:59:04 +0800 Subject: [PATCH 3/4] 111 --- .../Canvas/FlowCanvas/manager/EventManager.ts | 2 +- .../Canvas/FlowCanvas/manager/StateManager.ts | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/components/Canvas/FlowCanvas/manager/EventManager.ts b/src/components/Canvas/FlowCanvas/manager/EventManager.ts index 11828a3..b2e616c 100644 --- a/src/components/Canvas/FlowCanvas/manager/EventManager.ts +++ b/src/components/Canvas/FlowCanvas/manager/EventManager.ts @@ -51,7 +51,7 @@ export class EventManager { handleDelete(event: any, activeNodeID: string) { event.preventDefault() if (!activeNodeID) return console.warn('没有选中节点') - this.stateManager.nodeManager.deleteNode(activeNodeID) + this.stateManager.deleteNode(activeNodeID, { isElMessageBox: true }) } /** 处理键盘事件 */ handleKeyDown(event: any) { diff --git a/src/components/Canvas/FlowCanvas/manager/StateManager.ts b/src/components/Canvas/FlowCanvas/manager/StateManager.ts index edba5ce..1a4bddb 100644 --- a/src/components/Canvas/FlowCanvas/manager/StateManager.ts +++ b/src/components/Canvas/FlowCanvas/manager/StateManager.ts @@ -1,7 +1,8 @@ import { ref, computed } from "vue"; import { NODE_TYPE } from '../tools/index.d' import { ElMessageBox } from 'element-plus' -import { useI18n } from 'vue-i18n' +import i18n from '@/lang' +const t = i18n.global.t export interface NodesItem { id: string @@ -34,7 +35,6 @@ export class StateManager { flowManager: any nodeManager: any toolManager: any - t: any // 设置管理器 setManager(options) { options.eventManager && (this.eventManager = options.eventManager) @@ -94,8 +94,6 @@ export class StateManager { return arr }) - this.t = useI18n().t - } /** 设置激活节点 */ setActiveNodeID(id: string) { this.activeNodeID.value = id } @@ -105,16 +103,16 @@ export class StateManager { this.recordState() } /** 删除节点 */ - async deleteNode(id: string,{ isElMessageBox } = { isElMessageBox: false }) { - let deletePromise:any = true - if (isElMessageBox){ + async deleteNode(id: string, { isElMessageBox } = { isElMessageBox: false }) { + let deletePromise: any = true + if (isElMessageBox) { deletePromise = await new Promise((resolve, reject) => { ElMessageBox.confirm( - this.t('flowCanvas.deleteCardConfirm'), + t('flowCanvas.deleteCardConfirm'), '', { - confirmButtonText: this.t('flowCanvas.confirm'), - cancelButtonText: this.t('flowCanvas.cancel'), + confirmButtonText: t('flowCanvas.confirm'), + cancelButtonText: t('flowCanvas.cancel'), } ).then(() => { resolve(true) From cdb6bd30656d60acb7f0ef86acf11383dac4bcdf Mon Sep 17 00:00:00 2001 From: lzp Date: Thu, 5 Mar 2026 16:56:03 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=94=BB=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Canvas/FlowCanvas/manager/NodeManager.ts | 16 ++++++++++++++-- .../Canvas/FlowCanvas/manager/StateManager.ts | 6 +++--- 2 files changed, 17 insertions(+), 5 deletions(-) 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() }