首页 > 其他分享 >el-tree 父子节点勾选框:勾选时关联但回显时不关联

el-tree 父子节点勾选框:勾选时关联但回显时不关联

时间:2023-08-08 14:23:30浏览次数:38  
标签:el 勾选时 关联 父子 beforeIds 节点 before

需求

之前的需求是 el-tree 父子节点勾选框半关联,但是现在需求改了,需要:

  1. 勾选时父子节点关联;
  2. 数据回显时,父子节点不关联。

即:
image

分析

传参控制父子节点是否关联 check-strictly

父子节点是否关联是由 check-strictly 这个属性决定的:为 false 表示关联,为 true 表示不关联。

image

回显时和勾选时,这个属性会变,因此可通过传参方式控制。

注意:业务要求勾选时把半勾选节点也要一起提交

勾选时设定 check-strictly 为 false,通过 getHalfCheckedKeys() 获取半勾选节点。

image

image

代码

image

image

打开对话框时加载数据
    // 加载类下拉框:挂载类的来源
    async loadClsOps() {
      this.clsOpsLoading = true;
      const data = await treeClsOps({
        code: this.code,
      });
      if (data.code === 200) {
        this.treeClsOps = data.data.rows;
        // 默认勾选节点
        this.$refs.menuTree.setCheckedKeys(this.defaultChecked);
        this.clsOpsLoading = false;
      }
    },
点击保存按钮
    submit() {
      // 调用子组件方法,获取选中的节点和半选中的节点id
      const checkedIds = this.$refs.menuTree.getCheckedKeys();
      const halfCheckedIds = this.$refs.menuTree.getHalfCheckedKeys();
      // 比对 默认勾选节点 和 当前选中节点(此处要包含半选中节点)
      this.handleAddOrDelIds(this.defaultChecked, [
        ...checkedIds,
        ...halfCheckedIds,
      ]);
      const obj = {
        mountIds: this.mountIds,
        cancelIds: this.cancelIds,
      };
      this.$emit("submit-form", obj);
    },
    /* 处理新增和取消的 ids */
    handleAddOrDelIds(beforeIds, afterIds) {
      if (!beforeIds.length) {
        // before 为空数组:必定是挂载
        this.mountIds = afterIds;
      } else {
        /* before 不为空,判断: */
        beforeIds.forEach((ele) => {
          if (!afterIds.includes(ele)) {
            // before 的项在 after 中找不到:要取消挂载
            this.cancelIds.push(ele);
          }
        });
        afterIds.forEach((item) => {
          if (!beforeIds.includes(item)) {
            // after 的项在 before 中找不到:要挂载
            this.mountIds.push(item);
          }
        });
      }
    },

总结

el-tree官方文档 要多多熟悉。

标签:el,勾选时,关联,父子,beforeIds,节点,before
From: https://www.cnblogs.com/shayloyuki/p/17614042.html

相关文章

  • DataFrame 存为带格式的excel文件
    importpandasaspddata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'Salary':[50000,60000,45000],'Location':['NY','CA',�......
  • 在langchain中使用自定义example selector
    简介在之前的文章中,我们提到了可以在跟大模型交互的时候,给大模型提供一些具体的例子内容,方便大模型从这些内容中获取想要的答案。这种方便的机制在langchain中叫做FewShotPromptTemplate。如果例子内容少的话,其实无所谓,我们可以把所有的例子都发送给大语言模型进行处理。但是如......
  • 在langchain中使用自定义example selector
    简介在之前的文章中,我们提到了可以在跟大模型交互的时候,给大模型提供一些具体的例子内容,方便大模型从这些内容中获取想要的答案。这种方便的机制在langchain中叫做FewShotPromptTemplate。如果例子内容少的话,其实无所谓,我们可以把所有的例子都发送给大语言模型进行处理。但是如......
  • 【译】摇摆你的调试游戏:你需要知道的 Parallel Stack Window 小知识!
    在VisualStudio202217.6和17.7中,我们在 ParallelStack窗口中添加了大量新功能,可以将您的多线程调试提升到一个新的水平。但是ParallelStack窗口能为您做些什么呢?答案很简单——它提供了关于代码如何在多线程、并行或异步环境中运行的有价值的观察。随着多线程......
  • 【专栏阅读】World models
    来源:如何理解Tesla和Wayve在CVPR2023workshop上提到的worldmodel?-EatElephant的回答-知乎https://www.zhihu.com/question/610849510/answer/3108529249 “CVPR2023自动驾驶workshop上Tesla和Wayve都提到了他们在利用生成大模型方面的最新探索方向,即大模型来生成自动......
  • windows10使用Powershell脚本自动初始化磁盘
    如下为脚本内容:1首先使用get-disk命令检测未被初始化的磁盘,磁盘为被初始化属性会为raw,使用rawdisk变量获取未被初始化的磁盘。2判断rawdisk是否有值,如果有,则存在未被初始化磁盘,条件为真,进行下一步。如果空值,则说明系统没有未被初始化的磁盘,输出:没有找到未格式化的磁盘或RAW参数......
  • kettle案例六数据表关联--排序记录-记录集连接-过滤记录
    如果我们清洗的数据是多个维度的,那么很有可能对数据进行关联得到一张最终表进行分析。比如回答集合的数据里有如下字段idoptionIduser包含了谁回答了哪个问题,选项是什么。选项集合的数据里有如下字段idquestionoption我们最终希望得到的数据集合是idquestionop......
  • 微信公众号HTML5如何预览EXCEL、word、ppt、pdf等文件
    1、pfile文件预览   很简单一句话window.open('http://www.pfile.com.cn/api/profile/onlinePreview?url='+encodeURIComponent(“文档地址”));使用了一段时间,简单完美,强烈推荐!!! 2、 officeonlineleturl="https://view.officeapps.live.com/op/view.aspx?src="+......
  • c#操作excel方式一:stream简单读写excel
    需要命名空间usingSystem.IO;界面:记得添加openFileDialog注意名字,改成跟代码里的对应写文件按钮代码:privatevoidbutton2_Click(objectsender,EventArgse){inti=0;StreamWriteraFile=null;aFile=File.CreateTex......
  • select 选取数据0和1,布尔型的显示为是或否
    sql语句中,有一个字段是布尔型,但是我想通过select查出来,显示的不是0或者1,而显示是或者否selectdecode(字段,1,'是',0,'否')asvaluefromtable或select(case字段when1then'是'when0then'否'end)asvaluefromtable......