Vue elementUI implementiert Baumstrukturtabelle und Lazy Loading

Vue elementUI implementiert Baumstrukturtabelle und Lazy Loading

1. Ergebnisse erzielen

2. Backend-Implementierung

2.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 Datenbank

2.3 Backend-Schnittstelle

Wenn 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 sind

3. Frontend-Implementierung

3.1 Einführung der el-table-Komponente in die Seite

Liste.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 Implementierungseffekt

Bei 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:
  • Detaillierte Erläuterung der verschachtelten Tabelle im Vue-ElementUI-Formular und der Überprüfung jeder Zeile
  • Die Vue-Komponentenbibliothek ElementUI realisiert den Paging-Effekt einer Tabellenliste
  • Vue + ElementUI-Tabelle realisiert Tabellenpaging
  • Vue + elementUI realisiert das Filtern und Hervorheben von Tabellenschlüsselwörtern
  • Vue2.0+ElementUI implementiert ein Beispiel zum Umblättern einer Tabelle
  • Detaillierte Erklärung der ElementUI-Tabelle basierend auf Vue

<<:  SQL-Abfrage für Benutzer, die an mindestens sieben aufeinanderfolgenden Tagen Bestellungen aufgegeben haben

>>:  Adaptive Breitentabelle für HTML-Seiten

Artikel empfehlen

JavaScript zum Erzielen eines Akkordeoneffekts

In diesem Artikel wird der spezifische Code für J...

Schritte zum Übertragen des neuen Kernels auf das Linux-System

1. Laden Sie das Ubuntu16.04-Image und den entspr...

Lösen Sie das Problem des Syn Flooding in der MySQL-Datenbank

Der SYN-Angriff ist die häufigste und am leichtes...

JS-Implementierung des Karussell-Karussell-Falls

In diesem Artikelbeispiel wird der spezifische JS...

Bringen Sie Ihnen bei, wie Sie eine Reaktion aus HTML implementieren

Was ist React React ist eine einfache JavaScript-...

202 kostenlose, hochwertige XHTML-Vorlagen (2)

Nach dem vorherigen Artikel 202 kostenlose hochwe...

MySQL REVOKE zum Löschen von Benutzerberechtigungen

In MySQL können Sie mit der REVOKE-Anweisung best...

Vue+Openlayer verwendet modify, um den gesamten Code des Elements zu ändern

Vue+Openlayer verwendet „modify“, um Elemente zu ...

JavaScript-Grundlagen für Schleife und Array

Inhaltsverzeichnis Schleife - für Grundlegende Ve...