el-table 表格拖拽 + 表头可修改 + 宽度自定义
el-table 表格拖拽 + 表头可修改+ 宽度自定义
宽度自定义
@header-dragend="headerdragend"操作之后获取最后的宽度
headerdragend(newWidth, oldWidth, column, event) {// 获取当前拖动的是第几个,方便后续检测 DOM 是否已更新var currentColIndex = this.tableColumnList.findIndex(item=>item.label == event.target.innerText);this.tableColumnList[currentColIndex].wide = newWidth;this.col[currentColIndex].wide = newWidth;
}
<template><div class="app-container"><div><el-form :model="queryParams" ref="queryForm" size="small" v-show="showSearch" label-width="68px"><el-row :gutter="24"><el-col :span="10"><el-form-item label="任务名称" prop="jobName"><el-input v-model="queryParams.jobName" placeholder="请输入任务名称" clearable /></el-form-item></el-col><el-col :span="10"><el-form-item><el-button type="primary" icon="el-icon-search" size="mini">搜索</el-button><el-button icon="el-icon-refresh" size="mini">重置</el-button></el-form-item></el-col></el-row></el-form></div><div><el-row :gutter="8" class="mb8"><el-col :span="1.5"><el-button type="primary" plain icon="el-icon-plus" size="mini">新增</el-button></el-col><el-col :span="1.5"><el-button type="success" plain icon="el-icon-edit" size="mini">修改</el-button></el-col><el-col :span="1.5"><el-button type="danger" plain icon="el-icon-delete" size="mini">删除</el-button></el-col><el-col :span="1.5"><el-button type="warning" plain icon="el-icon-download" size="mini">导出</el-button></el-col><right-toolbar :columns="columns" :showSearch.sync="showSearch"></right-toolbar></el-row></div><el-table :data="tableData" border row-key="id" style="width: 100%;" @cell-click="tsetClick"@header-click="headerTest" @header-dragend="headerdragend"><el-table-column v-for="(item, index) in col" align="center" show-overflow-tooltip :key="`col_${index}`":property="item.field" :width="item.wide":prop="tableColumnList[index].field" :label="item.label"><template slot-scope="scope"><span @click="getIndex(scope.$index)">{{scope.row[scope.column.property]}}</span></template></el-table-column></el-table><el-dialog :visible.sync="dialogForHeader" title="修改表头名称" width="800"><el-form ref="form" :model="tableHeader" label-width="80px"><el-form-item label="表头名称"><el-input v-model="tableHeader.tableHeaderName" placeholder="请输入表头名称" /></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></el-dialog></div>
</template>
<script>
import Sortable from 'sortablejs'
import { setUpByKey } from '../../../api/system/Adaptive'
export default {data() {return {queryParams: {},// 显示搜索条件showSearch: true,// 列信息columns: [{ key: 0, label: '日期', visible: true },{ key: 1, label: '姓名', visible: true },{ key: 2, label: '地址', visible: true },],// 多选框multipleSelection:[],tableCellIndex: "",columnName: "",tableCell: { tableCellData: "" },num: 7,tableHeader: { tableHeaderName: "", property: "" },dialogForHeader: false,col: [],// 这里为了简便我就没有调用后台接口获取数据,直接写的假数据 你要用的话可以调用后台接口获取tableColumnList,注意数据格式tableColumnList:[],tableData: [{serial: '1',name: '王小虎1',adress: '上海市普陀区金沙江路 1518 弄',data: '2016-05-02',}, {serial: '2',name: '王小虎2',adress: '上海市普陀区金沙江路 1518 弄',data: '2016-05-02',}, {serial: '3',name: '王小虎3',adress: '上海市普陀区金沙江路 1518 弄',data: '2016-05-02',}, {serial: '4',name: '王小虎4',adress: '上海市普陀区金沙江路 1518 弄',data: '2016-05-02',}, {serial: '5',name: '王小虎5',adress: '上海市普陀区金沙江路 1518 弄',data: '2016-05-06',}, {serial: '6',name: '王小虎6',adress: '上海市普陀区金沙江路 1518 弄',data: '2016-05-02',}],}},mounted() {this.columnDrop()this.getInfo()},methods: {openImportTable(){this.$refs.import.show();},getInfo(){setUpByKey('tfhRIWm7').then(res => {this.col = JSON.parse(res.data.setJson)this.tableColumnList = JSON.parse(res.data.setJson)})},handleSelectionChange(val){this.multipleSelection = val;},//列拖拽columnDrop() {const wrapperTr = document.querySelector('.el-table__header-wrapper tr')this.sortable = Sortable.create(wrapperTr, {animation: 180,delay: 0,onEnd: evt => {const oldItem = this.tableColumnList[evt.oldIndex]this.tableColumnList.splice(evt.oldIndex, 1)this.tableColumnList.splice(evt.newIndex, 0, oldItem)}})},getIndex(index) {this.tableCellIndex = "";this.tableCellIndex = index;},tsetClick(row, column, cell, event) {this.columnName = "";this.columnName = column.property;this.tableCell.tableCellData = "";this.tableCell.tableCellData = row[this.columnName];},//添加表头,修改表头headerTest(val) {if (val.property == "addTableHeaderName") {this.tableColumnList.push({ field: this.num.toString(), label: '点击编辑项目流程名称' })for (let i = 0; i < this.tableData.length; i++) {this.$set(this.tableData[i], [parseInt(this.num)], "请添加内容");}this.num = this.num + 1;} else {this.tableHeader.tableHeaderName = "";this.tableHeader.property = "";this.tableHeader.tableHeaderName = val.label;this.tableHeader.property = val.property;this.dialogForHeader = true;}},//表头编辑提交submitForm() {for (let i = 0; i < this.tableColumnList.length; i++) {if (this.tableColumnList[i].field === this.tableHeader.property) {this.tableColumnList[i].label = this.tableHeader.tableHeaderName;this.col[i].label = this.tableHeader.tableHeaderName;}}this.dialogForHeader = false;},//表格内容编辑提交submitForm1() {if (this.tableCellIndex === "" || this.tableCellIndex === null) {alert("亲,请精准点击表格中的字进行修改!")} else {this.tableData[this.tableCellIndex][this.columnName] = this.tableCell.tableCellData;this.rush();}},//强制刷新数据rush() {this.$set(this.tableData);},//取消表头编辑cancel() {this.dialogForHeader = false;},// 操作之后获取最后的宽度headerdragend(newWidth, oldWidth, column, event) {// 获取当前拖动的是第几个,方便后续检测 DOM 是否已更新var currentColIndex = this.tableColumnList.findIndex(item=>item.label == event.target.innerText);this.tableColumnList[currentColIndex].wide = newWidth;this.col[currentColIndex].wide = newWidth;}},
}
</script>
<style scoped></style>
element-ui table 表格组件实现可拖拽效果(行、列)_element table 可拖拽-CSDN博客
基于element表格封装一个可编辑表头和拖拽排序的表格_自定义表格表头拖拽-CSDN博客
Vue el-table表头、表格内容,任意格都可编辑实现 小白的处女博文,大佬请勿喷(原创不易,转载请注明出处)_el-table实现可编辑表头和表内容的功能-CSDN博客
相关文章:
el-table 表格拖拽 + 表头可修改 + 宽度自定义
el-table 表格拖拽 表头可修改 宽度自定义 宽度自定义 header-dragend"headerdragend"操作之后获取最后的宽度 headerdragend(newWidth, oldWidth, column, event) {// 获取当前拖动的是第几个,方便后续检测 DOM 是否已更新var currentColIndex this.t…...

Google发布的CAT3D,在1分钟内,能够从任意数量的真实或生成的图像创建3D场景。
给定任意数量的输入图像,使用以这些图像为条件的多视图扩散模型来生成场景的新视图。生成的视图被输入到强大的 3D 重建管道,生成可以交互渲染的 3D 表示。总处理时间(包括视图生成和 3D 重建)仅需一分钟。 相关链接 论文&#x…...

基于Matlab实现声纹识别系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 声纹识别,也称为说话人识别,是一种通过声音判别说话人身份的生物识别技…...

【人工智能项目】小车障碍物识别与模型训练(完整工程资料源码)
实物演示效果: 一、绪论: 1.1 设计背景 小车障碍物识别与模型训练的设计背景通常涉及以下几个方面: 随着自动驾驶技术的发展,小车(如无人驾驶汽车、机器人等)需要能够在复杂的环境中自主导航。障碍物识别是实现这一目标的关键技术之一,它允许小车检测并避开路上的障碍物…...
#05【面试问题整理】嵌入式软件工程师
前言 本系列博客主要记录有关嵌入式方面的面试重点知识,本系列已经更新的篇目有如下: 1.1进程线程的基本概念 1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解 1.3 孤儿进程、僵尸进程、守护进程的概念 【本篇】5.1 Linux内核相关 6.0 单片机常见面试题 内容如有错误请在…...

同旺科技 FLUKE ADPT 隔离版发布 ---- 3
所需设备: 1、FLUKE ADPT 隔离版 内附链接; 应用于:福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于:福禄克Fluke 15B / 17B / 18B 总体连接: 连接线,根据自己实际需求而定; …...

探索 JavaScript 新增声明命令与解构赋值的魅力:从 ES5 迈向 ES6
个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! ES5、ES6介绍 文章目录 💯声明命令 let、const🍟1 let声明符&a…...
HTML5 历史、地理位置处理、全屏处理
目录 历史HistoryAPI地理位置处理GeolocationAPI全屏处理FullscreenAPIHistoryAPI window.history 对象 window.history 是浏览器提供的一个内置对象,它提供了对浏览器历史记录的访问和操作能力。通过这个对象,开发者可以实现无刷新页面跳转、添加新的浏览历史条目等,从而提…...
打印机驱动程序安装后位置以及注册表中的位置
文件系统中的位置 驱动程序文件:通常位于以下目录: C:\Windows\System32\spool\driversC:\Windows\System32\DriverStore\FileRepository 打印机配置文件:这些文件存储了特定打印机的配置信息: C:\Windows\System32\spool\PRINTER…...

oracle数据库解析过高分析
解析非常高,通过时间模型可以看到解析占比非常高 解析大致可以分为硬解析( hard parse)、软解析( soft parse)和软软解析( soft soft parse)。如,执行一条 SQL 的时候,如…...

Python解析网页-XPath
目录 1、什么是XPath 2、安装配置 3、XPath常用规则 4、快速入门 5、浏览器XPath工具 1.什么是XPath XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的语言。 它是W3C(World Wide Web Consortium)定义的一种标…...

Vue 3入门指南
title: Vue 3入门指南 date: 2024/5/23 19:37:34 updated: 2024/5/23 19:37:34 categories: 前端开发 tags: 框架对比环境搭建基础语法组件开发响应式系统状态管理路由配置 第1章:Vue 3简介 1.1 Vue.js的历史与发展 Vue.js由前谷歌工程师尤雨溪(Eva…...

Arcpy安装和环境配置
一、前言 ArcPy 是一个以成功的arcgisscripting 模块为基础并继承了arcgisscripting 功能进而构建而成的站点包。目的是为以实用高效的方式通过 Python 执行地理数据分析、数据转换、数据管理和地图自动化创建基础。该包提供了丰富纯正的 Python 体验,具有代码自动…...
Swagger2 和 Swagger3 的不同
Swagger2 和 Swagger3 的不同 SpringBoot 整合 Swagger3 和 Swagger2 的主要区别如下: 区别一:引入不同的依赖 如果使用的是 Swagger 3 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<…...

基于Tensorflow+Keras的卷积神经网络(CNN)人脸识别
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别是计算机视觉领域的一个重要研究方向,广泛应用于安全监控、身份验证、人机…...
electron学习记录
1.下载electron electron/electron-quick-start: Clone to try a simple Electron app (github.com) 下载实例模板 2.安装依赖 npm源改成中国镜像 npm config set registry https://registry.npmmirror.com 然后用cnpm i 来安装 npm换官方源 npm config set registry https:…...

【若依框架】学习
验证码 登录...
JavaScript运算符的二义性
在JavaScript中,运算符的二义性(或称为运算符重载)通常不是直接支持的特性,与某些其他语言(如C或Python)不同,这些语言允许开发者为自定义类型定义运算符的行为。然而,JavaScript的某…...

一次搞懂常见Banner尺寸,像素标准全解析!
在现代数字营销中,横幅banner广告是一种常见的形式,也是许多网站、博客和在线广告平台上常见的广告类型。然而,正确的横幅banner尺寸是至关重要的,因为它可以影响广告的可见性和效果。在本文中,我们将探讨横幅banner尺…...

短视频矩阵管理系统:高效运营的智能解决方案
在数字化时代,短视频已成为内容传播和品牌推广的重要渠道。随着短视频平台的不断涌现,如何高效管理和运营多个账号,成为了许多企业和个人面临的问题。短视频矩阵管理系统应运而生,它通过一系列智能化功能,为短视频的创…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...