自定义拖动排序

本文介绍了如何在ElementUI的上传组件中集成SortableJS库,实现在图片上传后的拖动排序功能,提供代码示例和参数配置。
摘要由CSDN通过智能技术生成

使用插件:SortableJS

npm install sortablejs --save

结合element的上传组件的效果示例:

代码实现:

<template>
	<div>
        //element上传组件
		<el-upload
			ref="imageUpload"
			v-model:file-list="formData.images"
			:action="uploadUrl"
			list-type="picture-card"
			:on-preview="handlePictureCardPreview"
			:on-remove="handleRemove"
			:on-success="handleSuccess"
			:on-error="uploadErrorFn"
			accept=".jpg,.png"
			:before-upload="beforeUpload"
			multiple
		>
			<el-icon><Plus /></el-icon>
		</el-upload>
		<div class="uploadBox">支持.jpg/.png格式,上传图片大小不能超过10MB,推荐长宽比=1:1</div>
		<el-dialog v-model="VisiblePreview" width="auto">
			<img w-full :src="dialogImageUrl" alt="Preview Image" />
		</el-dialog>
	</div>
</template>

<script setup lang="ts">

//导入sortablejs
import Sortable from 'sortablejs';

//获取组件实例
const imageUpload = ref();

// 获取组件的上传列表的元素
const el = imageUpload.value.$el.querySelectorAll('.el-upload-list')[0];

// 拖动排序  具体参数可查看官网文档
new Sortable(el, {
	sort: true,
	animation: 150,
	ghostClass: 'el-upload-list',
	preventOnFilter: true, //  在触发过滤器`filter`的时候调用`event.preventDefault()`
	handle: '.el-upload-list__item',
	draggable: '.el-upload-list__item',
	dataIdAttr: 'data-id',
	// 拖拽完成后更新数据的位置
	onEnd: async function ({ oldIndex, newIndex }: any) {
		const arr = formData.value.images;
		const page = arr[oldIndex];
		arr.splice(oldIndex, 1);
		arr.splice(newIndex, 0, page);
	},
});
</script>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值