关于VUE前端页面tree组件 ---多选框(回显、后台交互、数据显示)

本文介绍了在Vue项目中使用el-tree组件实现复选框功能时,如何处理回显和后台交互的问题。重点强调了数据库中父节点PID为0的设定对正确显示数据的重要性,并分享了开发过程中的经验与代码片段,旨在提高开发效率。
部署运行你感兴趣的模型镜像

关于el-tree 组件 复选框的值显示问题以及回显----后台交互

首先附上效果图:
效果图

<el-tree
        :data="dataForm.roleData"
        node-key=""   -- 父节点字段名
        :load=""    -- 子节点字段名
        show-checkbox
        default-expand-all  -- 默认展开所有节点
        @check-change="handleCheckChange"  -- 单选以及全选
        ref="tree"   
        :props="defaultProps">    -- 用来定义children 以及lobel的名称(父节点名Name)
</el-tree>

```javascript
 -- js代码块
//单选
handleCheckChange() {
  this.prdIdList = this.$refs.tree.getCheckedKeys() ;
},

//设置全选或反选
handleCheckAll() {
  let idList = [] ;
  for (var i=0;i<this.dataForm.roleData.length;i++) {
    idList.push(this.dataForm.roleData[i].Id) ;

  }
  defaultProps: {
  children: 'children',
  label: 'Name'  -- 子节点的字段名  (这个千万得写正确,不然页面就只有复选卡没有数值)
},
roleDate  字段名是 后管查询出来需要展现的树形结构(List<Map<String,Object>>)
上面的vue代码块,就是前端做需要的
List<Map<String,Object>> list =(sql查询语句)
JSONArray array = TreeUtil.listToTree(JSONArray.parseArray(JSON.toJSONString(list)),"Id","PId","children");
return array;

 //其中的Id Pid 指向的就是你的父节点,子节点


//下面是工具类 
package com.csii.mgmt.utils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class TreeUtil {

    /**
     * - listToTree -
     * <p>
     * 方法说明
     * <p>
     * - 将JSONArray数组转为树状结构
     * - @param arr 需要转化的数据
     * - @param id 数据唯一的标识键值
     * - @param pid 父id唯一标识键值
     * - @param child 子节点键值
     * - @return JSONArray
     */
    public static JSONArray listToTree(JSONArray arr, String id, String pid, String child) {
        JSONArray r = new JSONArray();
        JSONObject hash = new JSONObject();
        // 将数组转为Object的形式,key为数组中的id
        for (int i = 0; i < arr.size(); i++) {
            JSONObject json = (JSONObject) arr.get(i);
            hash.put(json.getString(id), json);
        }
        // 遍历结果集
        for (int j = 0; j < arr.size(); j++) {
            // 单条记录
            JSONObject aVal = (JSONObject) arr.get(j);
            // 在hash中取出key为单条记录中pid的值
            JSONObject hashVP = (JSONObject) hash.get(aVal.get(pid).toString());
            // 如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中
            if (hashVP != null) {
                // 检查是否有child属性
                if (hashVP.get(child) != null) {
                    JSONArray ch = (JSONArray) hashVP.get(child);
                    ch.add(aVal);
                    hashVP.put(child, ch);
                } else {
                    JSONArray ch = new JSONArray();
                    ch.add(aVal);
                    hashVP.put(child, ch);
                }
            } else {
                r.add(aVal);
            }
        }
        return r;
    }

}

这是sql需要查询得格式
select id,pid,name,pid||'|'||id as nodeKey from ( (select distinct(a.prdgrpid) as id ,'0' as pid,b.prdgrpname as name from bankpgp a left join productgroup b on a.prdgrpid=b.prdgrpid where a.prdgrpstate='0' ) union (select distinct(a.prdid) as id,a.prdgrpid as pid , b.prdname as name from bankpgp a left join product b on a.prdid=b.prdid where a.prdgrpstate='0' ) ) xxx
pid为0的是父节点,有值得为子节点。

**

2.1: 然后是一个复选框得回显:**

效果图

<el-tree
        :data="dataForm.roleData"
        node-key=""   --父节点ID
        show-checkbox
        default-expanded-keys="prdIdList"  -- 后管传过来回显的数据值
        :default-checked-keys="prdIdList" -- 后管传过来回显的数据值
        ref="tree"
        :props="defaultProps">
</el-tree>

created() {
    this.setDataInfo();
},   -- 页面刚进来就先加载这个方法函数

setDataInfo() {
    this.dataForm.roleId = this.$route.params.RoleId;
    this.dataForm.roleName = this.$route.params.RoleName;
    this.dataForm.roleState = this.$route.params.RoleState;
    this.prdIdList = this.$route.params.PrdId;
},
-- 这是接收后管的参数值,如果开发中遇到空,可以尝试这alert 或者concat 

defaultProps: {
    children: 'children',
    label: 'Name',
    disabled: this.disabledFn,
}

disabledFn(data, node) {
    if (!data.isAggregation) {
        return true;
    } else {
        return false;
    }
}   -- 针对详情功能开发

这大概就是针对tree开发复选卡+回显+后管接收参数、传参


需要注意得一点就是 :用我上传得转化树状得模板 数据库中对应得父节点PID必须为0


在开发过程中,一直是在网上寻求答案解决参考官方文档。所辛的是还是功夫不负有心人。然后把自己的前后代码模块附上,让你我他更少一点歪路。增加开发效率

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值