el树状表格分页后序号

302 阅读2分钟

续接上篇,树状结构表格的序号无法显示正确,下午调接口,真是数据渲染到页面时,才发现分页后,序号没有接着上一页,本来第二页第一行应该是11开头,折叠数据应该是11.1,上一篇的方法果然没有考虑分页后的序号, 自己又在原有基础上修改了一下,完美符合自己页面的需求。

//主要加序号的方法 
setTableIndex(arr, index) {
    arr.forEach((item, key) => { 
        item.index = key + 1; 
        if (index) { 
            item.index = index + "-" + (key + 1); 
        } 
        if (item.children) {
            this.setTableIndex(item.children, item.index); 
        } 
    }); 
}

分页组件data数据

pageData: {
    currentPage: 1, //当前页码
    pageSize: 10, //每页的数据条数
    length: 5 //总条数
},
修改后的方法:
setTableIndex(arr, page, index) {
    arr.forEach((ele, key) => {
        ele.index = key + 1 + page;
        if (index) {
            ele.index = index + "." + (key + 1);
        }
        if (ele.children) {
            this.setTableIndex(
                ele.children,
                (this.pageData.currentPage - 1) *
                    this.pageData.pageSize,
                ele.index
            );
        }
    });
}
  • arr是表格数据,

  • page是页数(第一页是0开始,第二页就是10开始,第三页就是20开始,(正好就是页码 - 1) * 每页显示数量),

  • index是用来传递某一行的序号的(比如第一行是1,那第一行的子数据就是1开头拼接的。还可以判断是不是子数据下的序号,如果有值就是子数据序号,没值就是最外层数据)

新加了个page参数,用来接收分页组件的变化

//获取表格数据的请求 
getTable(){ 
    //传参方法 const params = { } 
    apis.get("",params).thne(data =>{ 
        this.tableData = data.data.data 
        //先判断表格数据是否为空 
        if(this.tableData.length > 0){
            this.setTableIndex(this.tableData ,(this.pageData.currentPage - 1) * this.pageData.pageSize) 
        }
    }) 
},

image.png 目前表格存在问题还是不知道怎么把折叠符号单独最前面放一列,

折叠符号单独放一类已解决,只需要在表格行最前面加一个 <el-table-column ></el-table-column>标签即可,就可以自动把折叠箭头单独放一列,具体什么原理不懂,现在还看不懂源码。。。

上一篇的第二级箭头不显示是因为我把列宽设置的太短。被压住了,仔细看浏览器中的渲染出的dom才发现的