antd-vue中树结构显示 在线数/总数,实现在线人员绿色高亮,排序在前。(超难)

前言

最近开发中,遇到了一个需求,需要使用到antd-vue下的Tree组件。需要实现的功能点如下:
1.树结构是部门的组织机构,包含的有部门内容和人员。
2.每个树节点标题需要显示(在线人数/总数)的格式。
3.对于在线人员,需要图标点亮,并且排序在最上方展示。对于离线人员,需要图标暗掉。
具体的需求图如下
antd-vue中树结构显示 在线数/总数,实现在线人员绿色高亮,排序在前。(超难)_第1张图片

下面,Yan会逐个讲解每个需求,并且怎么实现的。

需求1:实现每个标题显示(在线/总数)格式

我们首先分析一下:
1.既然需要在标题上面显示新的字样,那么一定用到了插槽,而在Tree组件中有一个
,这个可以实现我们在标题上显示(0/20)的字样。
2.我们肯定是需要知道后端返回的数据格式,可以初步知道一定是一个嵌套children的格式,
{
title:“xxx”,
key:"xxx",
children:[{},{}]
}
除此之外,后端可能还会在数据中加入其他字段,不难想出,我们这个功能是需要到后端有isOnline这个属性的,一会儿我们看一下后端的数据来进行验证我们的猜想,也会对我们后端数据字段进行一个解释。
3.明白了需要后端数据支持后,我们也不难想出,我们前端需要封装一个方法计算出我们的在线人数以及总人数,然后再给模板中使用。
好的,那我们开始吧。
  1. 分析后端返回的数据字段:

antd-vue中树结构显示 在线数/总数,实现在线人员绿色高亮,排序在前。(超难)_第2张图片

  1. 实现Tree标题有 0/20 的字样,并且每个节点有图标。


     //1.标题插槽  在这个插槽里可以设置标题之后的(0/100)字样                
    
    //2.图标插槽  这个插槽可以实现我们的每个标题前面所展示的图标
     


//1.运用antd-vue的这些插槽之后,我们就初步实现了每个节点标题中都有(0/20)的字样。
//2.当然,我们顺便把人员在线不在线的图标给准备好,之后我们会根据在线状态,动态的让他们切换起来。
//3.现在全是静态,效果如下。

静态效果:

antd-vue中树结构显示 在线数/总数,实现在线人员绿色高亮,排序在前。(超难)_第3张图片
  1. 静态的已经实现了,那么现在我们着手动态的怎么让(0/20)计算起来,形成真正的数据。

并且我们的图标现在不会根据在线/不在线切换成对应的颜色。

让动态展示起来数据是有点麻烦的,我们先做简单的让图标动态切换起来。
                        
                            
                               //这里先让图标切换起来
                            
                        '

//重点解释: