gpt4 book ai didi

ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

假设数据库中会计科目数据表的字段为:id,code,name,islast。分别为自增主键,科目编码,科目名称,是否为末级("1"表示末级科目).

这里在Thinkphp的模型层中使用递归来构建ComboTree所需的数据,代码及注解如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
namespace Home\Model;
use Think\Model;
 
class AccountModel extends Model{
 
  public function getTreeList(){ 
   $data = $ this ->field( 'id,code,name,islast' )->select();
   foreach($data as &$v){        //这里加入了元素pid,用来标识父级id的   
    $len = strlen($v[ 'code' ]);
    if ($len == 3){           //这里假设长度为3位的科目编码是一级,5位为二级科目,7位为三级,以此类推
     $v[ 'pid' ] = 0;
    } else {
     $v[ 'pid' ] = substr($v[ 'code' ],0,$len-2);
   
   }
   return $ this ->createTree($data); //生成ComboTree所需的数据结构
  }
 
  //递归的方式生成子树
  private function createSubTree($data,$pid){
   $tree = array();
   foreach($data as $k=>$v){
    if ($v[ 'pid' ] == $pid){
     $newDate = array(
      'id' => $v[ 'id' ],
      'text' =>$v[ 'name' ],
      'state' =>($v[ 'islast' ] != 1)? 'closed' : 'open'
     );
     if ($v[ 'islast' ] != 1){         //如果不是末级科目调用自身生成子数据
      $subData = $ this ->createSubTree($data,$v[ 'code' ]);
      if (!empty($subData)){
       $newDate[ 'children' ] = $subData; 
      }
     }
     array_push($tree,$newDate);
    }  
   }
   return $tree;
  }
 
  //生成树,先从一级会计科目分类开始创建树形菜单数据
  private function createTree($data){ 
   $ret = array();
   foreach($data as $k => $v){
    if ($v[ 'pid' ] == 0){
     $newDate = array(  //创建为ComboTree能够识别的格式,这里我没有更好的办法了,只能这样处理
      'id' => $v[ 'id' ],
      'text' =>$v[ 'name' ],
      'state' => 'closed'
     );
     $subData = $ this ->createSubTree($data,$v[ 'code' ]);
     if (!empty($subData)){
      $newDate[ 'children' ] = $subData; 
     }
     $ret[] = $newDate;
    }   
   }
   return $ret;
 
}

类似上述的数据(如部门,地区等)需要构建树形菜单的简单修改代码后基本都能实现类似功能.

以上这篇ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

最后此篇关于ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法的文章就讲到这里了,如果你想了解更多关于ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com