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
In diesem Artikel wird der spezifische Code für J...
1. Laden Sie das Ubuntu16.04-Image und den entspr...
PS: Ich habe kürzlich das Nginx-Kapitel von <&...
Der vollständige Code lautet wie folgt : HTML Quel...
Inhaltsverzeichnis 1. Einführung in MHA 1. Was is...
Der SYN-Angriff ist die häufigste und am leichtes...
Die kleinste Planungseinheit in k8s --- pod Im vo...
In diesem Artikelbeispiel wird der spezifische JS...
Was ist React React ist eine einfache JavaScript-...
Nach dem vorherigen Artikel 202 kostenlose hochwe...
In MySQL können Sie mit der REVOKE-Anweisung best...
Vue+Openlayer verwendet „modify“, um Elemente zu ...
Inhaltsverzeichnis Schleife - für Grundlegende Ve...
Inhaltsverzeichnis Einführung Wirkung Prinzip bil...
Während der Entwicklung bin ich auf eine solche An...