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

  • 小米手环7pro怎么抬腕亮屏(小米手环7pro怎么调时间)

    小米手环7pro怎么抬腕亮屏(小米手环7pro怎么调时间)

  • wps放图片进去怎么自由移动(图片放入wps后不清晰)

    wps放图片进去怎么自由移动(图片放入wps后不清晰)

  • 快手作品怎么改音乐(快手作品怎么改为所有人可见)

    快手作品怎么改音乐(快手作品怎么改为所有人可见)

  • 微信绑信用卡为什么不能支付(微信绑信用卡为什么不能支付支付宝就可以)

    微信绑信用卡为什么不能支付(微信绑信用卡为什么不能支付支付宝就可以)

  • 手机管家清理了视频哪里找回(手机管家清理了文件怎么找回)

    手机管家清理了视频哪里找回(手机管家清理了文件怎么找回)

  • oppoa5录屏的时候怎么把声音录进去(oppoa5录屏没有了)

    oppoa5录屏的时候怎么把声音录进去(oppoa5录屏没有了)

  • 微信备注信息过长看不到怎么办(微信备注过的人怎么找)

    微信备注信息过长看不到怎么办(微信备注过的人怎么找)

  • huawei hicar是什么(华为hicar是啥)

    huawei hicar是什么(华为hicar是啥)

  • 微信电脑和手机能同时视频么(微信电脑和手机信息不同步怎么办)

    微信电脑和手机能同时视频么(微信电脑和手机信息不同步怎么办)

  • bugreport是什么意思(bugreport文件)

    bugreport是什么意思(bugreport文件)

  • 苹果手机突然黑屏转圈(苹果手机突然黑屏转圈圈是怎么回事)

    苹果手机突然黑屏转圈(苹果手机突然黑屏转圈圈是怎么回事)

  • 华为nova6有红外功能吗(华为nova6有红外遥控吗)

    华为nova6有红外功能吗(华为nova6有红外遥控吗)

  • 微信的听筒模式是什么意思

    微信的听筒模式是什么意思

  • 苹果11pro max是5g吗(苹果11pro max是5G网络吗)

    苹果11pro max是5g吗(苹果11pro max是5G网络吗)

  • 华为怎么下载两个微信(华为怎么下载两个一样应用)

    华为怎么下载两个微信(华为怎么下载两个一样应用)

  • 电脑垃圾广告怎么彻底清除(电脑垃圾广告怎么彻底清除win10)

    电脑垃圾广告怎么彻底清除(电脑垃圾广告怎么彻底清除win10)

  • vivo打电话视频通话怎么弄(vivo打电话视频彩铃怎么取消)

    vivo打电话视频通话怎么弄(vivo打电话视频彩铃怎么取消)

  • wallpaper engine下载的视频在哪(wallpaper engine下载的在哪)

    wallpaper engine下载的视频在哪(wallpaper engine下载的在哪)

  • 苹果手机自动锁定时间怎么改不了(苹果手机自动锁定什么意思)

    苹果手机自动锁定时间怎么改不了(苹果手机自动锁定什么意思)

  • s6edge的电话转移怎么恢复(转移手机上的电话号码)

    s6edge的电话转移怎么恢复(转移手机上的电话号码)

  • tof3d立体摄像头是什么(3d立体摄像机)

    tof3d立体摄像头是什么(3d立体摄像机)

  • 荣耀9x屏幕是天马屏吗(荣耀9x的屏幕是)

    荣耀9x屏幕是天马屏吗(荣耀9x的屏幕是)

  • 小影微视频制作步骤(小影微视频diy神器)

    小影微视频制作步骤(小影微视频diy神器)

  • switch兑换序号是什么(switch兑换码在哪里兑换)

    switch兑换序号是什么(switch兑换码在哪里兑换)

  • 亚马逊个人开店需要什么条件(亚马逊个人开店在国内交税吗)

    亚马逊个人开店需要什么条件(亚马逊个人开店在国内交税吗)

  • yolov5模型训练结果分析(yolo 模型训练)

    yolov5模型训练结果分析(yolo 模型训练)

  • 设备检验检测
  • 残疾人保证金计算器
  • 城市维护建设税为什么是流转税
  • 农副产品商贸公司标语
  • 小规模企业现金流量表
  • 工资社保缴纳计算器
  • 企业对伤残怎么赔偿?
  • 发票该如何打印
  • 给员工购买意外险进项税能不能抵扣
  • 经营活动现金净流量在报表上怎么看
  • 税收的构成要素包含哪些内容
  • 短期借款会计科目使用说明
  • 物业前期开办物资
  • 车辆报废收入如何处理
  • 给员工交的重大医疗保险怎么做分录?
  • 小规模纳税人转成一般纳税人条件
  • 奖金用现金发放违法吗
  • 餐饮增值税发票税率
  • 固定资产报废税费怎么处理
  • 地方水利建设基金税率
  • 即征即退增值税政策
  • 全额抵扣有哪些
  • 企业汽油费会计分录
  • 收入冲正
  • 咨询公司怎么交社保
  • 申报附加专项扣除
  • vpn加速有什么用呢?
  • win10闹钟设置方法
  • 小规模纳税人开票限额是多少
  • 福利费不需要发票
  • Linux系统中Squid代理服务器配置全过程解析
  • 认证未抵扣的发票购买方能开红字信息表吗
  • 固定资产前期费用计入
  • 直线法计提折旧每年都一样吗
  • 哈雷6号
  • yolo xml转txt
  • 该税号缺少必要信息
  • php面向对象的理解
  • windows安装php运行环境
  • setenforce 0命令
  • 个人所得税专项附加扣除标准一览表
  • 土地给人家种了几十年还能要回来吗
  • mysql安装总结
  • 织梦如何使用
  • 土地出让金抵扣进项税
  • 增值税发票红字发票未抵扣怎么开
  • 普通的增值税
  • 专利年费的滞纳金怎么做账
  • 企业哪些增值税免征
  • 暂估入账的固定资产,待办理竣工决算手续后
  • access数据库用户名和密码
  • 一般纳税人无票收入填在哪一栏
  • 契税是指什么?
  • 个税专项附加扣除什么意思
  • 企业销售已使用的车辆
  • 滴滴电子普通发票能抵扣进项税吗
  • 材料成本差异的含义
  • 加盖发票专用章有效什么意思
  • 做账工资和申报工资不一样有风险吗
  • 电梯广告租赁属于什么服务
  • 股东是否实缴出资的举证责任
  • 贸易公司的成本怎么做
  • 会展费会计分录
  • 小规模纳税人不超过10万免增值税
  • sql空值用什么表示
  • windows隐藏文件夹开启
  • win10系统qq语音说话无声音
  • win7系统开机蓝屏0x0000007b
  • tr linux 命令
  • win10应用商店是灰的
  • realshed.exe - realshed是什么进程 有什么用
  • windows10保存的文件一般在哪里
  • HTML文档中的头部(head)内容一般包含什么
  • shell脚本的fi
  • 【新功能】“回调特性”的使用教程:
  • shell脚本编写的基本知识
  • ADB not responding. You can wait more,or kill"abd.exe" process manually and click 'Restar
  • 国家税务总局广州市税务局
  • 如何在电子税务局添加办税人员
  • 晋江劳动局地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设