当前位置: 首页 > news >正文

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) {// 获取当前拖动的是第几个&#xff0c;方便后续检测 DOM 是否已更新var currentColIndex this.t…...

Google发布的CAT3D,在1分钟内,能够从任意数量的真实或生成的图像创建3D场景。

给定任意数量的输入图像&#xff0c;使用以这些图像为条件的多视图扩散模型来生成场景的新视图。生成的视图被输入到强大的 3D 重建管道&#xff0c;生成可以交互渲染的 3D 表示。总处理时间&#xff08;包括视图生成和 3D 重建&#xff09;仅需一分钟。 相关链接 论文&#x…...

基于Matlab实现声纹识别系统

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

【人工智能项目】小车障碍物识别与模型训练(完整工程资料源码)

实物演示效果: 一、绪论: 1.1 设计背景 小车障碍物识别与模型训练的设计背景通常涉及以下几个方面: 随着自动驾驶技术的发展,小车(如无人驾驶汽车、机器人等)需要能够在复杂的环境中自主导航。障碍物识别是实现这一目标的关键技术之一,它允许小车检测并避开路上的障碍物…...

#05【面试问题整理】嵌入式软件工程师

前言 本系列博客主要记录有关嵌入式方面的面试重点知识,本系列已经更新的篇目有如下: ​ 1.1进程线程的基本概念 1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解 1.3 孤儿进程、僵尸进程、守护进程的概念 【本篇】5.1 Linux内核相关 6.0 单片机常见面试题 内容如有错误请在…...

同旺科技 FLUKE ADPT 隔离版发布 ---- 3

所需设备&#xff1a; 1、FLUKE ADPT 隔离版 内附链接&#xff1b; 应用于&#xff1a;福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于&#xff1a;福禄克Fluke 15B / 17B / 18B 总体连接&#xff1a; 连接线&#xff0c;根据自己实际需求而定&#xff1b; …...

探索 JavaScript 新增声明命令与解构赋值的魅力:从 ES5 迈向 ES6

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;声明命令 let、const&#x1f35f;1 let声明符&a…...

HTML5 历史、地理位置处理、全屏处理

目录 历史HistoryAPI地理位置处理GeolocationAPI全屏处理FullscreenAPIHistoryAPI window.history 对象 window.history 是浏览器提供的一个内置对象,它提供了对浏览器历史记录的访问和操作能力。通过这个对象,开发者可以实现无刷新页面跳转、添加新的浏览历史条目等,从而提…...

打印机驱动程序安装后位置以及注册表中的位置

文件系统中的位置 驱动程序文件&#xff1a;通常位于以下目录&#xff1a; C:\Windows\System32\spool\driversC:\Windows\System32\DriverStore\FileRepository 打印机配置文件&#xff1a;这些文件存储了特定打印机的配置信息&#xff1a; C:\Windows\System32\spool\PRINTER…...

oracle数据库解析过高分析

解析非常高&#xff0c;通过时间模型可以看到解析占比非常高 解析大致可以分为硬解析&#xff08; hard parse&#xff09;、软解析&#xff08; soft parse&#xff09;和软软解析&#xff08; soft soft parse&#xff09;。如&#xff0c;执行一条 SQL 的时候&#xff0c;如…...

Python解析网页-XPath

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

Vue 3入门指南

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

Arcpy安装和环境配置

一、前言 ArcPy 是一个以成功的arcgisscripting 模块为基础并继承了arcgisscripting 功能进而构建而成的站点包。目的是为以实用高效的方式通过 Python 执行地理数据分析、数据转换、数据管理和地图自动化创建基础。该包提供了丰富纯正的 Python 体验&#xff0c;具有代码自动…...

Swagger2 和 Swagger3 的不同

Swagger2 和 Swagger3 的不同 SpringBoot 整合 Swagger3 和 Swagger2 的主要区别如下&#xff1a; 区别一&#xff1a;引入不同的依赖 如果使用的是 Swagger 3 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<…...

基于Tensorflow+Keras的卷积神经网络(CNN)人脸识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别是计算机视觉领域的一个重要研究方向&#xff0c;广泛应用于安全监控、身份验证、人机…...

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中&#xff0c;运算符的二义性&#xff08;或称为运算符重载&#xff09;通常不是直接支持的特性&#xff0c;与某些其他语言&#xff08;如C或Python&#xff09;不同&#xff0c;这些语言允许开发者为自定义类型定义运算符的行为。然而&#xff0c;JavaScript的某…...

一次搞懂常见Banner尺寸,像素标准全解析!

在现代数字营销中&#xff0c;横幅banner广告是一种常见的形式&#xff0c;也是许多网站、博客和在线广告平台上常见的广告类型。然而&#xff0c;正确的横幅banner尺寸是至关重要的&#xff0c;因为它可以影响广告的可见性和效果。在本文中&#xff0c;我们将探讨横幅banner尺…...

短视频矩阵管理系统:高效运营的智能解决方案

在数字化时代&#xff0c;短视频已成为内容传播和品牌推广的重要渠道。随着短视频平台的不断涌现&#xff0c;如何高效管理和运营多个账号&#xff0c;成为了许多企业和个人面临的问题。短视频矩阵管理系统应运而生&#xff0c;它通过一系列智能化功能&#xff0c;为短视频的创…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...