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

  • 芙蓉姐姐变身知性白富美 史上最震撼的励志故事(芙蓉姐姐复出)

    芙蓉姐姐变身知性白富美 史上最震撼的励志故事(芙蓉姐姐复出)

  • 哔哩哔哩邀请码怎么用(哔哩哔哩邀请码怎么获得)(哔哩哔哩邀请码在哪里领)

    哔哩哔哩邀请码怎么用(哔哩哔哩邀请码怎么获得)(哔哩哔哩邀请码在哪里领)

  • ppt图片文字四周环绕怎么弄

    ppt图片文字四周环绕怎么弄

  • 抖音怎么置顶关注(抖音怎么置顶关注的人评论)

    抖音怎么置顶关注(抖音怎么置顶关注的人评论)

  • 用微信登录的芒果TV会员怎么给别人用(微信登录的芒果tv会员可以几个人用)

    用微信登录的芒果TV会员怎么给别人用(微信登录的芒果tv会员可以几个人用)

  • 相册永久删除的照片怎么恢复(相册永久删除的照片还能恢复吗)

    相册永久删除的照片怎么恢复(相册永久删除的照片还能恢复吗)

  • 电脑被偷了能定位吗(电脑偷了,具体能定位吗)

    电脑被偷了能定位吗(电脑偷了,具体能定位吗)

  • 锁屏字体颜色怎么改变(锁屏字体颜色怎么设置成白色呢)

    锁屏字体颜色怎么改变(锁屏字体颜色怎么设置成白色呢)

  • 华为插卡孔在哪(华为插卡孔在哪个位置)

    华为插卡孔在哪(华为插卡孔在哪个位置)

  • 个人微信二维码收款限额多少(个人微信二维码会过期吗)

    个人微信二维码收款限额多少(个人微信二维码会过期吗)

  • 钢化膜10d跟9d什么区别(钢化膜9d10d什么区别)

    钢化膜10d跟9d什么区别(钢化膜9d10d什么区别)

  • 充电盒怎么知道充满了(充电盒怎么知道在充电)

    充电盒怎么知道充满了(充电盒怎么知道在充电)

  • miui10和miui11哪个省电(miui10和11哪个好)

    miui10和miui11哪个省电(miui10和11哪个好)

  • qq连续包月什么意思(qq连续包月和一个月有什么区别)

    qq连续包月什么意思(qq连续包月和一个月有什么区别)

  • 旁白模式怎么解锁(旁白模式怎么解锁iPhone)

    旁白模式怎么解锁(旁白模式怎么解锁iPhone)

  • 嘀嗒提现能到账吗(嘀嗒提现能到账吗现在)

    嘀嗒提现能到账吗(嘀嗒提现能到账吗现在)

  • 淘宝开播提醒怎么设置(淘宝店铺直播提醒怎么打开)

    淘宝开播提醒怎么设置(淘宝店铺直播提醒怎么打开)

  • 微信被举报了怎么解除(微信如何投诉对方才能封号)

    微信被举报了怎么解除(微信如何投诉对方才能封号)

  • 苹果怎么设置来电铃声音乐(苹果怎么设置来消息时有闪光灯)

    苹果怎么设置来电铃声音乐(苹果怎么设置来消息时有闪光灯)

  • 微信涂鸦工具在哪(微信涂鸦功能)

    微信涂鸦工具在哪(微信涂鸦功能)

  • win10与win7怎样组建局域网(win10电脑和win7电脑怎么共享文件)

    win10与win7怎样组建局域网(win10电脑和win7电脑怎么共享文件)

  • linux管道及重定向详解(linux 管道命令详解)

    linux管道及重定向详解(linux 管道命令详解)

  • 蓝湖的使用(蓝湖怎么用的)

    蓝湖的使用(蓝湖怎么用的)

  • Ai实现FPS游戏自动瞄准 yolov5fps自瞄(游戏ai模式是什么意思)

    Ai实现FPS游戏自动瞄准 yolov5fps自瞄(游戏ai模式是什么意思)

  • 增值税发票综合服务平台密码
  • 汇算清缴涉及哪些调整
  • 民营医院所得税如何计算
  • 增值税冲红附加税费可以退吗
  • 总承包单位可以分包吗
  • 法人独资企业怎么样
  • 投资收益企业所得税优惠政策
  • 公司可以为非本人开户吗
  • 建筑公司核定征收是什么意思
  • 小规模纳税人进项发票怎么做账
  • 商品流通企业成本核算的内容包括
  • 公司代收代付会被监控吗
  • 公司支付宝付款
  • 汽车修理厂如何做账
  • 小规模增值税多少个点
  • 7月财务报表行次三大变化
  • 开发票冲销
  • 公司不盈利用交税吗
  • 残保金次年申报
  • 运杂费计入什么科目
  • 永续债计入哪个会计科目
  • 触屏不灵敏怎么调整oppo
  • ICCV, ECCV, CVPR,IEEE的关系
  • 郁金香地图
  • vue–router
  • php qrcode生成二维码
  • vue0
  • 基于html的旅游网站设计源代码
  • js轮播图实现思路
  • 上年第4季度企业所得税
  • 公司申报是每月一次吗
  • 残次品生产成本计算
  • phpcms二次开发教程
  • 保函被索赔支付什么意思
  • 数据库损坏了怎么修复
  • 财政拨付注册资本金说明
  • 床垫发票
  • 抵扣联和发票联算一张发票吗
  • sql server2005使用方法
  • 增值税扣缴义务发生时间为扣缴义务人扣缴税款的当天
  • 收到单位借款如何入账
  • 火车退票费如何开票
  • 异地成立分公司的流程和要求
  • 受托代销的含义
  • 融资租入固定资产的改建支出
  • 工程项目买保险需要哪些资料
  • 总公司与分公司关系证明模板
  • 事业单位其他支出科目
  • 暂估入库估多了,汇算清缴前调整
  • 应收账款少收会计分录
  • 月末忘记结转怎么办
  • 产品成本的具体内容
  • 失业保险费返还怎么做账
  • 买货品的咨询服务有哪些
  • 如何修改mysql用户名
  • mysql5.7.33安装配置教程
  • Windows Server 2016技术预览版第四版系统截图曝光 编号10565
  • xp附件游戏
  • winxp系统安装教程
  • linux安装rpm软件包的命令
  • 磁盘已满
  • win10开机内存就占了70 解决方法
  • mac进入睡眠时间长
  • mac双系统怎么调整磁盘空间
  • win7更改磁盘分区
  • win10预览文件怎么显示内容
  • win7系统步骤
  • nodejs代码规范
  • 什么是四个菜
  • k-means聚类算法例题
  • 经纬科技it6000
  • bootstrap学习
  • JavaScript的21条基本知识点
  • 基于JAVASCRIPT实现的可视化工具是
  • unity区域光怎么做
  • qq聊天背景闪烁
  • AndroidManifest.xml文件属性详解
  • js 模块 modules
  • 请问3.3排量的汽车
  • 三门峡哪个小区是原火葬场
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设