可搜索并左右切换的穿梭框
开局一张图内容全靠编
思路
使用antd的tree
tree的数据结构就是需要key、title、children、parentId,层级为children
checkedKeys为已选择内容
搜索第一次做的是直接展示包含搜索内容数据,名字可能重复,结果改为了搜索后找到上级所有的children拼接title
右边搜索内容为左边已选的内容,组成一个完整的children,去除未选择内容。
通过选择内容【‘1’,‘2’,‘3’】,找到所在选择内容对象,再写一个递归,把所有对象父级别找出来,直到找父id为空。拿到的数据还是一个数组,这个数组内容就是右边需要展示,拿到这个数组去重,在转为tree结构。
代码
弹窗内容
tree内容
处理数据
数据不是我想要的需要操作一波
而且需求是2个分类,一个系统分类和一个自定义分类
修改参数名和拼接一波数据
搜索内容处理
- 扁平化数组
- 根据选择内容找出所在内容
- 删除children(不然内容还有下级)
- js递归children数组,根据parentId往上查找数据,直到找到parentId为空
- 因为影响到数据源了,图方便直接又深拷贝了一份数据
- 拿到数据去重,再转为tree,遍历拼接上级title
- 因为有2个分类,所以有个数据有‘->’拼接title内容
- 再次遍历数据去重,优先保留带有‘->’title内容
搜索后,勾选或取消的时候,需要判断增加还是去除上级children的key