zoukankan      html  css  js  c++  java
  • el-tree相关问题

    <template>
      <div id="app" style="padding:50px">
        <el-button type="primary" size="mini" @click="showAll">全部展开</el-button>
        <el-button type="primary" size="mini" @click="notShowAll">全部收缩</el-button>
        <div style="300px;height:500px;border:1px solid red; overflow: scroll;">
          <el-tree
            node-key="id"
            :data="treeData"
            :props="defaultProps"
            :default-expand-all="defaultExpand"
            :expand-on-click-node="false"
            ref="tree"
          >
            <span class="custom-tree-node" slot-scope="{ node, data }">
              <span v-if="data.status==0">{{ node.label }}</span>
              <el-input size="mini" v-else v-model="rename"></el-input>
              <span>
                <el-button type="text" size="mini">添加</el-button>
                <el-button type="text" size="mini">删除</el-button>
                <el-button type="text" size="mini" @click="change(node,data)">修改</el-button>
              </span>
            </span>
          </el-tree>
        </div>
      </div>
    </template>
    
    <script>
    import Children from "./components/children";
    
    import { xxx } from "./mixins/mixins";
    export default {
      mixins: [xxx],
      data() {
        return {
          rename: "",
          currentID: "",
          defaultExpand: true, //默认展开全部
          defaultProps: {
            children: "mychildrnes",
            label: "name"
          },
          treeData: [
            {
              name: "四川省",
              number: 105,
              parentsId: "",
              id: "1",
              mychildrnes: [
                {
                  name: "成都市",
                  number: 98,
                  parentsId: "1",
                  id: "11",
                  mychildrnes: [
                    {
                      name: "双流区",
                      number: 55,
                      parentsId: "11",
                      id: "111",
                      mychildrnes: [
                        {
                          name: "双流区地名1",
                          number: 55,
                          parentsId: "111",
                          id: "1111",
                          mychildrnes: []
                        },
                        {
                          name: "双流区地名2",
                          number: 15,
                          parentsId: "111",
                          id: "1112",
                          mychildrnes: []
                        }
                      ]
                    },
                    {
                      name: "高新区",
                      number: 66,
                      parentsId: "11",
                      id: "112",
                      mychildrnes: [
                        {
                          name: "高新区地名1",
                          number: 55,
                          parentsId: "112",
                          id: "1121",
                          mychildrnes: []
                        },
                        {
                          name: "高新区地名2中和",
                          number: 15,
                          parentsId: "112",
                          id: "1122",
                          mychildrnes: []
                        }
                      ]
                    },
                    {
                      name: "天府新区",
                      number: 88,
                      parentsId: "11",
                      id: "113",
                      mychildrnes: []
                    }
                  ]
                },
                {
                  name: "绵阳市",
                  number: 48,
                  parentsId: "1",
                  id: "12",
                  mychildrnes: [
                    {
                      name: "梓潼县",
                      number: 96,
                      parentsId: "12",
                      id: "121",
                      mychildrnes: []
                    }
                  ]
                }
              ]
            },
            {
              name: "云南省",
              number: 89,
              parentsId: "",
              id: "2",
              mychildrnes: []
            }
          ]
        };
      },
    
      methods: {
        repeat(array) {
          array.forEach(item => {
            item.name = item.name + "[" + item.number + "]";
            item.status = 0;
            if (item.mychildrnes.length !== 0) {
              //调用自己
              return this.repeat(item.mychildrnes);
            }
          });
        },
        showAll() {
          this.defaultExpand = true; //展开所有节点
          for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
            this.$refs.tree.store._getAllNodes()[i].expanded = this.defaultExpand;
          }
        },
        notShowAll() {
          //必须唯一键值  node-key="id"必须要不然不行
    
          this.defaultExpand = false; //收缩所有节点
          for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
            this.$refs.tree.store._getAllNodes()[i].expanded = this.defaultExpand;
          }
        },
        change(node, data) {
          //修改无非就在展示框和输入框之间切换v-if 切换 v-show不行(获取焦点有问题)
    
          this.rename = data.name;
          this.currentID = data.id;
          let arryHH=[] //vue 数组改变 不刷新问题
          this.treeData.forEach(item=>{
              arryHH.push(item)
          })
          
          for (let i = 0; i < arryHH.length; i++) {
            if (arryHH[i].id == this.currentID) {
              arryHH[i].status = 1;
              return;
            } else if (arryHH[i].mychildrnes.length !== 0) {
              this.repeatTwo(arryHH[i].mychildrnes);
            }
          }
          this.treeData=[]
         arryHH.forEach(item=>{
              this.treeData.push(item)
          })
          
          console.log(this.treeData, "++");
        },
        repeatTwo(array) {
          for (let i = 0; i < array.length; i++) {
            if (array[i].id == this.currentID) {
              array[i].status = 1;
              return;
            } else if (array[i].mychildrnes.length !== 0) {
              return this.repeatTwo(array[i].mychildrnes);
            }
          }
        }
      },
      created() {
        this.treeData.forEach(item => {
          item.name = item.name + "[" + item.number + "]";
          item.status = 0; //手动添加键值0 展示1 输入框可修改
          if (item.mychildrnes.length !== 0) {
            //递归循环(因为层级不止3级很可能是N级)
            this.repeat(item.mychildrnes);
          }
        });
        console.log(this.treeData);
      }
    };
    </script>
    
    <style scope lang='scss'>
    // 超出范围滚动条
    .el-tree>.el-tree-node{
        min-100%;
        display: inline-block;
    }
    </style>
    

      

  • 相关阅读:
    JavaScript学习——使用JS实现首页轮播图效果
    JavaScript学习——使用JS完成注册页面表单校验
    JavaScript基础
    HTML&CSS——使用DIV和CSS完成网站首页重构
    HTML&CSS——网站注册页面
    java ------------ 集合(四) Collections类
    Java ---------- 集合(三) Map接口
    java ---------- 集合(二) Set 接口和Iterator 接口
    Java ---------- 集合
    idea -------- 常用快捷键
  • 原文地址:https://www.cnblogs.com/myfirstboke/p/14141362.html
Copyright © 2011-2022 走看看