续接上篇,树状结构表格的序号无法显示正确,下午调接口,真是数据渲染到页面时,才发现分页后,序号没有接着上一页,本来第二页第一行应该是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)
}
})
},
目前表格存在问题还是不知道怎么把折叠符号单独最前面放一列,
折叠符号单独放一类已解决,只需要在表格行最前面加一个 <el-table-column ></el-table-column>标签即可,就可以自动把折叠箭头单独放一列,具体什么原理不懂,现在还看不懂源码。。。
上一篇的第二级箭头不显示是因为我把列宽设置的太短。被压住了,仔细看浏览器中的渲染出的dom才发现的