位置: 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文件)

  • 折星星的男孩子(男生折星星)

    折星星的男孩子(男生折星星)

  • 支付宝怎么预约新冠疫苗接种第一针(支付宝怎么预约离婚登记)

    支付宝怎么预约新冠疫苗接种第一针(支付宝怎么预约离婚登记)

  • iwatch7怎么装sim卡

    iwatch7怎么装sim卡

  • 苹果电池健康一天降了4(苹果电池健康一个月掉了3%正常吗)

    苹果电池健康一天降了4(苹果电池健康一个月掉了3%正常吗)

  • 微信对方把你删了发信息他看得到吗(微信对方把你删了为什么还能发信息)

    微信对方把你删了发信息他看得到吗(微信对方把你删了为什么还能发信息)

  • 华为980处理器手机有几种型号(华为980cpu手机)

    华为980处理器手机有几种型号(华为980cpu手机)

  • 苹果x怎么弄成双卡(苹果x怎么弄成5G)

    苹果x怎么弄成双卡(苹果x怎么弄成5G)

  • 微信怎么设置红包铃声(微信怎么设置红包来了提示)

    微信怎么设置红包铃声(微信怎么设置红包来了提示)

  • 1a2a充电头的区别(1a2.1a充电头的区别)

    1a2a充电头的区别(1a2.1a充电头的区别)

  • 曲屏手机怎么贴膜(曲屏手机怎么贴软膜)

    曲屏手机怎么贴膜(曲屏手机怎么贴软膜)

  • 如何筛选重复的名字(如何筛选重复的名字一共几个名字)

    如何筛选重复的名字(如何筛选重复的名字一共几个名字)

  • 华为klw-tl00h是什么型号(华为klw-ul00)

    华为klw-tl00h是什么型号(华为klw-ul00)

  • 大二芯能插大三芯吗(大2芯和大3芯)

    大二芯能插大三芯吗(大2芯和大3芯)

  • word设置为独立一节(word设置独立页脚)

    word设置为独立一节(word设置独立页脚)

  • 为什么qq显示2g在线(为什么qq显示2g在线而不是4G)

    为什么qq显示2g在线(为什么qq显示2g在线而不是4G)

  • 手机热可以放冰箱吗(手机热可以放冰上吗)

    手机热可以放冰箱吗(手机热可以放冰上吗)

  • oppor9怎么打开水印(oppor9s进水怎么办)

    oppor9怎么打开水印(oppor9s进水怎么办)

  • 如何启动win10自带杀毒(win10怎么设置开机自启动)

    如何启动win10自带杀毒(win10怎么设置开机自启动)

  • 9700f和9700k区别(9700kf和9700f哪个好)

    9700f和9700k区别(9700kf和9700f哪个好)

  • vivoy93指纹在哪设置(vivoy93指纹解锁设置在哪里)

    vivoy93指纹在哪设置(vivoy93指纹解锁设置在哪里)

  • ps显卡要求(ps显卡配置)

    ps显卡要求(ps显卡配置)

  • 小米锁屏时间样式怎么换(小米锁屏时间样式设置不了)

    小米锁屏时间样式怎么换(小米锁屏时间样式设置不了)

  • 怎么取消筛选模式(取消筛选按钮)

    怎么取消筛选模式(取消筛选按钮)

  • 抖音里长腿特效在哪(抖音里长腿特效怎么弄)

    抖音里长腿特效在哪(抖音里长腿特效怎么弄)

  • windows10如何进入安全模式(windows10如何进入dos)

    windows10如何进入安全模式(windows10如何进入dos)

  • ipados16新功能详细介绍(ipad os 16)

    ipados16新功能详细介绍(ipad os 16)

  • python中删除字典元素的方法有哪些?(python中删除字典里的空项目)

    python中删除字典元素的方法有哪些?(python中删除字典里的空项目)

  • DedeCMS安装完成 Deprecated: Function ereg_replace(dedecms下载)

    DedeCMS安装完成 Deprecated: Function ereg_replace(dedecms下载)

  • 企业汇算清缴时允许税前扣除的工资是
  • 增值税发票税控开票软件怎么下载
  • 有限公司能否申请破产
  • 金蝶以前年度损益调整属于哪类科目
  • 申报怎么打印
  • 货款现金收据可以做账吗
  • 经营杠杆系数分类
  • 收到电子承兑汇票的账务处理
  • 咨询服务费记到什么科目
  • 津贴补助如何缴纳个税
  • 纳税调整的情况
  • 发票领出来之后税盘要怎么处理
  • 平销返利可以作为下期的折扣开票吗?
  • 研发支出的二级科目是什么
  • 公司审计期间
  • 以产品分成方式销售商品
  • 主营业务收入需要交增值税吗
  • 企业没有土地证
  • 春节发放物品计入什么科目
  • php中??
  • 企业购入固定资产,价值3000元,误记入管理费用账户
  • 代开房租的税点计入什么科目?
  • wordpress 中文版和国际版区别
  • 哪一年底,由linux基金会成立?
  • 无人驾驶控制方向
  • 微信红包如何发出去
  • css width height
  • 利息收入如何会计分录
  • bind函数错误
  • 统计不同类型的数量
  • 管理费用税金怎么算
  • c语言中fopen函数的头文件
  • 税务代开,开错了重开要多久?
  • 减按10%的税率是什么意思
  • 公允价值怎么记账
  • 仓库折旧会计分录
  • mysql的索引是什么
  • php获取参数值的三种方式
  • 借预收账款贷其他应付款什么意思
  • 企业无形资产摊销的会计处理
  • mysql5.7字符集
  • 有净残值的固定资产如何折旧
  • 净资产包含哪些项目
  • SQL Sever2008r2 数据库服务各种无法启动问题的解决办法(详解)
  • 内含报酬率的意义
  • 融资租赁租出的固定资产账务处理
  • 上年度没有计提企业所得税,今年怎么做分录
  • 只有销售才能使你成功的名言
  • 核销贷款收回账务怎么做
  • 新政府会计固定资产的核算与计量
  • 民办学校学费收入
  • 技术服务发票怎么做成本
  • 资产负债表怎么看财务状况
  • 新税法和新准则的关系
  • centos怎么样
  • freebsd怎么安装
  • 装xp系统鼠标键盘没有驱动
  • ubuntu网页打开很慢
  • 苹果电脑macbookpro忘记密码
  • 如何避免系统性风险
  • windows7桌面右击
  • hyper-v win98
  • win7系统所有软件打不开
  • windows10磁盘100%占用解决
  • win 10 build
  • perl -p -e
  • javascript教程
  • SDK不兼容Ubuntu64位系统的解决办法!!!
  • opengl和openglskia
  • js实现登录界面
  • 使用二氧化碳灭火器时人应该站在什么位置
  • 备份多个数据库
  • sticky memo widget
  • 批处理清空文本内容
  • jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
  • js操作对象的方法
  • javascript要怎么学
  • libgdx robovm admob IOS SDK的绑定
  • Python3使用requests发闪存的方法
  • 河南热力公司收费标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设