亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue+element的表格實(shí)現(xiàn)批量刪除功能示例代碼

 更新時(shí)間:2018年08月17日 13:55:40   作者:qingzhizhenhun  
這篇文章主要介紹了vue+element的表格實(shí)現(xiàn)批量刪除功能示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

最近寫(xiě)了一個(gè)批量刪除功能,遇到了不少坑,特此記錄一下


表格的代碼如下

復(fù)制代碼 代碼如下:
<el-table @row-click="handleCurrentChange" @selection-change="selsChange" ref="table" :data="pageData" stripe :default-sort="{prop: 'createAt', order: 'descending'}" @sort-change="sortChange">

如圖所示,表格最前面有一個(gè)復(fù)選框

代碼很簡(jiǎn)單

 <el-table-column type="selection" width="65"></el-table-column>

刪除按鈕的代碼如下:

復(fù)制代碼 代碼如下:
<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
  };
 }

表格中的視頻數(shù)據(jù)來(lái)自于pageData,每個(gè)視頻都是一個(gè)對(duì)象,對(duì)象的status屬性等于waiting或者有progress屬性時(shí),此視頻正在轉(zhuǎn)碼,或者正在準(zhǔn)備轉(zhuǎn)碼,不允許刪除, 批量刪除就是把被選中的行添加到sels這個(gè)數(shù)組中,把數(shù)組里的每一個(gè)對(duì)象的id屬性組成一個(gè)數(shù)組,發(fā)送給后端,此外,正在轉(zhuǎn)碼的視頻不允許刪除,此時(shí)按鈕也是禁用狀態(tài)

根據(jù)官方文檔,@selection-change="selsChange"是復(fù)選框選擇改變時(shí)觸發(fā)的事件

在methods中添加一個(gè)方法

selsChange(sels) { 
    //被選中的行組成數(shù)組 
    this.sels = sels;
    //遍歷被選中行數(shù)所組成的數(shù)組
    for(let element of this.sels){
    //如果視頻正在轉(zhuǎn)碼或者等待轉(zhuǎn)碼,禁用按鈕,結(jié)束方法
     if(element.status == 'waiting'||element.progress){
      this.disabled = true;
      return;
     }
       //如果沒(méi)有視頻正在轉(zhuǎn)碼或者等待轉(zhuǎn)碼,按鈕可用
      this.disabled = false;
    }
  }

把請(qǐng)求發(fā)送給后端,代碼如下:

  removeBatch(rows){
   var ids = [];
   rows.forEach(element =>{
    ids.push(element.id)
   })
   this.$confirm('確定要?jiǎng)h除選中的文件嗎?','提示').then(() =>{
    $.post('/vod/removeBatch',{
     ids:ids
    }).then(dara =>{
     this.updateData();
    })
   }).catch(()=>{});
  }

前端已經(jīng)排除正在轉(zhuǎn)碼的視頻了,后端是否能根據(jù)前端傳來(lái)的數(shù)據(jù),直接刪除視頻呢?

答案是不可以,后端一樣要做驗(yàn)證

思路是,拿到前端傳來(lái)的數(shù)據(jù)后,遍歷數(shù)組兩次,第一次如果發(fā)現(xiàn)有正在轉(zhuǎn)碼的視頻,拋出異常,不會(huì)進(jìn)入第二次循環(huán),第二次循環(huán)才根據(jù)id刪除視頻

代碼如下

r.post('/removeBatch',async(req,res) => {
  var ids = req.body.ids;
  var files = utils.vod.get("files");
  //第一次循環(huán),如果有正在轉(zhuǎn)碼的文件,就拋出異常,結(jié)束循環(huán)
  for(let id of ids){
    var transing = trans.agent.transing[id];
    if(transing){
      throw new Error('正在轉(zhuǎn)碼的文件無(wú)法刪除');
      return;
    }
  }
  //如果沒(méi)有轉(zhuǎn)碼的文件,進(jìn)入第二次循環(huán)
  for(let id of ids){
    var files = utils.vod.get("files");
    var row = files.find({id: id}).cloneDeep().value();
    //如果沒(méi)有要?jiǎng)h除的,就結(jié)束
    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);
    }
    //刪除轉(zhuǎn)碼文件
    if(fs.existsSync(transDir)){
      fs.removeSync(transDir);
    }
    //刪除json文件記錄
    files.remove({id: id}).write();
  }
  res.sendStatus(200);
})

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Vue源碼學(xué)習(xí)之雙向綁定

    詳解Vue源碼學(xué)習(xí)之雙向綁定

    這篇文章主要介紹了Vue源碼學(xué)習(xí)之雙向綁定,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue自定義加載指令v-loading占位圖指令v-showimg

    vue自定義加載指令v-loading占位圖指令v-showimg

    這篇文章主要為大家介紹了vue自定義加載指令和v-loading占位圖指令v-showimg的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 基于Vue2實(shí)現(xiàn)印章徽章組件

    基于Vue2實(shí)現(xiàn)印章徽章組件

    這篇文章主要介紹了如何基于vue2實(shí)現(xiàn)簡(jiǎn)單的印章徽章控件,文中通過(guò)示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的朋友們下面就跟隨小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • Vue2 Vue-cli中使用Typescript的配置詳解

    Vue2 Vue-cli中使用Typescript的配置詳解

    Vue作為前端三大框架之一截至到目前在github上以收獲44,873顆星,足以說(shuō)明其以悄然成為主流。下面這篇文章主要給大家介紹了關(guān)于Vue2 Vue-cli中使用Typescript的配置的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • 詳解vue中axios請(qǐng)求的封裝

    詳解vue中axios請(qǐng)求的封裝

    這篇文章主要介紹了vue中axios請(qǐng)求的封裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue自嵌套樹(shù)組件使用方法詳解

    Vue自嵌套樹(shù)組件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Vue自嵌套樹(shù)組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue 中的 render 函數(shù)作用詳解

    vue 中的 render 函數(shù)作用詳解

    這篇文章主要介紹了vue 中的 render 函數(shù)作用,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • vue3獲取子組件的DOM元素的方法總結(jié)

    vue3獲取子組件的DOM元素的方法總結(jié)

    在 Vue 3 中,訪問(wèn)子組件的 DOM 元素是一個(gè)常見(jiàn)的需求,本文將介紹如何在 Vue 3 中使用不同的方法來(lái)獲取子組件的 DOM 元素,需要的朋友可以參考下
    2023-08-08
  • vue中如何禁止input框和textarea編輯

    vue中如何禁止input框和textarea編輯

    這篇文章主要介紹了vue中如何禁止input框和textarea編輯,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue3插件json2ts的具體使用

    vue3插件json2ts的具體使用

    本文主要介紹了vue3插件json2ts的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論