el-cascader后台给一组id回显可选择的选项列表

news2025/1/17 15:21:59

  

 根据后台给一组id回显可选择的选项列表

  

<template>
  <div>
    <el-cascader
      :key="keyValue"
      ref="cascader"
      v-model="pids"
      :props="{ label: 'name', value: 'id' }"
      :options="options"
      clearable
      filterable
      @change="handleChange"
    />
    <button @click="clickHandle">回显[3,4,10]</button>
  </div>
</template>

<script>
export default {
  name: 'QualityClassify',
  data() {
    return {
      keyValue: 0,
      pids: [],
      options: [],
      defaultOptions: [
        {
          id: 1,
          name: '总部id1',
          children: [
            {
              id: 2,
              name: '工程技术部id2',
              parent_id: 1,
              children: [
                { id: 3, name: '工程员工id3', parent_id: 2 },
                { id: 4, name: '工程员工id4', parent_id: 2 },
                { id: 5, name: '工程员工id45', parent_id: 2 }
              ]
            },
            {
              id: 7,
              name: '人力资源id7',
              parent_id: 1,
              children: [
                { id: 8, name: '人力员工id8', parent_id: 7 },
                { id: 9, name: '人力员工id9', parent_id: 7 },
                { id: 10, name: '人力员工id10', parent_id: 7 }
              ]
            }
          ]
        }
      ],
      defaultArr: [[1, 2, 3], [1, 2, 4], [1, 7, 10]]
    }
  },
  watch: {
    options() {
      this.keyValue++
    }
  },
  methods: {
    handleChange(value) {
      console.log('value', value)
    },
    // 删除children为空
    deleteChildren(arr) {
      return arr.map(item => {
        if (item.children && item.children.length > 0) {
          this.deleteChildren(item.children)
        } else {
          delete item.children
        }
        return item
      })
    },
    clickHandle() {
      const list = []
      this.findParentChild(this.defaultOptions, this.defaultArr, list)
      this.options = this.deleteChildren(list)
    },
    // 根据id数组查找对应的对象数组
    findParentChild(list, str, arr) {
      list.map(v => {
        str.map(s => {
          s.filter(x => {
            if (x === v.id) {
              if ((!v.parent_id || v.parent_id !== '0') && arr.length > 0) {
                this.findChild(v, arr, str)
              } else {
                const isHas = arr.findIndex(x => x.id === v.id)
                if (isHas === -1) {
                  arr.push({
                    ...v,
                    children: []
                  })
                }
              }
            } else {
              if (v.children && v.children.length) {
                this.findParentChild(v.children, str, arr)
              } else {
                return false
              }
            }
          })
        })
      })
    },
    // 查找最终列表父级的children,并往里塞对象
    findChild(obj, arr, str) {
      arr.map(v => {
        if (v.children && v.children.length > 0) {
          const isHas = v.children.findIndex(x => x.id === obj.id)
          if (isHas === -1 && obj.parent_id === v.id) {
            v.children.push({
              ...obj,
              children: []
            })
          } else if (obj.children) this.findParentChild(obj.children, str, v.children)
        } else {
          if (obj.parent_id === v.id) {
            v.children.push({
              ...obj,
              children: []
            })
            if (obj.children) this.findParentChild(obj.children, str, v.children)
          }
        }
      })
    }
  }
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven配置阿里云仓库https

2022年开始&#xff0c;阿里云对以前的maven仓库地址进行升级&#xff0c;由原来的http换成https 原来链接&#xff1a; http://maven.aliyun.com/repository/public 现在链接&#xff1a; https://maven.aliyun.com/repository/public maven settings.xml配置 maven settin…

QString的解析与常用功能

QString存储一个16位QChar字符串&#xff0c;其中每个QChar对应一个UTF-16代码单元。(编码值大于65535的Unicode字符使用代理对存储&#xff0c;即两个连续的qchar。) Unicode是一个国际标准&#xff0c;支持目前使用的大多数书写系统。它是US-ASCII (ANSI X3.4-1986)和Latin-1…

盐湖卤水中分离硼的工艺有哪些

锂因其优良的物理化学性质&#xff0c;被认为是“推动世界进步的能源金属”&#xff0c;随着新能源、冶金等行业的快速发展&#xff0c;人们对锂的需求量逐年攀升。然而地壳中锂的含量仅为0.0065%左右&#xff0c;约80%的锂资源蕴含于盐湖卤水中。 盐湖卤水成分复杂&#xff0c…

Redis入门到入土(day03)

Redis的持久化 Redis 是内存数据库&#xff0c;如果不将内存中的数据库状态保存到磁盘&#xff0c;那么一旦服务器进程退出&#xff0c;服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能&#xff01; RDB&#xff08;Redis DataBase&#xff09; 什么是RDB 在指…

HugNLP发布,集成多种NLP任务,可训ChatGPT类模型

HugNLP发布&#xff0c;集成多种NLP任务&#xff0c;可训ChatGPT类模型 作者&#xff1a;王嘉宁 HugNLP——全面统一的NLP框架开源了&#xff01; 近日&#xff0c;华师大HugAILab团队研发了HugNLP框架&#xff0c;这是一个面向研究者和开发者的全面统一的NLP训练框架&#x…

java版企业电子招投标采购系统源代码之系统的首页设计

​​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为…

来来来,一起了解下MTK(联发科)

​ https://www.mediatek.com/ ​ 进入MTK官网&#xff0c;可以看到其产品分为七大方向&#xff1a;智能手机、笔记本电脑与平板电脑、家庭娱乐、车用市场、连接与网络技术、定制芯片服务、物联网。这里主要介绍智能手机、连接与网络技术、物联网三大版块。 一、智能手机 智…

使用护眼灯台灯哪个牌子好用来保护眼睛?真正做到护眼台灯品牌

现在的家长很多人觉得家里已经有灯光了&#xff0c;没必要在买台灯。但事实上台灯有很多优点&#xff0c;尤其对于小孩子来说&#xff1a;1.提供更好的光线:台灯能够提供更加明亮的光线&#xff0c;有助于保护眼睛健康。2.提高工作效率:台灯光线舒适可提高工作效率或学习效率。…

STM32G0开发板下载代码问题

任务&#xff1a; 通过CueMX生成代码&#xff0c;然后烧写到STM32G0开发板上。 遇到的问题&#xff1a; 1. CubeMX生成的代码能用Keil编译&#xff0c;但是下载不到flash中 2. CubeMX再次生成代码后&#xff0c;SWD无法识别芯片。 逐个击破&#xff1a; 1. CubeMX生成的代码…

Axure教程:动态分组柱状图(中继器)

本文将教大家如何用AXURE中的中继器做组分组柱状图。 如图&#xff1a; 预览地址&#xff1a;https://vvpq8c.axshare.com 原型下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87761575?spm1001.2014.3001.5503 一、功能介绍 1、在中继器或表格中填…

php导出excel多个sheet

我引用的拓展是&#xff1a; "phpoffice/phpspreadsheet": "^1.4", 我的$accept数据是这样的 "data": { "examStu": [ { "ctime": "2023-04-27 16:28:16", "className": "大猛1", "n…

JavaScript—数据类型转换

目录 1、起 源 理 念 2、特 点 框 架 书 写 位 置 注 释 浏览器调试js代码 3、变量 ① 全局变量 ② 局部变量 ③ 常量 4、数据类型 严格检查数据类型-use strict ① 数 组 ② 字符串 6、类型转换 ① 字符串转数字 ② 字符串转bool值 ③ 能力判断 7、编码方…

自动控制原理笔记-频率响应法-稳定裕度

目录 一、增益裕度h&#xff08;幅值裕度, gain margin&#xff09; 二、相角裕度g (phase margin) 三、根据Bode图确定稳定裕度 相角裕度 一、增益裕度h&#xff08;幅值裕度, gain margin&#xff09; 开环幅相特性曲线&#xff08;奈氏曲线&#xff09;G(jw)与负实轴…

教你一招在VMware的NAT模式下,两台电脑如何互相访问对方的虚拟机

目录 一. 准备工作二. 开始2.1 设置NAT模式2.2 进行NAT模式设置2.3 XShell访问对方虚拟机 一. 准备工作 需要两台电脑&#xff08;我准备了两台win10&#xff09; VMware虚拟机&#xff1a;【官网下载】两台win10电脑上都安装好centos 7系统&#xff08;我这里是centos 7版本…

3.Java线程

Java线程 3.1 创建和运行线程 方法一&#xff0c;直接使用Thread import lombok.extern.slf4j.Slf4j;/*** 使用匿名内部类创建线程* author xc* date 2023/4/30 16:19*/ Slf4j public class Test1 {public static void main(String[] args) {Thread thread new Thread(){Ov…

OpenCV-Python图像几何变换

概念&#xff1a;几何变换是指将一幅图像映射到另外一幅图像内的操作。OpenCV提供了多个与映射有关的函数&#xff0c;这些函数使用起来方便灵活&#xff0c;能够高效地完成图像的映射。 缩放 cv2.resize()函数用于缩放图像 det cv2.resize(src, dsize[,dst[,fx[,fy[,interp…

入门级BP神经网络实现回归预测的原理与python代码

文章目录 一、BP神经网络是什么&#xff1f;二、BP神经网络的原理&#xff1f;三、BP神经网络预测过程如下1.初始化参数&#xff1a;2.前向传播&#xff1a;3.反向传播&#xff1a;4.更新参数&#xff1a;5.重复上述过程&#xff0c;直到满足收敛条件或达到最大迭代轮次。 四、…

【Liunx】进程地址空间

文章目录 &#x1f4d6; 前言1. 环境变量收尾1.1 认识bash进程&#xff1a;1.2 环境变量具有全局属性&#xff1a;1.3 内建命令&#xff1a; 2. 进程地址空间2.1 Liunx — 地址空间验证&#xff1a;2.2 感知地址空间的存在&#xff1a;2.3 认识地址空间&#xff1a;2.3 - 1&…

C++右值引用(左值表达式、右值表达式)(移动语义、完美转发(右值引用+std::forward))(有问题悬而未决)

文章目录 什么是右值&#xff1f;是什么是右值引用&#xff1f;什么是移动语义&#xff1f;什么是完美转发&#xff1f;&#xff08;右值引用std::forward&#xff09; 什么是右值&#xff1f; 在 C 中&#xff0c;表达式可以分为左值表达式和右值表达式。左值表达式指的是可以…

《常规脉搏传输时间作为人体血压变化标志》阅读笔记

目录 一、论文摘要 二、论文十问 Q1: 论文试图解决什么问题&#xff1f; Q2: 这是否是一个新的问题&#xff1f; Q3: 这篇文章要验证一个什么科学假设&#xff1f; Q4: 有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课题在领域内值得关注的研究员&#xff1f; …