vue3+ant design vue + Sortable實現多級表格列拖動

1、最近遇到個需求,需使用vue3+ant design vue +Sortable實現多級表格的表頭允許用戶拖拽移動。即當用戶拖拽一級表頭時,其對應的子級表頭及數據應同步移動,并且只允許一級非固定表頭允許拖拽。

2、代碼

<a-table:data-source="rowData2.list":columns="listColumns":pagination="false"bordered:scroll="{ x: 6000, y: 400 }":customRow="onRowClick"ref="tableRef":key="tableKeys"
>
</a-table>import Sortable from 'sortablejs'/** 安全遞歸重新排序列 */
const reorderColumns = (columns, oldIndex, newIndex) => {if (!Array.isArray(columns)) return columnsconst newColumns = [...columns]// 檢查索引是否有效if (oldIndex < 0 ||oldIndex >= newColumns.length ||newIndex < 0 ||newIndex >= newColumns.length) {return columns}const [movedColumn] = newColumns.splice(oldIndex, 1)newColumns.splice(newIndex, 0, movedColumn)return newColumns
}const tableKeys = ref(0)// 添加 watch
watch(tableKeys, () => {nextTick(() => {columnDrop() //重新掛載Sortable})
})/** 列拖拽 */
const columnDrop = () => {const wrapperTr = document.querySelector('.ant-table-thead > tr')// 先銷毀舊的 Sortable 實例(如果有)if (wrapperTr && wrapperTr.sortableInstance) {wrapperTr.sortableInstance.destroy()}if (!wrapperTr) {return}// 排除固定列的拖拽const sortable = Sortable.create(wrapperTr, {animation: 180, // ms, number 單位:ms,定義排序動畫的時間delay: 0, // number 定義鼠標選中列表單元可以開始拖動的延遲時間;filter: '.ant-table-column-has-sorters', // 不需要進行拖動的元素draggable: '.ant-table-cell:not(.ant-table-cell-fix-left):not(.ant-table-cell-fix-right)', //允許拖拽的項目類名onEnd: (evt) => {// 結束拖拽listColumns.value = reorderColumns(listColumns.value, evt.oldIndex, evt.newIndex)tableKeys.value++ //更新key,解決渲染緩存問題}})
}onMounted(() => {columnDrop()
})

3、遇到的問題:

1、子級表頭變化了,一級表頭本身頁面未變化:解決方法通過key來強制刷新頁面。

2、拖拽一次之后就不能繼續拖拽了:解決方法通過監聽動態銷毀Sortable 實例,同時避免了內存泄漏。

3、Sortable 未正確掛載,拖拽不動:解決方法正確設置掛載范圍

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

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

相關文章

第五十四篇 AI與數據分析

一、AI數據分析就像做菜 想象你在廚房做一道新菜&#xff0c;AI數據分析的流程其實非常相似&#xff1a; 買菜&#xff08;獲取數據&#xff09; 去市場挑選新鮮蔬菜 從Excel/數據庫獲取數據例&#xff1a;pd.read_csv(超市銷售表.csv) 洗菜切菜&#xff08;清洗數據&#x…

差分OPA verilogaA 模型

做電路設計&#xff0c;需要提前用理想模型如VerilogA模型做驗證。這里分享一個由ahdlib庫里單端opamp改造而來的差分opamp。參考何樂年的《模擬集成電路設計與仿真》10.4節423頁&#xff1b; 描述的小信號模型如上。 VerilogA 用到了SRI/C&#xff0c;GBWgm/C,gaingm*r1等概念…

Solidity語言基礎:區塊鏈智能合約開發入門指南

一、Solidity概述 Solidity是以太坊生態系統中最重要的智能合約編程語言&#xff0c;由Gavin Wood于2014年提出。作為面向合約的高級語言&#xff0c;它結合了JavaScript、Python和C的語法特點&#xff0c;專為在以太坊虛擬機&#xff08;EVM&#xff09;上運行而設計。 核心…

開啟智能Kubernetes管理新時代:kubectl-ai讓操作更簡單!

在如今的科技世界中,Kubernetes 已經成為容器編排領域的標桿,幾乎所有現代應用的基礎設施都離不開它。然而,面對復雜的集群管理和日常運維,許多開發者常常感到無所適從。今天,我們將為大家介紹一款結合了人工智能的強大工具——kubectl-ai。它不僅能幫助開發者更加順暢地與…

2003-2020年高鐵站開通時間數據

2003-2020年高鐵站開通時間數據 1、時間&#xff1a;2003-2020年 2、來源&#xff1a;Chinese High-speed Rail and Airline Database&#xff0c;CRAD 3、指標&#xff1a;高鐵站名稱、開通時間、所在省份、所在城市、所屬線路名稱 4、說明&#xff1a; Hsrwsnm[高鐵站名…

神經網絡—感知器、多層感知器

文章目錄 前言一、生物神經元與感知器的類比二、感知器1、簡單感知器2、多層感知器&#xff08;1&#xff09;多層感知機結構 3、神經網絡結構 總結1、感知器的局限性如何突破感知器的局限性&#xff1f; 2、感知器的應用 前言 感知器&#xff08;Perceptron&#xff09;是神經…

避免數據丟失:在存儲測試數據之前,要做好Redis持久化

Redis提供兩種持久化方法&#xff1a; 一、RDB&#xff08;Redis DataBase&#xff09;&#xff1a; 1、周期性保存內存快照到磁盤&#xff08;生成 dump.rdb 文件&#xff09;。 2、配置save 相關參數。 我本地的配置如下&#xff1a; &#xff08;1&#xff09;配置文件re…

Oracle EBS FORM快捷鍵與觸發器的關系與使用

Oracle EBS FORM快捷鍵與觸發器的引用 1、快捷鍵作用&#xff0c;可以看文檔fmrweb.res 2、文件內容&#xff1a;標識了快捷鍵的作用 9 : 0 : “Tab” : 1 : “Next Field” 9 : 1 : “ShiftTab” : 2 : “Previous Field” 116 : 0 : “F5” : 3 : “Clear Field” 38 : 0 :…

Java 24:重構數字信任邊界 —— 后量子時代的智能安全防御體系構建

引言 在量子計算陰影與 AI 驅動攻擊交織的網絡安全新紀元&#xff0c;Java 平臺正經歷著自誕生以來最深刻的安全架構革新。作為企業級應用的核心基礎設施&#xff0c;Java 24 不僅延續了 “一次編寫&#xff0c;處處運行” 的跨平臺基因&#xff0c;更以后量子密碼學引擎、動態…

【故障定位系列】容器CPU問題引起的故障如何快速排查

原文地址&#xff1a;https://mp.weixin.qq.com/s/0VlIjbeEdPZUbLD389disA 當生產環境中的容器CPU出現異常時&#xff0c;可能會引發上層業務出現一系列問題&#xff0c;比如業務請求緩慢、網頁卡頓甚至崩潰等&#xff0c;如果沒有一個有效的故障定位方法&#xff0c;運維人員很…

DeepSeek 智能客服應用指南:構建、策略與成效升級

目錄 一、引言二、DeepSeek 與智能客服的相遇2.1 DeepSeek 的技術亮點2.2 智能客服&#xff1a;企業不可或缺的 “數字助手”2.3 DeepSeek 如何適配智能客服需求 三、基于 DeepSeek 搭建智能客服系統3.1 需求分析3.2 技術選型3.3 系統架構設計3.4 搭建步驟實操 四、基于 DeepSe…

JVM運行時數據區域(Run-Time Data Areas)的解析

# JVM運行時數據區域(Run-Time Data Areas)的解析 歡迎來到我的博客&#xff1a;TWind的博客 我的CSDN:&#xff1a;Thanwind-CSDN博客 我的掘金&#xff1a;Thanwinde 的個人主頁 本文參考于&#xff1a;深入理解Java虛擬機&#xff1a;JVM高級特性與最佳實踐 本文的JVM均…

【特別版】Kubernetes集群安裝(1master,2node)

Kubernetes集群安裝 虛擬機準備 按照三臺虛擬機標準&#xff0c;一臺控制節點兩臺工作節點 主機名ip配置要求master-k8s192.168.242.102GB或更多RAM&#xff0c;2個CPU或更多CPU&#xff0c;硬盤30GB或更多node01-k8s192.168.242.112GB或更多RAM&#xff0c;2個CPU或更多CPU…

Excel點擊單元格內容消失

Excel點擊單元格內容消失 前言一、原因說明二、解決方案1.菜單欄中找到“審閱”&#xff0c;選擇“撤銷工作表保護”2.輸入密碼3.解除成功 前言 Excel想要編輯單元格內容時&#xff0c;無論是單擊還是雙擊單元格內容都莫名其妙的消失了 一、原因說明 單擊或者雙擊Excel中單元…

最優化方法Python計算:有約束優化應用——線性Lasso回歸預測器

實際應用中&#xff0c;特征維度 n n n通常遠大于樣本容量 m m m&#xff08; n ? m n\ll m n?m&#xff09;&#xff0c;這種高維小樣本場景下特征數據可能含有對標簽數據 y i y_i yi?的取值不必要的成分&#xff0c;甚至是噪聲。此時&#xff0c;我們希望回歸模型中的優化…

如何為APP應用程序選擇合適的服務器

搭建一個成功的APP應用程序&#xff0c;服務器選擇是至關重要的決策之一。合適的服務器不僅能確保應用流暢運行&#xff0c;還能節省成本并保障安全性。本文將為您詳細解析如何為APP選擇最佳服務器方案。 一、了解您的APP需求 在選擇服務器前&#xff0c;首先需要明確您的應用…

k8s(11) — 探針和鉤子

鉤子和探針的區別&#xff1a; 在 Kubernetes&#xff08;k8s&#xff09;中&#xff0c;鉤子&#xff08;Hooks&#xff09;和探針&#xff08;Probes&#xff09;是保障應用穩定運行的重要機制&#xff0c;不過它們的用途和工作方式存在差異&#xff0c;以下為你詳細介紹&…

Kafka消息隊列之 【消費者分組】 詳解

消費者分組(Consumer Group)是 Kafka 提供的一種強大的消息消費機制,它允許多個消費者協同工作,共同消費一個或多個主題的消息,從而實現高吞吐量、可擴展性和容錯性。 基本概念 消費者分組:一組消費者實例的集合,這些消費者實例共同訂閱一個或多個主題,并通過分組來協調…

什么是Blender?怎么獲取下載Blender格式文件模型

glbxz.com glbxz.com 官方可以下載Blender格式文件模型 BlenderBlender 是一個免費的開源程序&#xff0c;用于建模和動畫&#xff0c;最初由一家名為 Neo Geo 的動畫工作室作為內部應用程序開發&#xff0c;后來作為自己的程序發布。這是一個稱職的程序&#xff0c;近年來由于…

IC ATE集成電路測試學習——PLL測試(一)

PLL測試 什么是PLL&#xff1f; PLL Phase-Locked Loop&#xff08;鎖相環&#xff09;它的作用就是&#xff1a;把低速、穩定的外部時鐘&#xff0c;轉換成芯片內部需要的高速時鐘。 PLL的作用 我們知道&#xff0c;芯片的內部不同的模塊&#xff0c;很可能用的不是一個頻…