el-tree回显复选框时半选中和全选中的树

项目需求如下:当我点击“编辑”后,需要在tree树上全勾中和半勾中选项,由于后端接口返回的tree树是含了父级节点id的数组集合,所以我们回显时需要处理好这个全勾中和半勾中的问题。

在这里插入图片描述
主要思路如下,我们通过setData方法获取详情接口数据,然后调用defaultChecked方法回显,通过控制checkStrictly是否为true来确定父子是否关联,然后通过myTree.setChecked来设置选中的项,如下所示:

    setData(item) {getRoleDetail(item.id).then(res => {// console.log("角色详情", res);this.formData = res.datathis.formData.checked_menus = res.data.permissionsthis.defaultChecked(res.data.permissions)})},defaultChecked(myData) {// 默认选中this.searchConfig[2].checkStrictly = truelet myTreesetTimeout(() => {this.$nextTick(() => {myTree = this.$refs.searchForm.$refs.treeRef[0]setTimeout(() => {myData.forEach(item => {myTree.setChecked(item, true, false)})}, 100)this.searchConfig[2].defaultCheckedKeys = myDatathis.searchConfig[2].checkStrictly = false})}, 200)// this.$refs.searchForm.setKeyTree(myData);},

当前页面完整代码如下:

<template><div class="search-container"><search-formref="searchForm":showSearchButton="false":isShowResetButton="false":formData="formData":rules="rules":isInline="false":searchConfig="searchConfig"@checkTree="checkTree"/><div class="txc"><yihen-button-group:isShowSaveAdd="!isEdit"@saveAdd="addNext"@saveForm="submit"@handleClose="cancel"/></div></div>
</template>
<script>
import searchForm from '@/components/search-form'import { genTree } from '@/libs/utils.js'
import {getMenuList,getRoleDetail// staticDeleteAll
} from '@/api/account.js'
export default {components: { searchForm },props: {currentItem: {type: Object,default: () => {}},isEdit: {type: Boolean,default: false}},data() {return {formData: {},showSeniorForm: false,searchConfig: [{type: 'input',label: '角色名称',props: 'group_name',placeholder: '请输入角色名称',labelWidth: 105,colSpan: 20},{type: 'textArea',label: '角色描述',props: 'remark',placeholder: '请输入角色描述',labelWidth: 105,colSpan: 20},{type: 'tree',label: '菜单权限',props: 'checked_menus',placeholder: '请选择菜单',nodeKey: 'id',checkStrictly: false,labelWidth: 105,colSpan: 20,treeData: [],showCheckbox: true,defaultProps: {children: 'children',label: 'permiss_name'},defaultCheckedKeys: []}],rules: {group_name: [{ required: true, message: '请输入角色名称', trigger: 'blur' }],remark: [{ required: false, message: '请输入角色描述', trigger: 'blur' }],checked_menus: [{required: false,message: '请选择菜单',trigger: 'blur'}]}}},watch: {currentItem: {handler(val) {// this.showSeniorForm = false;// console.log("回显", val);// this.formData = { ...val };},immediate: true}},created() {this.getMenuArr()},methods: {submit() {this.$refs.searchForm.validatorForm(data => {this.$emit('submit', this.formData)})},cancel() {this.$emit('cancel')},addNext() {this.$refs.searchForm.validatorForm(data => {this.$emit('addNext', this.formData)})},// 获取菜单下拉getMenuArr() {const obj = {page_size: 9999,page: 1,permiss_name: ''}getMenuList(obj).then(res => {const routesList = genTree(res.data.list)// console.log("routesList", routesList);this.searchConfig[2].treeData = routesList})},checkTree(node, data) {// this.temp.menuList = data.checkedKeys.concat(data.halfCheckedKeys);const selectArr = data.checkedKeys.concat(data.halfCheckedKeys)this.formData.checked_menus = selectArr// console.log("checkTree", node, data, selectArr);},setData(item) {getRoleDetail(item.id).then(res => {// console.log("角色详情", res);this.formData = res.datathis.formData.checked_menus = res.data.permissionsthis.defaultChecked(res.data.permissions)})},defaultChecked(myData) {// 默认选中this.searchConfig[2].checkStrictly = truelet myTreesetTimeout(() => {this.$nextTick(() => {myTree = this.$refs.searchForm.$refs.treeRef[0]setTimeout(() => {myData.forEach(item => {myTree.setChecked(item, true, false)})}, 100)this.searchConfig[2].defaultCheckedKeys = myDatathis.searchConfig[2].checkStrictly = false})}, 200)// this.$refs.searchForm.setKeyTree(myData);},resetForm() {this.$nextTick(() => {this.$refs.searchForm.resetFields()})}}
}
</script>
<style lang="less" scoped>
.senior-setting {border-top: 1px solid #e9e9e9;
}
.first-line {display: flex;align-items: center;cursor: pointer;padding: 20px 0 20px 20px;span {color: #409eff;}i {color: #409eff;}
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业学习|博弈论-博弈论概述

&#xff08;一&#xff09;认识博弈论&#xff1a;解析复杂决策与策略 &#xff08;1&#xff09;认识博弈 博弈论广泛应用于分析个体间因利益冲突而产生的决策问题。通过构建不同模型来探讨如经贸关系、军事威胁等问题&#xff0c;旨在寻找均衡解并提供新知&#xff0c;相较…

一个简单的信号发射电路的构建

在基本的信号发射电路中&#xff0c;线圈&#xff08;电感器&#xff09;和电阻的组合可以产生振荡信号&#xff0c;而天线&#xff08;通常通过线圈&#xff09;用于发射信号。 LC振荡电路&#xff1a; **线圈&#xff08;L1&#xff09;和电容器&#xff08;C&#xff09;**串…

【正则表达式】入门

参考视频&#xff1a;10分钟快速掌握正则表达式_哔哩哔哩_bilibili 这个网站用来测试写的正则表达式效果&#xff1a;regex101: build, test, and debug regex 示例&#xff1a; 限定符 ? 表示前一个字符可有可无 比如这里输入&#xff1a;de? 匹配结果可以得到d和de * 前…

SpringMVC—RequestMapping注解

一、RequestMapping注解 RequestMapping注解&#xff1a;是Spring MVC框架中的一个控制器映射注解&#xff0c;用于将请求映射到相应的处理方法上&#xff0c;具体来说&#xff0c;他可以将指定URL的请求绑定到一个特定的方法或类上&#xff0c;从而实现对请求的处理和响应。 …

线代的学习(矩阵)

1.矩阵的乘法 矩阵实现满足&#xff1a;内标相等 矩阵相乘之后的结果&#xff1a;前行后列 需要注意&#xff1a;1.矩阵的乘法不具有交换律&#xff1a;AB!BA 2.矩阵的乘法满足分配律&#xff1a;A(BC) AB AC 抽象逆矩阵求逆矩阵 方法1.凑定义法、 方法2.长除法 数字型矩阵…

SpringBoot快速入门-上

Apache Tomcat Apache Tomcat是一个开源的Servlet 或 web容器&#xff0c;它实现了Java Servlet、JavaServer Pages (JSP)、Java Unified Expression Language (JUEL) 和 Java WebSocket 规范。 使用 官网下载 安装:绿色版 , 直接解压 卸载:直接删除目录 改编码: # conf/l…

SpringCloudAlibaba组件集成

SpringCloudAlibaba组件集成 Nacos服务注册与发现 1.Nacos认识与安装 1.1.什么是Nacos Nacos和Eureka有着相同的能力&#xff0c;甚至更为强大&#xff0c;作为Dubbo 生态系统中重要的注册中心实现。官方对它有如下定义&#xff1a; Nacos致力于帮助您发现&#xff0c;配置…

kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数

场景&#xff1a; kettle中http post步骤如何发送http请求且传递body参数&#xff1f; 解决方案&#xff1a; http post步骤中直接设置Request entity field字段即可。 1、手边没有现成的post接口&#xff0c;索性用python搭建一个简单的接口&#xff0c;关键代码如下&#…

JCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNNGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分类效果 格拉姆…

NVIDIA新模型Nemotron-4:98%的训练数据是合成生成的,你敢信?

获取本文论文原文PDF&#xff0c;请公众号 AI论文解读 留言&#xff1a;论文解读 标题&#xff1a;Nemotron-4 340B Technical Report 模型概述&#xff1a;Nemotron-4 340B系列模型的基本构成 Nemotron-4 340B系列模型包括三个主要版本&#xff1a;Nemotron-4-340B-Base、…

序列化与反序列化漏洞实例

实验环境&#xff1a; 本次的序列化与反序列化漏洞为2021年强网杯上的一道比赛题目&#xff0c;我使用phpstudy集成环境将其测试环境搭建在了本地&#xff0c;如下。涉及的几个页面php为&#xff1a; index.php function.php myclass.php index.php : <?php // inde…

二叉树、二叉查找树、平衡二叉树及各种旋转机制

二叉树 大体构型&#xff1a; 树里每个结点存储的有&#xff1a;所有树都是这样 二叉树的度&#xff1a;任意节点度<2 二叉树的属性&#xff1a; 二叉树的遍历顺序&#xff1a; 前&#xff1a; 中&#xff1a; 后&#xff1a; 二叉查找树&#xff1a;每个节点最多2子节点&…

最新Prompt预设词分享,DALL-E3文生图+文档分析

使用指南 直接复制使用 可以前往已经添加好Prompt预设的AI系统测试使用&#xff08;可自定义添加使用&#xff09; 支持GPTs SparkAi SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。支持GPT-4o…

SAP STO跨公司间转储含POD交货后台配置简介

在前面的博文中我们演示了STO跨公司间转储含POD的前台的操作。本文将演示后台的配置的操作步骤 1、首先是客户和供应商的设置 关联方的既要是供应商也试试客户 2、设置装运条件 路径&#xff1a;SPRO—>物料管理—>采购—>采购订单—>设置库存调拨订单—>定义…

TestProject Python SDK入门

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;-CSDN博客跳槽涨薪的朋友们有福了&#xff0c;今天给大家推荐一个软件测试面试的刷题小程序。​编辑https://…

[Qt的学习日常]--常用控件3

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、显示类控…

【Linux Vim的保姆级教程】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

温湿度采集与OLED显示

目录 一、什么是软件I2C 二、什么是硬件I2C 三、STM32CubeMX配置 1、RCC配置 2、SYS配置 3、I2C1配置 3、I2C2配置 4、USART1配置 5、TIM1配置 6、时钟树配置 7、工程配置 四、设备链接 1、OLED连接 2、串口连接 3、温湿度传感器连接 五、每隔2秒钟采集一次温湿…

前端技术回顾系列 11|TS 中一些实用概念

在微信中阅读,关注公众号:CodeFit。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注 我的公众号:CodeFit,为我的持续创作提供动力。 上文回顾:泛型在类和接口中的应用 上一篇文章我们回顾了 泛型 在 类 和 接口 中的应用。 通过使用泛型,我们…

【Linux环境下Hadoop部署—Xshell6】解决“要继续使用此程序,您必须应用最新的更新或使用新版本。”

问题描述 打开xshell使用&#xff0c;弹出&#xff1a; 解决方案&#xff1a; 修改安装目录下面的 nsilense.dll 文件 用二进制编辑器&#xff08;notepad的HEX-Editor插件&#xff09;打开Xshell/Xftp安装目录下的 nslicense.dll。 HexEdit插件安装&#xff1a; 1.下载HexEdi…