Element分頁跨頁全選操作(跨頁記住已經勾選)

1.HTLM 添加按鈕全選禀挫,要有一個全選標識狀態(tài)

<el-button
        type="success"
              @click="selectAll"
            >
              {{ sign === 1 ? '全 選' : '取 消 全 選' }}
    </el-button>

    Table
     <el-table
              v-loading="loading"
              ref="accessControlTable"
              :data="tableData"
              :max-height="tableHeight"
              :span-method="arraySpanMethod"
              header-cell-class-name="custom-table"
              @selection-change="handleSelectionChange"
              @select="selectExceptCardIds"
              @select-all="selecetAll"
            >
              <el-table-column
                type="selection"
                width="30"
              />
              <el-table-column
                prop="id"
                type="index"
                align="center"
                width="50"
                label="序號"/>
            ...
        </el-table>

2.JS相關代碼如下:

// 數據
  data() {
    return {
            tableData: [],
            sign: 1, // 是否點擊全選,1未點擊全選萝风,2,點擊全選
            checkedArr: [], // 勾選的行數組
            uncheckedArr: [], // 取消勾選的行數組
    }

表格數據獲取接口返回值要做如下操作
// 切換分頁及分頁條數全選

  this.sign === 2 && this.chooseAllPages()
  this.sign === 1 && this.checkedSelected()

相關操作方法如下:

// 選中事件
    handleSelectionChange(val) {
      console.log('多選id===handleSelectionChange', val)
    },
// 合并表格最后三列
    arraySpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 6) {
        return [0, 0]
      } else if (columnIndex === 5) {
        return [1, 2]
      }
    },
// 全選切換
    selectAll() {
      this.sign = this.sign === 1 ? 2 : 1
      console.log('sign', this.sign)
      this.chooseAllPages()
      this.checkedArr = []
      this.uncheckedArr = []
    },
    // 全選所有頁面
    chooseAllPages() {
      if (this.sign === 2) {
        // 全選
        this.$nextTick(() => {
          this.tableData.forEach(row => {
            // 沒有取消過的勾選
            if (this.uncheckedArr.map(v => v.id).indexOf(row.id) < 0) {
              this.$refs.accessControlTable.toggleRowSelection(row, true)
            }
          })
        })
      } else {
        // 取消全選
        this.$nextTick(() => {
          this.$refs.accessControlTable.clearSelection()
        })
      }
    },
// 切換分頁時選擇之前選中
    checkedSelected() {
      console.log('切換分頁時選擇之前選中')
      this.$nextTick(() => {
        if (this.checkedArr.length === 0) return
        this.tableData.forEach(row => {
          if (this.checkedArr.map(v => v.id).indexOf(row.id) >= 0) {
            this.$refs.accessControlTable.toggleRowSelection(row, true)
          }
        })
      })
    },
// 全選后取消單個選擇事件,當用戶手動勾選數據行的 Checkbox 時觸發(fā)的事件
    selectExceptCardIds(selection, row) {
      // selection 當前頁面所有選中的項
      // row 當前點擊操作的項
      console.log('全選后取消單個選擇事件,當用戶手動勾選數據行的 Checkbox 時觸發(fā)的事件', selection, row)
      // 所有頁面不全選
      if (this.sign === 1) {
        if (selection.indexOf(row) >= 0) {
          // 新增(勾選上)
          selection.map(el => {
            if (this.checkedArr.map(v => v.id).indexOf(el.id) === -1) {
              this.checkedArr.push(el)
            }
          })
          console.log('所有選中的', this.checkedArr)
        } else {
          // 取消勾選
          this.checkedArr.map((el2, index) => {
            if (el2.id === row.id) {
              this.checkedArr.splice(index, 1)
            }
          })
          console.log('刪除后選中的', this.checkedArr)
        }
      } else {
        // 所有頁面全選
        if (selection.indexOf(row) >= 0) {
          // 重新勾選上
          this.uncheckedArr.map((el, index) => {
            if (el.id === row.id) {
              this.uncheckedArr.splice(index, 1)
            }
          })
        } else {
          // 取消勾選
          this.uncheckedArr.push(row)
        }
        console.log('剔除的id集合', this.uncheckedArr)
      }
    },
// 當前頁面全選
    selecetAll(selection) {
      console.log('當前頁面全選', selection)
      if (this.sign === 1) {
        // 不是全選按鈕狀態(tài)下-考慮選中哪些
        if (selection.length > 0) {
          // 選中
          selection.map(row => {
            if (this.checkedArr.map(v => v.id).indexOf(row.id) < 0) {
              this.checkedArr.push(row)
            }
          })
        } else {
          // 取消選中
          this.tableData.map(row => {
            this.checkedArr.map((el2, index) => {
              if (el2.id === row.id) {
                this.checkedArr.splice(index, 1)
              }
            })
          })
        }
        console.log('不是全選按鈕狀態(tài)下-考慮選中哪些', this.checkedArr)
      } else {
        // 全選按鈕狀態(tài)下-考慮不選中哪里
        if (selection.length === 0) {
          this.tableData.map(row => {
            this.uncheckedArr.push(row)
          })
        } else {
          selection.map(row => {
            this.uncheckedArr.map((el, index) => {
              if (el.id === row.id) {
                this.uncheckedArr.splice(index, 1)
              }
            })
          })
        }
        console.log('全選按鈕狀態(tài)下-考慮不選中哪里', this.uncheckedArr)
      }
    },

備注:其中id是每條記錄的唯一標識,當全選按鈕點擊后刻帚,按鈕變成取消全選拜效,切換標識sign的值抵怎,接口傳參帶入全選標識和剔除行id數組uncheckedArr,若是默認狀態(tài)非全選玫坛,則帶入非全選標識和選中行id數組checkedArr结笨。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昂秃,隨后出現的幾起案子禀梳,更是在濱河造成了極大的恐慌,老刑警劉巖肠骆,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件算途,死亡現場離奇詭異,居然都是意外死亡蚀腿,警方通過查閱死者的電腦和手機嘴瓤,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莉钙,“玉大人廓脆,你說我怎么就攤上這事〈庞瘢” “怎么了停忿?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚊伞。 經常有香客問我席赂,道長,這世上最難降的妖魔是什么时迫? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任颅停,我火速辦了婚禮,結果婚禮上掠拳,老公的妹妹穿的比我還像新娘癞揉。我一直安慰自己,他們只是感情好溺欧,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布喊熟。 她就那樣靜靜地躺著,像睡著了一般胧奔。 火紅的嫁衣襯著肌膚如雪逊移。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天龙填,我揣著相機與錄音胳泉,去河邊找鬼拐叉。 笑死,一個胖子當著我的面吹牛扇商,可吹牛的內容都是我干的凤瘦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼案铺,長吁一口氣:“原來是場噩夢啊……” “哼蔬芥!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陶冷,沒想到半個月后寻定,有當地人在樹林里發(fā)現了一具尸體纬傲,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谢翎。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沐旨,靈堂內的尸體忽然破棺而出森逮,到底是詐尸還是另有隱情,我是刑警寧澤磁携,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布褒侧,位于F島的核電站,受9級特大地震影響谊迄,放射性物質發(fā)生泄漏璃搜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一鳞上、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吊档,春花似錦篙议、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至香璃,卻和暖如春这难,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葡秒。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工姻乓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嵌溢,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓蹋岩,卻偏偏與公主長得像赖草,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子剪个,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容

  • 用到的組件 1秧骑、通過CocoaPods安裝 2、第三方類庫安裝 3扣囊、第三方服務 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,614評論 1 180
  • 久違的晴天乎折,家長會。 家長大會開好到教室時侵歇,離放學已經沒多少時間了骂澄。班主任說已經安排了三個家長分享經驗。 放學鈴聲...
    飄雪兒5閱讀 7,523評論 16 22
  • 創(chuàng)業(yè)是很多人的夢想盒至,多少人為了理想和不甘選擇了創(chuàng)業(yè)來實現自我價值酗洒,我就是其中一個。 創(chuàng)業(yè)后枷遂,我由女人變成了超人樱衷,什...
    亦寶寶閱讀 1,810評論 4 1
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友酒唉。感恩相遇矩桂!感恩不離不棄。 中午開了第一次的黨會痪伦,身份的轉變要...
    迷月閃星情閱讀 10,564評論 0 11
  • 可愛進取侄榴,孤獨成精。努力飛翔网沾,天堂翱翔癞蚕。戰(zhàn)爭美好,孤獨進取辉哥。膽大飛翔桦山,成就輝煌。努力進取醋旦,遙望恒水,和諧家園∷瞧耄可愛游走...
    趙原野閱讀 2,727評論 1 1