可搜索并左右切换的穿梭框

2,715 阅读1分钟

可搜索并左右切换的穿梭框

开局一张图内容全靠编

屏幕录制2023-05-17 15.gif

思路

使用antd的tree
tree的数据结构就是需要key、title、children、parentId,层级为children
checkedKeys为已选择内容
搜索第一次做的是直接展示包含搜索内容数据,名字可能重复,结果改为了搜索后找到上级所有的children拼接title
右边搜索内容为左边已选的内容,组成一个完整的children,去除未选择内容。
通过选择内容【‘1’,‘2’,‘3’】,找到所在选择内容对象,再写一个递归,把所有对象父级别找出来,直到找父id为空。拿到的数据还是一个数组,这个数组内容就是右边需要展示,拿到这个数组去重,在转为tree结构。

代码

弹窗内容

image.png

tree内容

image.png

image.png

处理数据

数据不是我想要的需要操作一波

image.png

而且需求是2个分类,一个系统分类和一个自定义分类
修改参数名和拼接一波数据

image.png

image.png

搜索内容处理

  • 扁平化数组
  • 根据选择内容找出所在内容
  • 删除children(不然内容还有下级)
  • js递归children数组,根据parentId往上查找数据,直到找到parentId为空
  • 因为影响到数据源了,图方便直接又深拷贝了一份数据
  • 拿到数据去重,再转为tree,遍历拼接上级title
  • 因为有2个分类,所以有个数据有‘->’拼接title内容
  • 再次遍历数据去重,优先保留带有‘->’title内容 image.png

image.png

image.png

image.png

image.png

image.png

搜索后,勾选或取消的时候,需要判断增加还是去除上级children的key

image.png