位置: IT常识 - 正文

antd——使用a-tree组件实现 检索+自动展开+自定义增删改查功能——技能提升(antd怎么用)

编辑:rootadmin
antd——使用a-tree组件实现 检索+自动展开+自定义增删改查功能——技能提升

推荐整理分享antd——使用a-tree组件实现 检索+自动展开+自定义增删改查功能——技能提升(antd怎么用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:antd autocomplete,antd-ui,antd怎么用,antd按需引入,antd的tabs,antd useform,antd的tabs,antd useform,内容如对您有帮助,希望把文章链接给更多的朋友!

之前写后台管理系统时,遇到一个下面的需求,下面是最终完成的效果图。 实现的功能有:

1. 下拉 选择不同的类型——就是一个普通的select组件,下面并不做介绍2. 通过关键字可以进行tree树形结构的筛选,然后将筛选后的内容自动展开

3. tree组件中,每一条数据,鼠标移入后展示 增/删/改 图标,点击有对应的功能

下面直接上代码一:tree组件的使用<a-tree :treeData="treeData" ref="treeNode" v-if="treeData" :showIcon="false" class="tree-list" :defaultExpandAll="true" :expandedKeys.sync="defaultExpandedKeys" tree-default-expand-all :replaceFields="replaceFields"></a-tree>1. treeData :tree组件的数据源2. ref:相当于id,可以通过此参数获取到dom结构3. v-if:只有当有数据源的时候才显示组件4. showIcon:设置成false,就不会展示默认的tree组件图标了,此时可以通过自定义图标的形式来展示自定义的效果了5. class="tree-list":因为我进行了自定义的样式处理,此时添加一个类名用于与其他tree组件区分6. defaultExpandAll:设置成true,默认展开所有节点,也可以通过下面的expandedKeys来指定展开的节点7. expandedKeys:异步指定要展开的节点,用于筛选后所有符合条件的数据的展开8. replaceFields:当数据源给定的数据结构与期望的结构不符时,可以通过此参数进行设置。我这边的配置如下: replaceFields: { children: 'children', title: 'title', key: 'key', value: 'subTitle', },二:使用插槽实现自定义组件结构<a-icon slot="switcherIcon" type="caret-down" /><template slot="custom" slot-scope="item"> <div @mouseenter="mouseenter(item)" style="position: relative"> <span style=" height: 30px; width: 70%; display: flex; align-items: center; " > <a-icon type="home" theme="filled" style=" height: 30px; line-height: 30px; padding-right: 5px; " v-if="item.slots.Code" /> <a-icon type="user" style=" height: 30px; line-height: 30px; padding-right: 5px; " v-if="item.slots.UserId" /> <span style=" height: 30px; display: inline-block; max-width: 80%; overflow: hidden; text-overflow: ellipsis; padding-right: 5px; " >{{ item.title }}</span > <span style=" height: 30px; display: inline-block; max-width: 80%; overflow: hidden; color: #f90; font-weight: bold; height: 30px; " > <span v-if="item.slots.IsSecondary" >[兼]</span > <span v-if="item.slots.IsLeader" >[责]</span > </span> </span> <a-space @click.stop v-if="currentId == item.key" style="position: absolute; right: 25px; top: 0" > <a-icon type="plus-square" style="color: green" @click.stop="handleAdd(item)" v-if="item.key.indexOf('U') == -1" /> <a-icon type="edit" @click.stop="handleEdit(item)" /> <a-icon type="delete" @click.stop="handleDel(item)" style="color: red" v-if="item.key.indexOf('U') == -1" /> </a-space> </div></template>三:数据结构需要转化成 scopedSlots自定义的插槽

原有的数据结构: 将上面的数据结构通过下面的方法进行转化。

filterTreeData(arr) { arr.forEach((item) => { item['scopedSlots'] = { title: 'custom' }; item.Id = item?.slots?.Id; item.Name = item?.slots?.Name; item.selectable = true; item.subTitle = item.title + '(' + item.key + ')'; this.$forceUpdate(); if (item.children) { this.filterTreeData(item.children); } });},antd——使用a-tree组件实现 检索+自动展开+自定义增删改查功能——技能提升(antd怎么用)

最终转化后的数据结构如下: 此时就可以通过上面前两步的设置进行正常渲染了。

四:监听关键字的检索4.1 节流检索关键字//先定义一个定时器,然后在指定时间内,默认是200毫秒,如果发生变化,则清理定时器,重新定时debounce(callback, delay = 200) { clearTimeout(this.timeout); this.timeout = setTimeout(() => { callback(); }, delay);},4.2 input组件作为输入框 <a-input style="margin-top: 8px; margin-bottom: 8px" v-model="searchValue" placeholder="请输入关键字" @change="onChange($event.target.value)" allowClear/>4.3 监听input的change事件onChange(value) { this.defaultExpandedKeys = []; if (value) { this.debounce(() => { //此时需要根据value关键字,从treeData数据源中查找对应的数据,将key存放到defaultExpandedKeys数组中,就可以实现自动展开功能了。 }); } else { this.treeData = JSON.parse(JSON.stringify(this.originTreeData)); }},4.4 通过XEUtiles.searchTree实现 多层对象数组的检索this.treeData = XEUtiles.searchTree( this.treeData, (item) => { if (item.title.toLowerCase().indexOf(value.toLowerCase()) > -1) { if (item.parent) { this.defaultExpandedKeys.push('S-' + item.parent); } this.defaultExpandedKeys.push(item.key); return true; } else { return false; } }, { children: 'children' });4.5 npm install xe-utils --save——我这边安装的版本是3.5.6"xe-utils": "^3.5.6"4.6 局部页面引入xe-utils

const XEUtiles = require('xe-utils');

xe-utils使用文档说明:https://vxetable.cn/xe-utils/#/

入参:(数据源,查找条件,children的字段可以自定义)。

可以将符合条件的数据,每一层的父级都找出来。

具体的使用原理我没有研究,但是不用自己一层层遍历循环,还是很好的。

五:鼠标移入mouseenter(item) { this.currentId = item.key;},

通过currentId参数与数据源中的key匹配,相同的则展示对应的图标。

完成!!!

本文链接地址:https://www.jiuchutong.com/zhishi/278193.html 转载请保留说明!

上一篇:在Linux上使用VirtualBox的命令行管理界面的方法讲解(linux virt-manager)

下一篇:Linux sar命令详解之分析系统性能案例(linux sar文件)

  • qq闪图功能怎么开启(qq闪图功能怎么没有了2023)

    qq闪图功能怎么开启(qq闪图功能怎么没有了2023)

  • face id是什么意思啊(face id是啥)

    face id是什么意思啊(face id是啥)

  • 华为手机微信聊天记录怎么迁移(华为手机微信聊天记录删了能恢复吗)

    华为手机微信聊天记录怎么迁移(华为手机微信聊天记录删了能恢复吗)

  • 机械硬盘装在机箱哪里(机械硬盘装在机箱位置图)

    机械硬盘装在机箱哪里(机械硬盘装在机箱位置图)

  • 华为p50发布时间(华为p50发布时间和上市时间拓易峰)

    华为p50发布时间(华为p50发布时间和上市时间拓易峰)

  • oppor17来电不亮屏怎么回事(oppor15手机来电话不会亮)

    oppor17来电不亮屏怎么回事(oppor15手机来电话不会亮)

  • b站卡超过40g怎么计费(b站卡超过40g还免流吗)

    b站卡超过40g怎么计费(b站卡超过40g还免流吗)

  • cad断开快捷键命令(cad断点快捷键)

    cad断开快捷键命令(cad断点快捷键)

  • 小米max4几月份上市(小米mix4预计发布时间)

    小米max4几月份上市(小米mix4预计发布时间)

  • xlsx是excel吗(xls是wps还是excel)

    xlsx是excel吗(xls是wps还是excel)

  • 红包忘记收过期了怎么办(红包忘记收过期了对方不重发)

    红包忘记收过期了怎么办(红包忘记收过期了对方不重发)

  • 美团打印机打印不出来怎么办(美团打印机打印不出字)

    美团打印机打印不出来怎么办(美团打印机打印不出字)

  • 华为p40与p40pro区别在哪里(华为p40与p40pro的区别 知乎)

    华为p40与p40pro区别在哪里(华为p40与p40pro的区别 知乎)

  • 语音连麦第二天闹钟会响吗(语音连麦第二天闹钟会中断吗)

    语音连麦第二天闹钟会响吗(语音连麦第二天闹钟会中断吗)

  • 华为手机滤镜怎么打开(华为手机滤镜怎么调出来)

    华为手机滤镜怎么打开(华为手机滤镜怎么调出来)

  • 手机迅雷下载的视频在哪里(手机迅雷下载的文件)

    手机迅雷下载的视频在哪里(手机迅雷下载的文件)

  • 光纤和宽带哪个网速快(光纤和宽带哪个快)

    光纤和宽带哪个网速快(光纤和宽带哪个快)

  • 华为mate30是前置双摄吗(mate30前置摄像头介绍图)

    华为mate30是前置双摄吗(mate30前置摄像头介绍图)

  • 手机三摄跟四摄的区别(手机摄像头三摄和四摄的区别)

    手机三摄跟四摄的区别(手机摄像头三摄和四摄的区别)

  • 微信出现matrix怎么关闭

    微信出现matrix怎么关闭

  • 荣耀20i怎么关人工服务(荣耀20i怎么关闭热门推荐)

    荣耀20i怎么关人工服务(荣耀20i怎么关闭热门推荐)

  • 电脑typec接口干嘛的(电脑typec口坏了)

    电脑typec接口干嘛的(电脑typec口坏了)

  • 电话被轰炸有什么办法解决(电话被轰炸有什么影响)

    电话被轰炸有什么办法解决(电话被轰炸有什么影响)

  • vivox27刷脸设置在哪(vivox27刷脸解锁在哪里设置)

    vivox27刷脸设置在哪(vivox27刷脸解锁在哪里设置)

  • 微信面对面建群群主改变(微信面对面建群有时间限制吗)

    微信面对面建群群主改变(微信面对面建群有时间限制吗)

  • 动态范围和宽容度区别(动态宽容度)

    动态范围和宽容度区别(动态宽容度)

  • linux 鼠标左右键互换实现代码(linux鼠标左键失灵)

    linux 鼠标左右键互换实现代码(linux鼠标左键失灵)

  • python实现问卷星自动填写(可以跳过智能验证)(利用python自动填问卷)

    python实现问卷星自动填写(可以跳过智能验证)(利用python自动填问卷)

  • 个人代开资金占用费,如何计算代扣代缴个税
  • 工资与社保的关系怎么写
  • 利润率的百分比
  • 内涵报酬率和必要投资报酬率
  • 已经验旧的发票可以作废吗
  • 固定资产账面价值公式
  • 酒店应不应该为员工提供澡堂
  • 非居民税收征管方式包括
  • 房地产公司解散条件
  • 逾期不缴纳税款责令限改期限内改正的
  • 借款超期不还利息的法律规定
  • 年底没计提年终奖,下一年发放要怎么做
  • 房地产形象海报
  • 建筑业收入确认条件
  • 公司的基建部门是做什么的
  • 库存半成品属于什么会计科目
  • 小微企业声明函怎么开
  • 委托个人加工应税消费品纳税地点
  • 微型小型车
  • 计提生产设备折旧费计入什么科目
  • 笔记本windows10截屏
  • 收到棚户区改造资金
  • 中秋佳节发放职工福利的话语
  • thinkpad预装的office怎么激活
  • 苹果专用win10镜像下载
  • 苹果电脑如何查看内存大小
  • 企业委托境外研发所发生的费用
  • 融资性售后回租承租方为什么不交税
  • 增值税的法律法规最新
  • joomla模板制作教程
  • 减税性质代码及名称农业
  • 若依框架前端发请求
  • 增值税发票认证不了怎么回事
  • 使用van-picker 动态设置当前选中项
  • 公司让员工提前离职,可以结清工资吗
  • 小规模增值税减征额怎么算
  • 结转损益利息收入在哪方
  • 研发费用怎么体现
  • 出纳造工资表吗
  • uni appp
  • 以前年度损益调整结转到本年利润吗
  • 开增值税专用发票的好处
  • 借调是原单位发工资吗
  • 普通发票能不能重新开
  • 个税更改公司怎么操作
  • 上年多交的增值税怎么调整
  • 企业哪些情况下需要交税
  • 同在一个单位
  • 安防工程的注意事项
  • 从内地到香港坐飞机到国内
  • 已付款未收到货怎么办
  • 合作社财政补助平均量化
  • 社保滞纳金可以免除吗
  • 企业计提增值税怎么写
  • 月末库存商品的成本怎么算
  • 空调的折旧年限是多少年的
  • 毛利和净利的区别大白话
  • win7开机taskeng
  • video for windows是什么
  • 系统技巧 制作流程
  • linuxftp服务器
  • wrme.exe是什么
  • win7系统删除文件夹怎么恢复
  • win8和win10怎么共享文件
  • Win10 Mobile RedStone预览版14267更新内容汇总(持续更新)
  • unitysharder
  • 常用的linux命令大全
  • 批处理清空文本内容
  • python抓取软件界面数据
  • 微信jssdk vue
  • python 二分查找函数
  • javascript的弹窗
  • 省市区json
  • 如何查询个体工商户是查账征收还是核定征收
  • 地税局公务员考试科目
  • 煤炭资源税税率调整
  • 什么是跨地区经营汇总纳税企业
  • 文化服务包括哪些专业
  • 税务异地协查系统管理办法
  • 广东电子税务局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设