因为业务需要,用element-ui的table做树形构造,并且还须要有多选
好了 上代码

次要问题是在抉择的时候须要本人创立一个数组贮存已选

<template>  <div class="content">    {{ selectedList }}    <hr />    {{ selectedList.length }}    <hr />    {{ selectedList.map((ele) => ele.name) }}    <div class="is-distribute">      <el-table        ref="jojoTable"        :data="tableData"        border        tooltip-effect="dark"        :key="1"        row-key="key"        @select-all="handleAllSelection"        @select="(selection, row) => handleSelectionChange(selection, row)"        :tree-props="{ children: 'children' }"      >        <!-- :selectable="(row) => getDisable(row, 'unpub')" -->        <el-table-column          align="center"          type="selection"          width="55"        ></el-table-column>        <el-table-column          align="center"          prop="version"          width="155"          label="篇名"        ></el-table-column>        <el-table-column          align="center"          prop="name"          width="130"          label="人物名"        ></el-table-column>        <el-table-column          align="center"          prop="skill"          width="130"          label="技能/替身"        ></el-table-column>      </el-table>    </div>  </div></template>
<script>export default {  name: "TaskManage",  data() {    return {      selectedList: [],      tableData: [        {          version: "幻影之血",          isChild: false,          isSel: false,          key: 1,          children: [            {              version: "幻影之血",              name: "齐贝林",              skill: "欧巴多啦A梦",              key: 2,              isChild: true,              isSel: false,            },            {              version: "幻影之血",              name: "乔纳森·乔斯达",              skill: "欧巴多啦A梦",              key: 3,              isChild: true,              isSel: false,            },            {              version: "幻影之血",              name: "屌·布兰度",              skill: "jojo 我不做人啦",              key: 4,              isChild: true,              isSel: false,            },          ],        },        {          version: "战斗潮流",          isChild: false,          isSel: false,          key: 5,          children: [            {              version: "战斗潮流",              name: "西撒",              skill: "泡沫阵",              key: 6,              isChild: true,              isSel: false,            },            {              version: "战斗潮流",              name: "乔瑟夫·乔斯达",              skill: "欧巴哆啦A梦",              key: 7,              isChild: true,              isSel: false,            },            {              version: "战斗潮流",              name: "丽莎丽莎",              skill: "围巾",              key: 8,              isChild: true,              isSel: false,            },            {              version: "战斗潮流",              name: "瓦乌姆",              skill: "浑楔飒",              key: 9,              isChild: true,              isSel: false,            },          ],        },        {          version: "星辰斗士",          isChild: false,          isSel: false,          key: 10,          children: [            {              version: "星辰斗士",              name: "空调·承太郎",              skill: "欧拉欧拉拳",              key: 11,              isChild: true,              isSel: false,            },            {              version: "星辰斗士",              name: "卡Q因",              skill: "绿宝石水花",              key: 12,              isChild: true,              isSel: false,            },            {              version: "星辰斗士",              name: "二乔",              skill: "你给路达哟",              key: 13,              isChild: true,              isSel: false,            },            {              version: "星辰斗士",              name: "阿布嘟嘟",              skill: "红色魔术师",              key: 14,              isChild: true,              isSel: false,            },            {              version: "星辰斗士",              name: "波鲁那雷夫",              skill: "银色战车",              key: 15,              isChild: true,              isSel: false,            },            {              version: "星辰斗士",              name: "伊奇",              skill: "愚者",              key: 16,              isChild: true,              isSel: false,            },          ],        },      ],    };  },  methods: {    handleAllSelection(a, b, c) {      console.log(a, b, c);    },    handleSelectionChange(val, row) {      let selectedList = this.selectedList,        tableData = this.tableData;      // 如果点击的子节点      if (row.isChild) {        if (row.isSel) {          // selectedList.findIndex(ele => ele.key === row.key)          selectedList.remove(row);        } else {          selectedList.push(row);        }        // 判断多少条是被选中的        let cLength = selectedList.filter((ele) => ele.key == row.key).length;        // 查找以后子节点的父节点        let pNode = tableData.find((ele) => ele.version == row.version);        console.log(pNode);        // 如果长度雷同那就打钩,不同则勾销        this.$refs.jojoTable.toggleRowSelection(          pNode,          cLength === pNode.children.length        );        pNode.isSel = cLength === pNode.children.length;      } else {        // 点击父节点        //  数据操作  如果是已被勾选那么删除此列所有数据        if (row.isSel) {          let delList = selectedList.filter((ele) => ele.key === row.key);          for (const item of delList) {            item.isSel = false;            selectedList.remove(item);          }          // console.log("remove");        } else {          // console.log("push");          // 否则是新增          for (const item of row.children) {            if (selectedList.indexOf(item) == -1) {              item.isSel = true;              selectedList.push(item);            }          }        }        row.children.forEach((ele2) => {          this.$refs.jojoTable.toggleRowSelection(ele2, !row.isSel);        });      }      row.isSel = !row.isSel;    },  },};</script>
<style lang='scss' >.has-gutter .el-table-column--selection div {  display: none;}</style>