【VUE】ElementUI实现表格拖拽功能及行大图预览

news2024/9/24 17:17:21

一. 背景

elementui没自带的拖拽排序功能,所以需要借助第三方插件sortablejs

二. 步骤

  1. 安装
    npm install sortablejs --save
    在这里插入图片描述

  2. 引入
    import Sortable from ‘sortablejs’在这里插入图片描述

  3. template文件应用
    row-key填写唯一标识
    id="dragTable"是为了通过document找到该父容器
    在这里插入图片描述

  4. methods写方法,并根据需要在watch或mounted调用
    在这里插入图片描述
    以上并没有更新数据库。要想更新数据库需要调用接口,如下

三. 代码

 <template>
 	<el-row>
 		<el-col :offset="0" :span="18">
            <el-table
              id="dragTable"
              ref="table"
              border
              :data="list"
              :height="$baseTableHeight(1)"
              style="width: 100%"
            >
              <el-table-column type="selection" width="55" />
              <el-table-column label="#" type="index" />
              <el-table-column label="名称" prop="originalName" />
              <el-table-colum  label="图片">
              	<template slot-scope="{ row }">
              		<div @click="handlePriview(row.link)">
						<el-image alt="" :preview-src-list="srcList" :src="row.link" width="100%" />
					</div>
				</template>
			  </el-table-colum>
              <el-table-column label="操作" width="300">
                <template slot-scope="{ row }">
                  <el-button
                    icon="el-icon-view"
                    type="text"
                    @click="handlePreview(row)"
                  >
                    预览
                  </el-button>
                </template>
              </el-table-column>
              <!--数据为空时的处理,加一张图片提示-->
              <template #empty>
                <el-image
                  class="vab-data-empty"
                  :src="require('@/assets/empty_images/data_empty.png')"
                />
              </template>
            </el-table>
          </el-col>
   </el-row>
</template>
 
<script>
	 data() {
     	 return {
       	 	list: [],
       	 	archiveFileId: null,
        	srcList: [],
      	 }
	 },
 
	 methods: {
      	// 拖拽功能
      	rowDrop() {
        	this.$nextTick(() => {
          	this.$nextTick(() => {
          	// 要拖拽元素的父容器
         	 const tbody = document.querySelector('#dragTable tbody')
         	 const _this = this
         	 if (tbody) {
          	  Sortable.create(tbody, {
           	   // 指定父元素下可拖拽的子元素
            	handle: '.el-table__row',
              	animation: 150,
              	onEnd: ({ newIndex, oldIndex }) => {
              		// 获取唯一主键id
                	let archiveFileId = _this.list[oldIndex].id
                	this.archiveFileId = archiveFileId
                	_this.list.splice(
                  		newIndex,
                  		0,
                  		_this.list.splice(oldIndex, 1)[0]
                	)
                	var newArray = _this.list.slice(0)
                	_this.list = []
                	_this.$nextTick(function () {
                  	_this.list = newArray
                	})
                	// 调用后端接口(此处只传了一个主键id和排序sort字段)
                	updateSortById(this.archiveFileId, newIndex + 1).then((res) => {
                  		if (res.code == 200) {
                  		// 修改成功后,需要刷新页面
                    	this.fetchData()
                 	 }
                	})
              	},
            	})
          	}
        	})
      	},
      	// 预览功能
      	handlePriview(link){
        	this.srcList.push(link)
        }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能电网如何助力能源革命实现高效能源管理与分配?

能源革命是全球范围内的重要议题&#xff0c;为了实现可持续发展和应对能源挑战&#xff0c;人们对新的能源技术和能源管理方式寄予了厚望。智能电网作为能源革命的关键组成部分&#xff0c;利用先进的通信和信息技术&#xff0c;实现了高效能源管理与分配&#xff0c;为能源革…

MATLAB——信号处理仿真功能课程设计报告

目 录 摘 要... I 目 录. II 1 设计目的及内容. 1 1.1 课程设计目的. 1 1.2 课程设计内容. 1 2 课程设计基本原理. 3 2.1 基本信号. 3 2.2 计算原理. 3 3 设计与仿真. 4 3.1 基本信号. 4 3.2计算过程. 6 3.3 matlab仿真原理. 7 3.4 计算结果. 8 3.5结果…

Python-练脑系列-04依旧是数据结构

前言 &#x1f4cc;今天是Python的第四次练脑&#xff0c;本次题目为三题较为简单的题目 给定一个字典&#xff0c;其中键和值都是整数&#xff0c;找出字典中所有键和值的和为偶数的键值对&#xff0c;并返回结果的列表。给定一个字典和一个值&#xff0c;将字典中所有等于该值…

【软考网络管理员】2023年软考网管初级常见知识考点(22)- 交换机配置及命令

涉及知识点 华为交换机配置命令大全&#xff0c;交换机设备参数设置 &#xff0c; 交换机路由器的基本配置&#xff0c;交换机命令汇总 &#xff0c; VLAN 配置 &#xff0c; GVRP 配置 &#xff0c; STP 配置&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员…

OpenCV——总结《图像处理-3》形态学操作

1.开运算和腐蚀-膨胀是相同的&#xff0c;同理闭运算也是。 #一个开运算和腐蚀-膨胀的效果是相同的在这里进行对比 eroded cv2.erode(img,kernel) dilated cv2.dilate(eroded,kernel) cv2.imshow(Eroded-Swell Image,dilated)open cv2.morphologyEx(img,cv2.MORPH_OPEN,ker…

数据库锁全集

一、全局锁&#xff1a; 顾名思义&#xff0c;全局锁执行后&#xff0c;整个库都锁定。有读锁和写锁&#xff0c;加锁和解锁方式如下&#xff1a; 加锁&#xff1a;flush tables WITH READ LOCK&#xff1b; 解锁&#xff1a;UNLOCK TABLES; 使用场景&#xff1a;做全库的逻辑…

pycharm中Terminal输入sqlite3,出现无法将sqlite项识别为cmdlet**的解决方法

前提&#xff1a;本机上已安装sqlite3&#xff0c;安装详见&#xff1a;pycharm社区版中安装配置sqlite3_Sunshine_0426的博客-CSDN博客 问题&#xff1a; cmd命令行中或pycharm中Terminal行输入sqlite3 db.sqlite3命令后&#xff0c;出现“无法将“sqlite3”项识别为 cmdlet…

伦敦银实时行情最新解读

在伦敦银市场上做交易&#xff0c;不管大家做的是长线、中线还是短线&#xff0c;都离不开对最新的实时行情走势进行解读。借助交易软件上一些常用的技术指标&#xff0c;伦敦银投资者可以从技术面增加自己的交易操作准确率。 Stochastic是相当常见而实用的技术指标&#xff0c…

vue点击鼠标生成24字社会主义核心价值观上浮特效

在app.vue中 <template><div id"app"><transition name"el-zoom-in-top" mode"out-in"><keep-alive :include"cacheviews"><!-- 一级路由 --><router-view ></router-view></keep-aliv…

【杂谈】关于Huawei S5720巡检过程中的“CPCAR_DROP_MPU”告警

背景 本年度二季度为某客户巡检数通设备&#xff08;Huawei居多&#xff09;时&#xff0c;在某楼宇汇聚设备上display logbuffer发现存在大量告警&#xff0c;如下&#xff1a; Jun 8 2023 15:34:24 AGG-S5720-1 %%01INFO/4/SUPPRESS_LOG(l)[58]:Last message repeated 2 t…

chatgpt赋能python:Python获取某个值的方法

Python获取某个值的方法 在Python编程中&#xff0c;有时候我们需要从数据集或者对象中获取某个特定的值&#xff0c;这时候我们可以使用Python提供的各种方法来实现。本文将介绍几种常见的方法&#xff0c;并且说明它们的优劣和使用场景。 使用索引获取值 在Python中&#…

dirsearch

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 介绍例如 安装使用场景01 XXX 介绍 dirsearch&#xff0c;是一个目录扫描工具&#xff0c;在目录扫描领域是一个强大的竞争对手&#xff0c;具有多线程、代理支持、…

MySQL数据库学习笔记一

MySQL优点 使用数据库&#xff1a; 使用show来显示存在的数据库、表、列 select语句 排序&#xff1a;Order by 降序排序&#xff1a; where语句 通配符&#xff1a;%&#xff0c;_ 正则表达式 正则表达式之 . 字符&#xff1a; Like和正则表达式regexp的区别 插入多行

ffmpeg学习日记121-视频-各种图片转yuv

Author: wencoo Blog&#xff1a;https://wencoo.blog.csdn.net/ Date: 24/04/2023 Details:文章目录 实现功能查看转换结果参考 图片的解码方式和视频解码是一样的&#xff0c;因为视频是由一副一副的图片组成的&#xff0c;只不过视频的帧会前后参考&#xff0c;而图片是单独…

OCR本地搜题(无需网络)

1、先下载好所需要的软件 2、安装.NET&#xff08;必须&#xff0c;否则无法使用&#xff09; 安装步骤&#xff1a;全部默认。 3、找到ScreenshotsSearch下的狗头 4、界面如下 5、点击 题库后&#xff0c;先清空题库 6在点击下方用Excel打开题库&#xff08;选择好题库文件&a…

点击左侧 - 右侧页面对应刷新(iframe)

在工作方面的需求&#xff0c;需要实现点击左侧栏目&#xff0c;右侧的内容对应更改。 这里&#xff0c;我运用了iframe来实现这个功能&#xff01;&#xff08;布局的话,使用了flex弹性布局&#xff09; 完整效果图。 左侧导航显示代码&#xff1a; <div class"lef…

菜鸡shader:L4三色环境光原理妙用并在ue4中实现

三色环境光的拓展运用 我的上一篇博客写了关于三色环境光的原理&#xff0c;这次就来简单拓展一下。最重要的核心思想其实就是取法线向量的第二个分量&#xff0c;因为它控制方法是指向xz平面的上或者下。 所以这次要用这个原来来单独摘出上层环境光&#xff0c;乘上菲涅尔&a…

【Java项目 读写分离技术】

文章目录 Java项目 读写分离技术1 Mysql 主从复制1.1 介绍1.2 配置 2 读写分离实现2.1 背景2.2 Sharding-JDBC 介绍2.3 配置步骤 Java项目 读写分离技术 面对日益增加的系统访问量&#xff0c;数据库的吞吐量面临着巨大瓶颈。对于同一时刻有大量并发读操作和较少写操作类型的应…

el-date-picker设置今天之前的日期不可选

<el-date-pickerv-model"editForm.offlineTime"type"date"placeholder"选择日期"style"width: 150px":picker-options"{disabledDate: (time) >time.getTime() <new Date(new Date().setHours(0, 0, 0, 0))}">&…

GCDW云原生数据仓库获评“2023优秀科技成果奖”

5月26日&#xff0c;“2023中国国际大数据产业博览会”在贵阳盛大开幕&#xff0c;同日举行了“领先科技成果发布会”&#xff0c;来自国内外高校、科研机构、科技企业的357项优秀成果参与申报&#xff0c;代表了近年来国内外大数据领域最前沿的科技成果。“南大通用GCDW云原生…