Elemet-ui表格+分页

Elemet-ui表格+分页

1前端控制分页

:data=“tableData.slice((currentPage-1)pageSize,currentPagepageSize)” 现在是没对接数据之前由前端来控制分页
:total=“tableData.length” 表格长度自己计算

/**
* ceshi.vue
*
* ceshi
*
* @author  自己名字
*/
<template>
    <div>
            <!--表格-->
            <div style="margin-top: 10px;">
                <el-table
                        :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
                        style="width: 100%"
                        height="528"
                        :header-cell-style='styleObj'>
                    <el-table-column
                            prop="date"
                            label="日期"
                            width="180">
                    </el-table-column>
                    <el-table-column
                            prop="name"
                            label="姓名"
                            width="180">
                    </el-table-column>
                    <el-table-column
                            prop="address"
                            label="地址">
                    </el-table-column>
                </el-table>
            </div>
            <!--分页-->
            <div class="block">
              <el-pagination
                      align='center'
                      @size-change="handleSizeChange"
                      @current-change="handleCurrentChange"
                      :current-page="currentPage"
                      :page-sizes="[1,5,10,20]"
                      :page-size="pageSize"
                      layout="total, sizes, prev, pager, next, jumper"
                      :total="tableData.length">
              </el-pagination>
            </div>
    </div>
</template>

<script>
    export default {
        name: "组件名字",
        data(){
            return {
                tableData: [{
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1518 弄'
                }, {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1517 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1519 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 15219 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 15319 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 15419 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1519 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 15519 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 15519 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 15519 弄'
                }, {
                    date: '2016-05-03',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 15166 弄'
                }],
                currentPage: 1, // 当前页码
                total: 20, // 总条数
                pageSize: 5, // 每页的数据条数
                styleObj: {
                    color:'rgba(0,0,0,0.8)',
                    background:'#CED4D9',
                    fontSize:'14px',
                    fontFamily: "PingFangSC-Medium",
                    fontWeight:500,
                }
            }
        },
        methods: {
            handleSizeChange(val) {
                console.log(`每页 ${val} 条`);
                this.currentPage = 1;
                this.pageSize = val;
            },
            handleCurrentChange(val) {
                console.log(`当前页: ${val}`);
                this.currentPage = val;
            },
        },
    }
</script>

2后台分页

这里需要改成 :data="tableData"直接渲染不需要前端进行分页控制了
:total=“total” ,:total设置表格数据的长度 total是我这边后台返回给我的数据长度直接赋值上去就ok

/**
* ceshi.vue
*
* ceshi
*
* @author  自己名字
*/
<template>
    <div>
            <!--表格-->
            <div style="margin-top: 10px;">
                <el-table
                        :data="tableData"
                        id="out-table"
                        style="width: 100%"
                        height="528"
                        :header-cell-style='styleObj'>
                    <el-table-column type="index" label="序号" align="center" width="50"></el-table-column>
                    <el-table-column prop="createUserName" label="创建人" align="center" width="80"></el-table-column>
                    <el-table-column prop="createDate" label="创建时间" align="center" width="100"></el-table-column>
                </el-table>
            </div>
            <!--分页-->
            <div class="block">
            <el-pagination
                    align='center'
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                    :current-page="currentPage"
                    :page-sizes="[1,5,10,20]"
                    :page-size="pageSize"
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="total">
            </el-pagination>
            </div>
    </div>
</template>

<script>
    export default {
        name: "组件名字",
        data(){
            return {
                tableData: [],
                sizeForm:{
                    region:''
                },
                currentPage: 1, // 当前页码
                total: 5, // 总条数 前端先随便写一个~传空的会报错
                pageSize: 5, // 每页的数据条数
                styleObj: {
                    color:'rgba(0,0,0,0.8)',
                    background:'#CED4D9',
                    fontSize:'14px',
                    fontFamily: "PingFangSC-Medium",
                    fontWeight:500,
                },
            }  
        },
        methods: {
            //分页 
            handleSizeChange(val) {
             //   console.log(`每页 ${val} 条`)
                this.currentPage = 1;
                this.pageSize = val; //每页显示的条数
                this.List()
            },
            handleCurrentChange(val) {
               //  console.log(`当前页: ${val}`)
                this.currentPage = val;
                this.List()
            },
            //列表
            List(){
                 this.$axios({
                        url:'地址',
                        method: 'post',
                        data: {
                            param:JSON.stringify({
                                companyId:this.$cookie.get('currentCompanyId') , //公司ID
                                keyword:this.Findkeyword, //搜索关键字
                                cooperationStatus:this.pullDownValue, //合作状态
                                companyType:'', //企业类型:1个体,2企业
                                sqlBeginDate:'', //起始时间
                                sqlEndDate:'', //结束时间
                                createUserName:'' //创始人
                            })
                             , pageParam:({
                                pageIndex:this.currentPage-1, //第几页
                                pageSize:this.pageSize //每页几条
                            })
                            // , pageParam:JSON.stringify({
                            //     pageIndex:0,
                            //     pageSize:20
                            // })
                        },
                        headers:{
                            Authorization:this.$cookie.get('token')
                        }
                        }).then(result =>{
                            if(result.data.code == '000000'){ //成功
                                this.tableData = result.data.data //表格数组
                                this.total = result.data.total //表格数据长度
                            }else if(result.data.code == '100000'){ //失败
                                alert(result.data.message)
                            }  
                        }).catch((error)=>{
                            alert('请求失败')
                        //    console.log(error)
                        });
            },
        },
        created(){
            var $cookie = this.$cookie;
            this.$cookie.get('token')  
            this.getDictItemsByCodes()
            this.List()
        }
    }
</script>

有个问题我一直不明白我这边后台需要接受的json对象要转换成字符串但是呢我遇到下面的问题了
param对象被转成了字符串 没问题
pageParam对象如果转换成字符串axios请求就会报错但是我这边后台说这两个对象必须转换成字符串 所以我很纳闷为什么
有大佬看出其中的问题没(本人一直认为是后台的问题!!!!)可以留言 mua~
在这里插入图片描述
pageParam对象转换成字符串就出现下面报错信息 不转换的话数据啥都ok在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值