当前位置: 首页 > 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;为短视频的创…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

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

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

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...

C#最佳实践:为何优先使用as或is而非强制转换

C#最佳实践&#xff1a;为何优先使用as或is而非强制转换 在 C# 的编程世界里&#xff0c;类型转换是我们经常会遇到的操作。就像在现实生活中&#xff0c;我们可能需要把不同形状的物品重新整理归类一样&#xff0c;在代码里&#xff0c;我们也常常需要将一个数据类型转换为另…...