element-ui的form表单里面写树形组件

这篇博客展示了如何在Vue项目中,利用El-Input和El-Popover组件结合,实现点击输入框弹出树形组件选择功能。通过绑定数据和事件处理,实现在选择树形节点后自动填充输入框并关闭弹框。核心代码包括El-Tree的配置和方法如getPartyList、deptListTreeCurrentChangeHandle等。
摘要由CSDN通过智能技术生成

在这里插入图片描述
功能就是form表单,点击el-input输入框,弹出属性组件,点击选择一个树形组件

首先树形组件需要写在弹出框里

代码如下:

<el-form-item>
       <el-popover
         :disabled='false'  
         v-model="deptListVisible"
         placement="bottom-start"      
         ref="deptListPopover"
         trigger="click"         
         style="min-width: 100%"
       >
           <el-tree
             :data="partyList"
             :default-expand-all="true"    
             show-checkbox
             :check-on-click-node="true"
             :props="{ label: 'name', children: 'children' }"
             node-key="id"
             ref="deptListTree"
             :highlight-current="true"
             :expand-on-click-node="false"
             accordion
             @check="deptListTreeCurrentChangeHandle">
           </el-tree>
       </el-popover>
       <el-input
         v-model="form.deptName"
         placeholder="所属组织" 
       
         ref="deptInput"
         @focus="showPopover"
       >
       </el-input>
</el-form-item>

data里面需要声名的变量:

	form: {
        deptId: "",
        deptName: "", //所属组织
      },
      // 树形结构弹框显隐
      deptListVisible: false,

方法

  created() {
        this.getPartyList()
       
      },
    methods: {
        // 获取数据
        getPartyList() {
            return this.$http.get(`/sys/dept/list`).then(({ data: res }) => {
                if (res.code !== 0) {
                    return this.$message.error(res.msg)
                }
                
                this.partyList = this.addAttr(res.data)
                //默认折叠左侧树三级菜单
                this.partyList.forEach(m => {
                    this.idArr.push(m.id)
                })
            }).catch(() => { })
        },
        addAttr(data) {
            for (var j = 0; j < data.length; j++) {
                if (data[j].type == 0) {
                }
                if (data[j].type == 1) {
                    data[j].expanded = true
                }
            }
          
            return data
        },
        // 点击选择一个节点
	     deptListTreeCurrentChangeHandle(data) {
	      this.$refs.deptListTree.setCheckedNodes([]);
	      this.$refs.deptListTree.setCheckedNodes([data]);
	
	      this.form.deptId = data.id;
	      this.form.deptName = data.name;
	      this.deptListVisible = false; //气泡弹框隐藏
	    },
	    // 点击输入框, 显示弹框
	    showPopover() {
	      this.deptListVisible = true;
	    },
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值