1. Ergebnisse erzielen2. Backend-Implementierung2.1 Entitätsklasse@Daten @ApiModel(Beschreibung = "Datenwörterbuch") @Tabellenname("dict") öffentliche Klasse Dict { private statische endgültige lange SerialVersionUID = 1L; @ApiModelProperty(Wert = "id") private lange ID; @ApiModelProperty(Wert = "Erstellungszeit") @JsonFormat(Muster = "jjjj-MM-tt HH:mm:ss") @TableField("Erstellungszeit") privates Datum, Erstellungszeit; @ApiModelProperty(Wert = "Aktualisierungszeit") @TableField("Aktualisierungszeit") privates Datum, Aktualisierungszeit; @ApiModelProperty(value = "Logische Löschung (1: gelöscht, 0: nicht gelöscht)") @TableLogic @TableField("ist_gelöscht") private Integer isDeleted; @ApiModelProperty(Wert = "andere Parameter") @Tabellenfeld(existiert = falsch) private Map<String,Objekt> param = neue HashMap<>(); @ApiModelProperty(Wert = "überlegene ID") @TableField("übergeordnete_ID") private lange übergeordnete ID; @ApiModelProperty(Wert = "Name") @Tabellenfeld("Name") privater String-Name; @ApiModelProperty(Wert = "Wert") @TableField("Wert") privater String-Wert; @ApiModelProperty(Wert = "Kodierung") @Tabellenfeld("dict_code") privater String dictCode; @ApiModelProperty(value = "Ob untergeordnete Knoten eingeschlossen werden sollen") @Tabellenfeld(existiert = falsch) privater Boolescher Wert hat Kinder; } Das Obige muss eine hasChildren-Eigenschaft enthalten, auch wenn diese nicht in der Datenbank vorhanden ist. Dies wird vom Element-Framework benötigt. 2.2 Datenstruktur in der Datenbank2.3 Backend-SchnittstelleWenn die Implementierung vollständig auf dem Backend erfolgt, schreiben Sie einfach eine rekursive Abfrage, um alle Daten entsprechend der hierarchischen Struktur abzufragen und zu kapseln. Aber die Tabellenkomponente des Elements hat einige Dinge für uns gekapselt. Wir müssen hier nur die Unterdatenliste entsprechend der übergeordneten ID abfragen. Controllercode: //Frage die Unterdatenliste entsprechend der übergeordneten ID ab @ApiOperation(value = "Frage die Unterdatenliste entsprechend der übergeordneten ID ab") @GetMapping("findChildData/{id}") öffentliches Ergebnis findChildData(@PathVariable Long id){ List<Dict> Liste = dictService.findChildData(id); gibt Result.ok(Liste) zurück; } Service Serviceimplementierungsklasse @Service öffentliche Klasse DictServiceImpl erweitert ServiceImpl<DictMapper, Dict> implementiert DictService { //Frage die Unterdatenliste entsprechend der übergeordneten ID ab @Override öffentliche Liste<Dict> findChildData(Long id) { QueryWrapper<Dict> Wrapper = neuer QueryWrapper<>(); wrapper.eq("übergeordnete_id",id); Liste<Dict> Liste = baseMapper.selectList(Wrapper); //Setze hasChildren für jedes Dict-Objekt in der Listensammlung Liste.fürJedes(x->{ Lange dictId = x.getId(); boolean istKind = dies.istKinder(dictId); x.setHasChildren(isChild); }); Liste zurückgeben; } //Beurteilen, ob unter der ID untergeordnete Daten vorhanden sind private boolean isChildren(Long id){ QueryWrapper<Dict> Wrapper = neuer QueryWrapper<>(); wrapper.eq("übergeordnete_id",id); Integer-Anzahl = baseMapper.selectCount(Wrapper); Rückgabewert > 0; } } 2.4 Swagger testet, ob die Backend-Struktur und -Funktion normal sind3. Frontend-Implementierung3.1 Einführung der el-table-Komponente in die SeiteListe.vue <Vorlage> <div Klasse="App-Container"> <el-Tabelle :data="Liste" Stil="Breite: 100%" Zeilenschlüssel="id" Grenze faul :load="Kinder abrufen" :tree-props="{Kinder: 'Kinder', hatKinder: 'hatKinder'}"> <el-table-column label="Name" width="230" align="left"> <template slot-scope="Umfang"> <span>{{ Umfang.Zeilenname }}</span> </Vorlage> </el-Tabellenspalte> <el-table-column label="Kodierung" width="220"> <template slot-scope="{row}"> {{ row.dictCode }} </Vorlage> </el-Tabellenspalte> <el-table-column label="Wert" width="230" align="links"> <template slot-scope="Umfang"> <span>{{ Umfang.Zeile.Wert }}</span> </Vorlage> </el-Tabellenspalte> <el-table-column label="Erstellungszeit" align="center"> <template slot-scope="Umfang"> <span>{{ Umfang.Zeile.ErstellenZeit }}</span> </Vorlage> </el-Tabellenspalte> </el-Tabelle> </div> </Vorlage> <Skript> importiere dict von '@/api/dict' Standard exportieren { Namensliste', Daten(){ zurückkehren { list:[], //Datenwörterbuch-Liste-Array dialogImportVisible:false, //Festlegen, ob das Popup-Fenster angezeigt wird} }, erstellt() { dies.getDictList(1) }, Methoden:{ //Datenwörterbuchliste getDictList(id){ dict.dictList(id) .dann(Antwort=>{ diese.Liste=Antwort.Daten }) }, getChildrens(Baum, Baumknoten, auflösen) { dict.dictList(Baum.id).dann(Antwort => { auflösen(Antwort.Daten) }) }, } } </Skript> <Stilbereich> </Stil> Die oben genannte Schlüsselmethode ist die Methode getChildrens, die die Backend-Schnittstelle auf jeder Ebene aufruft, um die Daten des untergeordneten Knotens abzufragen und sie den Tabellendaten in der Baumstruktur hinzuzufügen. Die Tool-JS-Datei dict.js, die die Backend-Struktur aufruft Importieren Sie die Anforderung von „@/utils/request“. Standard exportieren { //Datenwörterbuchliste dictList(id){ Rückgabeanforderung({ URL: `/admin/cmn/dict/findChildData/${id}`, Methode: 'get' }) }, } 3.2 ImplementierungseffektBei den Frontend- und Backend-Tests gibt es keine Probleme. Da Lazy Loading zum Einsatz kommt, werden die Daten des Child-Node erst geladen, wenn auf den Parent-Node geklickt wird. So wird ein Einfrieren des Systems aufgrund zu großer Datenmengen vermieden. Dies ist das Ende dieses Artikels über die Implementierung von Baumstrukturtabellen und Lazy Loading durch Vue elementUI. Weitere verwandte Inhalte zu Vue elementUI finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Adaptive Breitentabelle für HTML-Seiten
Inhaltsverzeichnis Symboldatentyp Der Grund, waru...
Grundlegende Umgebungskonfiguration Bitte kaufen ...
Da Raspberry Pi auf der ARM-Architektur basiert, ...
Auf die Vorteile von Typescript müssen wir nicht ...
Nach der Installation der neuesten Version 8.0.11...
Ich bin bei der Arbeit auf einen Fall gestoßen, ü...
Die Abfragedaten in der XML-Preisabfrage enthalte...
Heute habe ich einen kleinen Vorgeschmack auf IE8...
Nach der Installation von Navicat Der folgende Fe...
1. Einleitung Im Projekt wird MySQL verwendet. Ic...
● Ich hatte vor, einige Cloud-Daten zu kaufen, um...
Vorwort Ich bin ein PHP-Programmierer, der als Pr...
Bei der Installation von MySQL 8.0 auf einem Win1...
Inhaltsverzeichnis Überblick 1. Kompositions-API ...
Inhaltsverzeichnis 1. Daten vorbereiten Erstellen...