element table选父带子,选子带父
Posted 包子源
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了element table选父带子,选子带父相关的知识,希望对你有一定的参考价值。
<template>
<div class="bodybox">
<el-table
class="treetable"
ref="fixtable"
border
:data="tableData"
row-key="id"
default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
highlight-current-row
@select="checkSelect"
height="100%"
>
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column
show-overflow-tooltip
prop="name"
label="名称"
></el-table-column>
<el-table-column
show-overflow-tooltip
prop="id"
label="编码"
></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
name: "Manage",
components: {},
data() {
return {
deleteArr: [],
tableData: [
{
id: "11",
name: "北京市",
children: [
{
id: "1101",
name: "市辖区",
pid: "11",
children: [
{ id: "110101", name: "东城区", pid: "1101", children: [] },
{ id: "110102", name: "西城区", pid: "1101", children: [] },
],
},
],
},
{
id: "12",
name: "天津市",
children: [
{
id: "1201",
name: "市辖区",
pid: "12",
children: [
{ id: "120101", name: "和平区", pid: "1201", children: [] },
{ id: "120102", name: "河东区", pid: "1201", children: [] },
],
},
],
},
],
};
},
methods: {
// 多选
checkSelect(data, row) {
row.isPush = row.isPush ? 0 : 1;
if (row.children) {
this.checkFun(row.children, row.isPush);
}
if (row.isPush) {
this.CheckParentFun(this.tableData, row.pid);
} else {
this.clearParentFun(this.tableData, row.pid);
}
this.fileTreeArr = [];
this.getId(this.tableData);
},
// 子节点全部取消父节点清空
clearParentFun(table, pid) {
table.forEach((element) => {
if (pid == element.id) {
let issel = false;
element.children.forEach((elementb) => {
if (elementb.isPush == true) {
issel = true;
}
});
element.isPush = issel ? 1 : 0;
if (!issel) {
this.$refs.fixtable.toggleRowSelection(element, false);
}
if (element.pid) {
this.clearParentFun(this.tableData, element.pid);
}
} else {
if (element.children) {
this.clearParentFun(element.children, pid);
}
}
});
},
// 递归选中
checkFun(data, status) {
data.forEach((element) => {
element.isPush = status;
this.$refs.fixtable.toggleRowSelection(
element,
element.isPush ? true : false
);
if (element.children) {
this.checkFun(element.children, element.isPush);
}
});
},
// 父节点选中
CheckParentFun(table, pid) {
table.forEach((element) => {
if (pid == element.id) {
element.isPush = 1;
this.$refs.fixtable.toggleRowSelection(element, true);
if (element.pid) {
this.CheckParentFun(this.tableData, element.pid);
}
} else {
if (element.children) {
this.CheckParentFun(element.children, pid);
}
}
});
},
// 获取选中ID
getId(data) {
data.forEach((element) => {
if (element.isPush) {
this.fileTreeArr.push(element);
}
if (element.children) {
this.getId(element.children);
}
});
},
},
};
</script>
<style lang="less">
.treetable {
thead {
.el-checkbox__inner {
display: none;
}
}
}
</style>
效果
以上是关于element table选父带子,选子带父的主要内容,如果未能解决你的问题,请参考以下文章
element树状表格checkbox选父带子,取消子取消父
element树状表格checkbox选父带子,取消子取消父
element树状表格checkbox选父带子,取消子取消父