element-ui中的table默認選中初始選中數據可分頁選中

html

<el-table ref="multipleTable1" @selection-change="handleSelectionChange" :row-key="getRowKeys" :data="liveTableData" v-loading="loading">
    <el-table-column type="selection" width="55" :reserve-selection="true"></el-table-column>
    <el-table-column prop="title" align="center" label="直播名稱"> </el-table-column>
</el-table >
<div class="pagination-container">
  <el-pagination style="float: right;" @current-change="handleCurrentChange" :current-page.sync="searchParams.pageNum" :page-size="searchParams.pageSize" background small layout="total, prev, pager, next" :total="total">
  </el-pagination>
  <div style="clear: both;"></div>
</div>

js

<script>
import { liveList } from '@/api/live'
export default {
    props: {
        //默認選中數據
        bindLives: {
            type: Array,
            default: () => []
        },
    },
    data() {
        return {
            loading: false,
            total: 0,
            liveTableData: [],
            searchParams: {
                pageNum: 1,
                pageSize: 1000,
            },
            multipleSelection: []
        }
    },
    mounted() {
        this.getLiveData()
   },
   methods: {
        //分頁保留上選中數據
        getRowKeys(row) {
            return row.id
        },
        //獲取數據
        getLiveData() {
            this.loading = true
            liveList(this.searchParams,
                res => {
                    this.loading = false
                    if (res.code === 200) {
                        this.liveTableData = []
                        this.liveTableData = res.data.rows
                        this.total = res.data.total
                        this.multipleSelection = JSON.parse(JSON.stringify(this.bindLives))
                        for (let a = 0; a < this.liveTableData.length; a++) {
                            const element1 = this.liveTableData[a];
                            for (let b = 0; b < this.multipleSelection.length; b++) {
                                const element2 = this.multipleSelection[b];
                                if (element1.id === element2.id) {
                                    this.$nextTick(() => {
                                        this.$refs.multipleTable1.toggleRowSelection(this.liveTableData[a], true);
                                    })
                                }
                            }
                        }
                        //將所有數據加載一遍,然后顯示一頁4條數據,對于數據量大的,只能找后端配合了
                        if (this.searchParams.pageSize === 1000) {
                            this.searchParams.pageSize = 4
                            this.getLiveData()
                        }
                    } else {
                        this.loading = false
                        this.$message.error(res.msg)
                    }
                },
                () => {
                    this.loading = false
                    this.$message.error('網絡異常')
                }
            )
        },
        // 分頁
        handleCurrentChange(page) {
            this.searchParams.pageNum = page
            this.getLiveData()
        },
        handleSelectionChange(val) {
            this.multipleSelection = val;
        },
        backClick() {
            this.$emit('back')
        },
  }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容