vue+element动态接参自动生成组织机构树

新出炉的馒头出来喽!!!
vue + element UI开发 测试有效
借用饿了么中的树形控件来实现组织机构树,直接展示效果:
在这里插入图片描述
过滤效果,只展示匹配(模糊查询)到的名字及其上级,其余隐藏(不显示):

在这里插入图片描述

代码如下,拿去不谢:

<template>
  <div>
    <el-input placeholder="输入关键字进行过滤" v-model="filterText"> </el-input>
    <el-tree class="filter-tree" :data="dataOrgization" :props="defaultProps" default-expand-all  auto-expand-parent :filter-node-method="filterNode" ref="tree"></el-tree>
  </div>
</template>

<script>
  export default {
  //监听事件
    watch: {
      filterText(val) {
        this.$refs.tree.filter(val);
      }
    },
    //
    created(){
      this.getTree()
    },
    methods: {
    //过滤函数 对应  :filter-node-method="filterNode"
      filterNode(value, data) {
        if (!value) return true;
        return data.label.indexOf(value) !== -1;
      },

      //获取、遍历组织机构树数据
      async getTree(){
        const params = {
          headers:{ 'Authorization': sessionStorage.token}
        }
        // console.log(sessionStorage.token)   //本地获取token,并打印token
        this.$http.get('api接口',params).then(res => {
          //状态码判断
          if(res.data.code === 200){
            this.$message.success(res.data.msg)
            this.dataOrgization = res.data.resource  //将接口传的数据赋值给data[]
          }
        }).catch(err => {
          this.$message.error(err)
        })
      }
    },

    data() {
      return {
        filterText: '',
        dataOrgization:[],    //不可少
         
        defaultProps: {     //必不可少
          children: 'children',
          label: 'label'
        }
      };
    }
  };
</script>

注意:后端返回的数据是json数组的,只是案例样式,原数据已丢失

{
    "code": 200,
    "msg": "查询成功",
    "resource": [{
        "id": 158,
        "label": "XXX集团",
        "org_type": 1,
        "org_level": 1,
        "org_info": null,
        "children": [
            {
                "id": 159,
                "label": "XXXD局",
                "org_type": 2,
                "org_level": 2,
                "org_info": null,
                "children": [
                    {
                        "id": 163,
                        "label": "XXXXDC总部",
                        "org_type": 4,
                        "org_level": 3,
                        "org_info": null,
                        "children": []
                    },
                    {
                        "id": 164,
                        "label": "XXXXXDV项目",
                        "org_type": 5,
                        "org_level": 3,
                        "org_info": null,
                        "children": []
                    },
                    {
                        "id": 165,
                        "label": "XXXXX公司",
                        "org_type": 3,
                        "org_level": 3,
                        "org_info": null,
                        "children": [
                            {
                                "id": 166,
                                "label": "XXXX公司总部",
                                "org_type": 4,
                                "org_level": 4,
                                "org_info": null,
                                "children": [
                                    {
                                        "id": 168,
                                        "label": "行政企划部",
                                        "org_type": 6,
                                        "org_level": 5,
                                        "org_info": null,
                                        "children": []
                                    },
                                    {
                                        "id": 169,
                                        "label": "设备管理部",
                                        "org_type": 6,
                                        "org_level": 5,
                                        "org_info": null,
                                        "children": []
                                    },
                                    {
                                        "id": 170,
                                        "label": "财务管理部",
                                        "org_type": 6,
                                        "org_level": 5,
                                        "org_info": null,
                                        "children": []
                                    }
                                ]
                            },
                            {
                                "id": 167,
                                "label": "XXXX公司项目",
                                "org_type": 5,
                                "org_level": 4,
                                "org_info": null,
                                "children": [
                                    {
                                        "id": 171,
                                        "label": "项目实施部",
                                        "org_type": 6,
                                        "org_level": 5,
                                        "org_info": null,
                                        "children": []
                                    },
                                    {
                                        "id": 172,
                                        "label": "工程管理部",
                                        "org_type": 6,
                                        "org_level": 5,
                                        "org_info": null,
                                        "children": []
                                    },
                                    {
                                        "id": 173,
                                        "label": "会计部",
                                        "org_type": 6,
                                        "org_level": 5,
                                        "org_info": null,
                                        "children": []
                                    }
                                ]
                            }
                        ]
                    }
                ]
            },
            {
                "id": 160,
                "label": "XXXX集团总部",
                "org_type": 4,
                "org_level": 2,
                "org_info": null,
                "children": [
                    {
                        "id": 175,
                        "label": "设计规划部",
                        "org_type": 6,
                        "org_level": 3,
                        "org_info": null,
                        "children": []
                    }
                ]
            },
            {
                "id": 161,
                "label": "XXXXX项目",
                "org_type": 5,
                "org_level": 2,
                "org_info": null,
                "children": [
                    {
                        "id": 162,
                        "label": "财务部",
                        "org_type": 6,
                        "org_level": 3,
                        "org_info": null,
                        "children": []
                    }
                ]
            }
        ]
    }]
}

馒头甜不甜?

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Element动态表单是一种可以动态设置表单项并渲染出来的表单组件。通常情况下,我们需要使用Vue Element的el-form和el-form-item构建表单,但是使用动态表单可以快速简便地创建表单。它不仅减少了代码的重复,还可以根据不同的需求灵活地增加和删除表单项。 首先,我们需要定义一个数组来存储表单项。数组中的每一个项都是一个对象,对象包含了表单项的各种属性,如类型,名称,placeholder等。在组件中,我们需要对这个数组进行遍历,并根据每一个对象的属性来动态地渲染出表单项。 其次,我们需要使用Vue Element的组件绑定来动态地设置表单项的属性,比如v-model可以用来绑定表单项的值,v-if可以用来控制表单项的显隐性,v-for可以用来循环遍历表单项。 在表单项的定义过程中,我们可以使用计算属性来对表单项的属性进行动态计算,从而实现表单项的复杂计算和逻辑处理。 最后,我们需要添加一个动态增加表单项的方法或组件。通常情况下,我们可以添加一个按钮或者下拉选择框,在用户进行相应的操作后,根据选择或者用户输入的数据来动态地增加表单项。 总的来说,Vue Element动态表单可以根据不同的需求快速地创建表单,并且可以灵活地增加和删除表单项。使用动态表单可以大大减少代码的重复,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值