ECharts小程序应用中树图的,后端处理成为树图指定格式的json

26 篇文章 0 订阅
19 篇文章 0 订阅

最近小程序中通用到了ECharts中的树图,显示整体销售人员的关系,类似下图:


在ECharts的小程序示例中很好找到,这个demo本身支持指定格式的json绘制树图,但是给后端的处理带来了一定的问题,杨立中给定的json格式是这样的:


这就需要数据库与后端做支持,暂时我的实现方案是这样的:

首先在等级表中记录上级id(PID),根据某一个团队查询出所有人的详细要显示的数据,然后根据pid递归,返回指定格式的json。

代码具体如下:

public function Rank($openId) {
            $res = Db::table('用户表')->where('openid', $openId)->where('approve', '是')->field('teamNo,wx_id')->find();
            if ($res) {
                $mylr = Db::table('等级表')->where('userId', $res['wx_id'])->field('leftId,rightId')->find();
                $team = Db::table('等级表')->where('teamNo', $res['teamNo'])->field('userId,chiefId')->select();
                foreach ($team as $key => $value) {
                   $money = Db::table('用户表')->where('wx_id', $team[$key]['userId'])->field('sumCash,realName')->find();
                    $oldCaptain = floor(($money['sumCash']) * 100) / 100;//保留2位小数处理
                    $oldCaptain = sprintf("%.2f", $oldCaptain);//保留2位小数处理
                    $team[$key]['name'] = $money['realName'] . ':' . $oldCaptain;//拼接‘’姓名:钱数‘’格式
                }
                $abc = $this->get_attr($team, 0);
                return json($abc);
            } else {
                return '不是合伙人';
            }
        
    }


    public function get_attr($a, $pid) {
        $tree = array();                                //每次都声明一个新数组用来放子元素  
        foreach ($a as $v) {
            if ($v['chiefId'] == $pid) {                      //匹配子记录  
                $v['children'] = $this->get_attr($a, $v['userId']); //递归获取子记录  
                if ($v['children'] == null) {
                    unset($v['children']);          //如果子元素为空则unset()进行删除,说明已经到该分支的最后一个元素了(可选)  
                    unset($v['userId']);      
                    unset($v['chiefId']);
                } else {
                    unset($v['userId']);
                    unset($v['chiefId']);
                }
                $tree[] = $v;                           //将记录存入新数组  
            }
        }
        return $tree;                                  //返回新数组  

    }

查询到的json格式为:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值