最近写了一个批量删除功能,遇到了不少坑,特此记录一下
表格的代码如下
复制代码 代码如下:<el-table @row-click="handleCurrentChange" @selection-change="selsChange" ref="table" :data="pageData" stripe :default-sort="{prop: 'createAt', order: 'descending'}" @sort-change="sortChange">
如图所示,表格最前面有一个复选框
代码很简单
<el-table-column type="selection" width="65"></el-table-column>
删除按钮的代码如下:
复制代码 代码如下:<el-button v-show="mode == 'list'" class="small" type="warning" size="small" @click="removeBatch(sels)" :disabled="this.sels.length === 0||this.disabled">批量删除</el-button>
data的代码如下:
data() { return { pageSize: 12, total: 0, pageData: [], query: '', sort: 'createAt', order: 'descending', defaultSnap: srcFallback, accept: '', ws: null, sels: [],//选中显示的值 disabled:true }; }
表格中的视频数据来自于pageData,每个视频都是一个对象,对象的status属性等于waiting或者有progress属性时,此视频正在转码,或者正在准备转码,不允许删除, 批量删除就是把被选中的行添加到sels这个数组中,把数组里的每一个对象的id属性组成一个数组,发送给后端,此外,正在转码的视频不允许删除,此时按钮也是禁用状态
根据官方文档,@selection-change="selsChange"
是复选框选择改变时触发的事件
在methods中添加一个方法
selsChange(sels) { //被选中的行组成数组 this.sels = sels; //遍历被选中行数所组成的数组 for(let element of this.sels){ //如果视频正在转码或者等待转码,禁用按钮,结束方法 if(element.status == 'waiting'||element.progress){ this.disabled = true; return; } //如果没有视频正在转码或者等待转码,按钮可用 this.disabled = false; } }
把请求发送给后端,代码如下:
removeBatch(rows){ var ids = []; rows.forEach(element =>{ ids.push(element.id) }) this.$confirm('确定要删除选中的文件吗"htmlcode">r.post('/removeBatch',async(req,res) => { var ids = req.body.ids; var files = utils.vod.get("files"); //第一次循环,如果有正在转码的文件,就抛出异常,结束循环 for(let id of ids){ var transing = trans.agent.transing[id]; if(transing){ throw new Error('正在转码的文件无法删除'); return; } } //如果没有转码的文件,进入第二次循环 for(let id of ids){ var files = utils.vod.get("files"); var row = files.find({id: id}).cloneDeep().value(); //如果没有要删除的,就结束 if(!row) { res.sendStatus(200); return; } var dir = path.dirname(row.path); var name = path.basename(row.path, path.extname(row.path)); var transDir = path.resolve(dir, name); //删除源文件 if(fs.existsSync(row.path)){ fs.removeSync(row.path); } //删除转码文件 if(fs.existsSync(transDir)){ fs.removeSync(transDir); } //删除json文件记录 files.remove({id: id}).write(); } res.sendStatus(200); })以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]