Vue3 + Element Plus + AntV X6 實現拖拽樹組件

Vue3 + Element Plus + AntV X6 實現拖拽樹組件

介紹

在本篇文章中,我們將介紹如何使用 Vue 3 和 Element Plus 結合 @antv/x6 實現樹形結構的拖拽功能。用戶可以將樹節點拖拽到圖形區域,自動創建相應的節點。我們將會通過簡單的示例來一步步講解實現過程。

代碼實現

1. 使用 el-tree 組件

首先,我們需要在 Vue 組件中使用 el-tree 組件。el-tree 組件是 Element Plus 提供的樹形結構組件,它支持豐富的功能,包括節點的拖拽、展開、折疊等。

<template><el-tree:data="treeData":props="{ label: 'label', children: 'children' }"ref="deptTreeRef"default-expand-all><template #default="{ node, data }"><divclass="custom-tree-node"@mousedown="startDrag($event, node, data)"><imgv-if="node.level === 1 && data.type === '1'"src="@/assets/system/images/dpp/tsr.png"alt="icon"class="icon-img"/><imgv-if="node.level === 1 && data.type === '2'"src="@/assets/system/images/dpp/tsc.png"alt="icon"class="icon-img"/><span class="treelable">{{ data.label }}</span></div></template></el-tree>
</template>

代碼解析
el-tree 組件:用來展示樹形數據。我們通過 :data 屬性傳入樹的數據,并通過 :props 設置節點的顯示字段。

default-expand-all:使所有節點默認展開。

@mousedown=“startDrag($event, node, data)”:在鼠標按下時觸發 startDrag 方法,開始拖拽。

  1. 拖拽邏輯
    在 startDrag 方法中,我們會處理節點的拖拽邏輯。首先判斷點擊的樹節點是否是二級節點,如果是,則根據節點的類型創建一個圖形節點,并啟動拖拽操作。
const startDrag = (e, treeNode, data) => {// 只處理二級節點的拖拽if (treeNode.level === 2) {// 判斷是否可以拖拽if (!data.componentType) {return alert("該組件正在開發中!");}// 創建一個新節點并設置數據const node = graph.createNode({shape: "rect",  // 圖形的形狀width: 180,height: 50,label: data.label,  // 節點的標簽data: {  // 節點的附加數據 (所有自定義的數據都可以寫里面 )taskType: data.taskType,componentType: data.componentType,icon: data.icon,},});// 啟動拖拽操作dnd.start(node, e);}
};

代碼解析
graph.createNode:在圖形區域中創建一個新節點,設置節點的形狀、寬高、標簽等屬性。

dnd.start(node, e):調用 @antv/x6 提供的拖拽接口,啟動拖拽操作。

  1. 圖標和節點數據
    我們根據 data.icon 動態設置節點圖標。如果樹節點有自定義的圖標路徑,會顯示該圖標。如果沒有,則顯示默認的圖標。
<imgv-if="data.icon":src="data.icon"alt="icon"class="icon-img"
/>

通過這種方式,我們能靈活地控制每個節點的顯示內容。

總結
通過上述代碼,我們展示了如何在 Vue3 中結合 Element Plus 和 AntV X6 實現樹形節點的拖拽功能。主要步驟包括:

使用 el-tree 展示樹結構。

通過 @mousedown 事件觸發拖拽操作。

動態創建圖形節點并啟動拖拽。

這種方式不僅能提高用戶體驗,還能為后續更復雜的圖形編輯功能奠定基礎。希望本文能幫助你更好地理解如何實現樹形節點的拖拽和自定義圖標展示。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75472.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75472.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75472.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cursor的.cursorrules詳解

文章目錄 1. 文件位置與作用2. 基本語法規則3. 常用規則類型與示例3.1 忽略文件/目錄3.2 限制代碼生成范圍3.3 自定義補全建議3.4 安全規則 4. 高級用法4.1 條件規則4.2 正則表達式匹配4.3 繼承規則 5. 示例文件6. 注意事項 Cursor 是一款基于 AI 的智能代碼編輯器&#xff0c;…

黑馬點評項目總結

redis的key設計規范 推薦規范: 業務前綴數據名稱唯一id 比如表示文章點贊的用戶集合: blog:like:${blogId} 刷新token有效期(攔截器實現) 使用雙重攔截器解耦登錄鑒權攔截和刷新有效期 RefreshTokenInterceptor: 攔截所有請求 只負責token續期 沒有token則放行 Component p…

Java 大數據在智能安防入侵檢測系統中的多源數據融合與分析技術(171)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

ARM架構+CODESYS:解鎖嵌入式邊緣計算的實時控制新范式

工業自動化、物聯網和邊緣計算的快速發展&#xff0c;ARM架構的邊緣計算機憑借其低功耗、高性能和靈活擴展性&#xff0c;成為智能制造與物聯網應用的核心載體。這類設備不僅支持Node-RED等可視化數據流工具&#xff0c;還能運行CODESYS工業控制平臺&#xff0c;滿足復雜場景下…

配置 UOS/deepin 系統遠程桌面,實現多臺電腦協同辦公

由于開發工作的需要&#xff0c;我的辦公桌上目前有多臺電腦。一臺是 i7 配置的電腦&#xff0c;運行 UOS V20 系統&#xff0c;作為主力辦公電腦&#xff0c;負責處理企業微信、OA 等任務&#xff0c;并偶爾進行代碼編譯和驗證軟件在 UOS V20 系統下的兼容性&#xff1b;另一臺…

1g內存電腦sqlite能支持多少并發

1. SQLite的并發機制 寫操作&#xff1a;默認使用串行鎖&#xff0c;同一時間僅允許一個寫操作&#xff08;其他寫/讀需等待&#xff09;。讀操作&#xff1a;支持多并發讀取&#xff0c;但受內存、磁盤I/O和配置限制。 2. 關鍵限制因素 &#xff08;1&#xff09;內存資源 …

時間數據的可視化

目錄 【實驗目的】 【實驗原理】 【實驗環境】 【實驗步驟】 【實驗總結】 【實驗目的】 掌握時間數據在大數據中的應用 掌握時間數據可視化圖表表示 利用Python程序實現堆疊柱形圖可視化 【實驗原理】 時間是一個非常重要的維度與屬性。時間序列數據存在于社會的各個…

Linux紅帽:RHCSA認證知識講解(十)使用 tar創建歸檔和壓縮文件

Linux紅帽&#xff1a;RHCSA認證知識講解&#xff08;十&#xff09;使用 tar創建歸檔和壓縮文件 前言一、歸檔與壓縮的基本概念1.1 歸檔與壓縮的區別 二、使用tar創建歸檔文件2.1 tar命令格式2.2 示例操作 三、使用tar進行壓縮3.2 命令格式3.3 示例操作 前言 在紅帽 Linux 系…

制造業數字化轉型:智能招聘系統破解藍領用工匹配難題?

近年來&#xff0c;中國制造業面臨一個看似矛盾的現象&#xff1a;一邊是“用工荒”頻發&#xff0c;工廠招不到足夠的技術工人&#xff1b;另一邊是藍領求職者抱怨“找工作難”&#xff0c;崗位信息不對稱、匹配效率低下。據《數智化平臺推動高質量充分就業報告2024》統計&…

解決網絡異常 repo sync 中斷下載的問題

在使用repo sync下載代碼的時候&#xff0c;經常由于網絡不穩定等因素導致下載失敗&#xff0c;采用循環不斷下載的方法&#xff0c;腳步如下&#xff1a; vim ~/bin/repo_sync #!/bin/bash trap echo "ctrlc force exit"; exit SIGINT ALL_PKGgrep project .repo/m…

《MyBatis CRUD實戰與核心配置詳解:從基礎操作到高級應用》

一、使用MyBatis完成CRUD 準備工作 創建module&#xff08;Maven的普通Java模塊&#xff09;&#xff1a;mybatis-002-crud pom.xml 打包方式jar 依賴&#xff1a; mybatis依賴 mysql驅動依賴 junit依賴 logback依賴 mybatis-config.xml放在類的根路徑下 CarMapper.xm…

Java語言如何用AI實現文件報告的自動質檢?

文件報告的質量直接影響工作效率和決策的準確性&#xff0c;然而&#xff0c;傳統的文件質檢方式往往依賴人工審核&#xff0c;效率低下且容易出錯。那么&#xff0c;如何利用AI技術實現文件報告的自動化質檢呢&#xff1f; 問題1&#xff1a;質檢的目標是什么&#xff1f; 文…

es自定義ik分詞器中文詞庫實現熱更新

基于web地址的方式實現ik分詞熱更新。 操作系統&#xff1a;win 11 es version&#xff1a;8.6.2 ik version&#xff1a;8.6.2 1、創建web服務&#xff0c;并提供ik查詢詞庫接口 編寫分詞http url代碼&#xff0c;返回自定義分詞內容分詞詞庫數據來自業務需求&#xff0c;存…

鉑卡梭 智能羽翼 AI 系統:交易科技的未來引擎

突破性的 AI 交易系統 鉑卡梭(Pegasus)近期推出的 InnoFeather AI System(智能羽翼 AI 系統) 代表了金融科技領域的前沿突破。這一系統集成了先進的 機器學習算法、大數據分析 和 實時市場情緒感知,旨在幫助交易者在復雜多變的市場環境中做出更精準的決策。 智能羽翼 AI 系統的…

js中判斷對象是否包含某個屬性(元素)

在JavaScript中&#xff0c;判斷對象是否包含某個屬性&#xff08;元素&#xff09;主要有以下幾種方法&#xff0c;根據具體需求選擇合適的方式&#xff1a; 1. 使用 in 運算符 作用&#xff1a;檢查對象自身及原型鏈上是否存在指定屬性。 示例&#xff1a; javascript cons…

Anaconda和Pycharm的區別,以及如何選擇兩者

目錄 主要區別詳細說明如何選擇&#xff1f;Anaconda的使用步驟 主要區別 Anaconda 和 PyCharm 是 Python 開發中常用的兩個工具&#xff0c;但它們的定位和功能完全不同。以下是它們的主要區別&#xff1a; 對比項AnacondaPyCharm類型Python 發行版 包管理工具Python 集成開…

UE小:在Unreal Engine 5中實現多層靜態網格體遮擋拾取

問題描述 當需要拾取被多層靜態網格體遮擋的對象時&#xff0c;若所有網格體碰撞預設為BlockAll&#xff0c;需要通過特殊配置實現穿透檢測。 完整實現方案 1. 創建自定義追蹤通道 進入 ?項目設置&#xff08;Project Settings&#xff09; > 碰撞&#xff08;Collision…

wireshark抓包分析數據怎么看 wireshark使用教程_wireshark怎么看

Wireshark與Sniff Master&#xff1a;網絡抓包工具使用指南 網絡抓包分析是開發測試和網絡故障排查中不可或缺的技能。在眾多抓包工具中&#xff0c;Wireshark無疑是最流行且功能強大的選擇&#xff0c;而Sniff Master作為后起之秀&#xff0c;也因其簡潔高效的特點受到許多專…

密碼學基礎——古典密碼學

目錄 一、定義 特點&#xff1a; 二、發展階段 三、代換密碼 1.單表代換密碼 1.1愷撒密碼 1.2 移位變換 1.3 仿射變換 2.多表代換密碼 維吉尼亞密碼 四、置換密碼 柵欄密碼 一、定義 古典密碼學是指在現代密碼學出現之前&#xff0c;使用較為簡單的數學方法和手工…

【案例分享】江蘇某汽車制造廠水冷式制冷站AI節能優化方案

主要訴求&#xff1a; 對B系統進行AI節能優化&#xff1a;3臺離心機1臺螺桿機板式換熱器 優化前后對比&#xff1a; ? 優化前&#xff1a;根據人工經驗判斷冷機和板換的啟停&#xff0c;PLC固定邏輯調節參數 ?優化后&#xff1a;根據冷負荷對工況進行分類&#xff0c;自動…