ThinkPHP verwendet EasyUI, um das Buchhaltungsbaummenü zu implementieren

*文
Freigeben: 2023-03-19 06:16:01
Original
1776 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Implementierungsmethode von ThinkPHP und EasyUIs ComboTree zum Generieren eines Buchhaltungskontobaummenüs erläutert. Teilen Sie es als Referenz mit allen. Ich hoffe, es hilft allen.

Angenommen, die Felder der Buchhaltungsdatentabelle in der Datenbank lauten: ID, Code, Name, islast. Dabei handelt es sich um den automatisch inkrementierenden Primärschlüssel, den Kontocode, den Kontonamen und darum, ob es sich um das Konto der letzten Ebene handelt („1“ gibt das Konto der letzten Ebene an).

Hier wird Rekursion in der Modellebene von Thinkphp verwendet, um die für ComboTree erforderlichen Daten zu erstellen. Der Code und die Anmerkungen lauten wie folgt:

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;
 }  
}
Nach dem Login kopieren

Ähnlich Die oben genannten Daten (z. B. Abteilungen, Regionen usw.) können grundsätzlich ähnliche Funktionen erreichen, indem einfach der Code geändert wird, um ein Baummenü zu erstellen.

Verwandte Empfehlungen:

Detaillierte Beispiele für thinkphp5 URL- und Routing-Funktionen

So stellen Sie eine Verbindung zu einer verteilten Datenbank in Thinkphp her

Ersetzen Sie die Eintragsdatei in thinkphp3.2

Das obige ist der detaillierte Inhalt vonThinkPHP verwendet EasyUI, um das Buchhaltungsbaummenü zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!