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

  • 微信营销的优点主要有哪些?(微信营销优点入口)

    微信营销的优点主要有哪些?(微信营销优点入口)

  • 小天才手表防水吗(小天才手表防水效果)

    小天才手表防水吗(小天才手表防水效果)

  • 微信加人限制规则有哪些(2019微信加人限制规则)

    微信加人限制规则有哪些(2019微信加人限制规则)

  • 余额宝的钱怎么转到银行卡(余额宝的钱怎么解冻)

    余额宝的钱怎么转到银行卡(余额宝的钱怎么解冻)

  • 荣耀play4tpro可以支持nfc吗(荣耀play4tpro可以无线充电吗)

    荣耀play4tpro可以支持nfc吗(荣耀play4tpro可以无线充电吗)

  • 苹果停留控制怎么用(iphone停留控制是干嘛的)

    苹果停留控制怎么用(iphone停留控制是干嘛的)

  • 闲鱼玩家全网影响力一直在审核(闲鱼中闲鱼玩家是什么意思)

    闲鱼玩家全网影响力一直在审核(闲鱼中闲鱼玩家是什么意思)

  • 西瓜视频可以改认证领域吗(西瓜视频可以改变声道吗)

    西瓜视频可以改认证领域吗(西瓜视频可以改变声道吗)

  • 小米手机查找(小米手机查找类似应用不能安装)

    小米手机查找(小米手机查找类似应用不能安装)

  • 程序设计语言的基本要素(程序设计语言的编译程序属于什么软件)

    程序设计语言的基本要素(程序设计语言的编译程序属于什么软件)

  • 淘宝酷动城是什么意思(淘宝酷动城是什么认证)

    淘宝酷动城是什么意思(淘宝酷动城是什么认证)

  • 全民k歌突然打不开了(全民k歌为什么)

    全民k歌突然打不开了(全民k歌为什么)

  • 华为怎么扫一扫连无线(华为怎么扫一扫连接wifi)

    华为怎么扫一扫连无线(华为怎么扫一扫连接wifi)

  • iphone怎么设置点两下亮屏(iphone怎么设置点击屏幕截屏)

    iphone怎么设置点两下亮屏(iphone怎么设置点击屏幕截屏)

  • iphone11和iphonexr对比(iPhone11和iPhonexrmax)

    iphone11和iphonexr对比(iPhone11和iPhonexrmax)

  • ctrl加d是什么快捷键(ctrl加什么大全)

    ctrl加d是什么快捷键(ctrl加什么大全)

  • 滴滴顺风车有发票吗(滴滴顺风车有发票没有)

    滴滴顺风车有发票吗(滴滴顺风车有发票没有)

  • vivo怎么让手机常亮(vivo怎么让手机快速充电)

    vivo怎么让手机常亮(vivo怎么让手机快速充电)

  • switch怎么连显示器(switch 怎么连接屏幕)

    switch怎么连显示器(switch 怎么连接屏幕)

  • 苹果xr是几代(苹果xr是什么时候发布的)

    苹果xr是几代(苹果xr是什么时候发布的)

  • 苹果手表4代可以插卡吗(苹果手表4代可以发微信吗)

    苹果手表4代可以插卡吗(苹果手表4代可以发微信吗)

  • 三星s10发热严重如何解决(三星s10发烫)

    三星s10发热严重如何解决(三星s10发烫)

  • flex布局详细介绍以及盒子上下左右居中对齐实例(flex布局使用)

    flex布局详细介绍以及盒子上下左右居中对齐实例(flex布局使用)

  • el-form的label和表单自适应填满一行且靠左对齐方式(el-form表单)

    el-form的label和表单自适应填满一行且靠左对齐方式(el-form表单)

  • 个人劳务报酬怎么申报个税
  • 物业收电费有问题找谁解决
  • 外商投资合伙企业的性质与特征
  • 设备转产需要停止折旧吗
  • 金税四期可以查个人账户吗
  • 净利润和盈余公积的会计分录
  • 生育津贴到公司账上怎么发给员工
  • 股权投资收回的账务处理
  • 收到社保生育津贴摘要怎么写
  • 税局函调准备哪些资料
  • 申报后发现成本算错了
  • 申报同步更正
  • 仓储货架工厂仓库货架
  • 增值税专用发票可以开电子发票吗
  • 记账凭证广告费
  • 私车公用税务政策性文件
  • 小规模转为一般纳税人最新规定
  • 简易征收红冲报税方式是什么?
  • 水利申报怎么申报
  • 运费发票是含税还是不含税
  • 工会经费由谁审批
  • 证券公司手续费怎么收
  • 初级备考计划表
  • 补缴去年的社保怎么做账
  • 企业偷税行为
  • 购买承兑汇票怎么做账
  • 鸿蒙系统桌面文件夹建立
  • 农村合作社收到财政拨款怎么做分录
  • 长期负债在报表哪里看
  • 印花税退费
  • Windows11报sill idealTree buildDeps安装慢或者卡顿解决方案
  • pdo_mysql
  • 支票沾水
  • 转让企业要交什么税
  • Linux | 将SpringBoot+Vue项目部署到服务器上
  • 所得税需要结转么
  • 法院判决后的利息
  • 2.MyBatis
  • 将织梦dedecms转换到wordpress
  • 汇算清缴交税怎么做账务处理
  • 外企研发中心
  • 年终奖不属于工资有法律依据吗
  • 报销替票的风险是什么
  • 费用科目什么意思
  • 哪些增值税专用发票能抵扣进项税
  • 进口海关是国内还是国外
  • 资本公积溢价转增
  • 金税盘要交税吗
  • 流动资产属于经营资产还是得经营资产
  • 以前年度未处理往来账怎么叫
  • 现金折扣可以扣除吗
  • 拆迁补偿怎么算的
  • 欠钱打官司后利息怎么算
  • 企业设备可以贷款吗?
  • 财务常见问题有哪些
  • 购入房屋建筑物进项税额抵扣
  • 总公司是一般纳税人分公司是什么
  • 税控盘费用抵扣怎么申报什么表怎么说什么表怎么填报
  • 工程款结清确认书
  • 贴现办理流程
  • 使用win10
  • Vista和Server08 SP2 RTM-Escrow发放给测试者
  • ubuntu的软件
  • mac系统怎么样
  • 将哪一linux文件系统引入
  • centos8查看进程
  • snmptrap.exe - snmptrap是什么进程 有什么作用
  • windows10更新推送
  • 升级win10之后东西不见了
  • jquery弹出窗口的方法
  • nodejs获取客户端设备信息
  • android studio右边的视图不见了
  • node.js 10实战
  • jquery点击按钮切换图片
  • 使用mvc模式设计的web应用程序
  • 开发商卖商铺需要哪些资质条件?
  • 公司购买的汽车可以一次进入费用吗
  • 陕西电子税务电话是多少
  • 微山湖到底属于哪里
  • 增值税专用发票和普通发票的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设