Die Elementbaumsteuerung integriert ein Dropdown-Menü mit Symbolen (Baum+Dropdown+Eingabe)

Die Elementbaumsteuerung integriert ein Dropdown-Menü mit Symbolen (Baum+Dropdown+Eingabe)

Dieser Artikel beschreibt hauptsächlich: Benutzerdefinierte Baumsteuerung <el-tree>

Anforderungen:

Die von der offiziellen Website von Element UI bereitgestellten Baumsteuerungen umfassen grundlegende, auswählbare, benutzerdefinierte Knoteninhalte, Knotenfilterung und ziehbare Knotenbaumstrukturen wie folgt:

Bildbeschreibung hier einfügen

Der gewünschte Effekt ist ein Baum, der Sucheffekte unterstützt. Wenn Sie mit der Maus darüber fahren, werden die Symbole zum Hinzufügen und Ändern angezeigt. Wenn Sie auf das Symbol klicken, wird die entsprechende Seite angezeigt. Vor jedem Ordner wird ein benutzerdefiniertes Symbol hinzugefügt.

Ergebnis:

Bildbeschreibung hier einfügen

Implementierungsschritte:

1. Slots nutzen

<el-col :span="4" :xs="24">
   <!--Verzeichnissuchfunktion-->
  <div Klasse="Kopf-Container">
    <el-Eingabe
      v-model="dirNameCn"
      Platzhalter="Bitte geben Sie den Verzeichnisnamen ein"
      löschbar
      Größe="klein"
      Präfix-Symbol = "el-icon-search"
      Stil="Rand unten: 20px"
    />
  </div>
  <!--Baumanzeige-->
  <div Klasse="Kopf-Container">
    <el-Baum
      :data="dirTreeOptions"
      :props="StandardProps"
      :Erweitern beim Klicken auf Knoten="false"
      :filter-node-method="Filterknoten"
      ref="Baum"
      Standardmäßig alles erweitern
      @node-click="Klick auf Knoten handhaben"
      Symbolklasse = "el-icon-folder-opened"
      Knotenschlüssel="id"
      :Überprüfung beim Klicken auf Knoten="true"
    >
      <!--Versteckte neue Symbole-->
      <span class="custom-tree-node" slot-scope="{ Knoten, Daten }" @mouseenter="mouseenter(Daten)" @mouseleave="mouseleave(Daten)">
        <span>{{ node.label }}</span>
        <div>
          <i v-show="data.show" Klasse="el-icon-circle-plus" Stil="Farbe: #00afff" @click="addDial(Knoten, Daten)"/>
          <!--Ausgeblendete Dropdown-Auswahl-->
          <el-dropdown trigger="Klick" placement="rechts" @command="(command) => {handleCommand(command)}">
            <i v-show="data.show" Klasse="el-icon-more" Stil="Farbe: #D3D3D3"/>
            <el-dropdown-menu slot="Dropdown">
              <el-dropdown-item command="a">Umbenennen</el-dropdown-item>
              <el-dropdown-item command="b">Löschen</el-dropdown-item>
            </el-Dropdown-Menü>
          </el-dropdown>
        </div>
      </span>
    </el-Baum>
  </div>
</el-col>

2. Entsprechende JS-Komponenten

Hinweis: Die Baumdaten werden vom Backend abgefragt und in dirTreeOptions gespeichert

<Skript>
  Standard exportieren {
    Name: "reqmdoctree",
    Daten() {
      zurückkehren {
        // Der Inhalt des linken Suchfeldes dirNameCn: '',
       	// Verzeichnisbaumoptionen dirTreeOptions: undefiniert,
        Standardeigenschaften: {
          Kinder: "Kinder",
          Bezeichnung: "Bezeichnung"
        },
        // Ob es im Baummenü einen untergeordneten Knoten gibt yesChild: undefiniert,
        // Kontrollieren Sie das neu hinzugefügte Eingabeaufforderungsinformationsfeld auf der linken Seite show: 0,
        // Abfrage der Informationsparameter des Anforderungsdokuments queryParams: {
          docNo: undefined, // Dokumentnummer docNameEn: undefined, // Englischer Dokumentname dirNo: undefined, // Verzeichnisnummer current: 1, // Aktuelle Seitengröße: 20 // Wie viele Elemente werden pro Seite angezeigt },
        treeId: undefiniert,
      }
    },
    Methoden: {
      /**Frage die Dropdown-Baumstruktur des gewünschten Verzeichnisses ab*/
      getTreeselect() {
        treeselect().dann(Antwort => {
          this.dirTreeOptions = Antwort.Daten
        })
      },
      // Suchwert ist Filterfunktion filterNode(value, data) {
        wenn (!Wert) true zurückgibt
        gibt data.label.indexOf(Wert) zurück !== -1
      },
      // Rückruffunktion, wenn auf den Knoten geklickt wird handleNodeClick(data) {
        // konsole.log(Daten)
        diese.treeId = data.id
        dies.yesChild = Daten.Kinder
        this.queryParams.dirNo = Daten.id
        dies.getList()
      },
      //Ereignisse von drei Punkten im Baum handleCommand(command) {
        wenn (Befehl == 'a') {
          Wählen SieReqNo(this.treeId).then(response => {
            diese.uuid = antwort.msg
            getObjTree(Antwort.msg).dann(Antwort => {
              dieses.Formular = Antwort.Daten
              dies.öffnen = wahr
              this.title = 'Konfigurationstabelle des Anforderungsdokumentverzeichnisses ändern'
            })
          })
        }
        wenn (Befehl == 'b') {
          wenn (this.yesChild != undefiniert) {
            dies.$notify.error({
              Titel: 'Warnung',
              Meldung: „In diesem Verzeichnis gibt es andere Ordner“
            })
          } anders {
            Wählen SieReqNo(this.treeId).then(response => {
              diese.uuid = antwort.msg
              this.$confirm('Möchten Sie das Datenelement mit der ID ' + this.uuid + ' wirklich löschen?', 'Warnung', {
                confirmButtonText: 'Bestätigen',
                cancelButtonText: 'Abbrechen',
                Typ: "Warnung"
              }).dann(()=>{
                gibt delObjTree(this.uuid) zurück
              }).dann(Daten => {
                dies.getTreeselect()
                this.msgSuccess('Erfolgreich gelöscht')
              }).catch(Funktion() {
              })
            })
          }
        }
      },
      // Erstelle links ein neues Verzeichnis/eine neue Datei addDial(node, data) {
        // konsole.log(Knoten, '---', Daten)
        dies.reset()
        this.form.dirParentId = Daten-ID
        dies.öffnen = wahr
        this.title = 'Konfigurationstabelle für Anforderungsdokumentverzeichnis hinzufügen'
      },
      // Symbol anzeigen, wenn die Maus nach links bewegt wird mouseenter(data){
        dies.$set(Daten, 'anzeigen', wahr)
      },
      // Das Symbol wird nicht angezeigt, wenn die linke Maustaste den Mauszeiger verlässt mouseleave(data){
        dies.$set(Daten, 'anzeigen', falsch)
      },
      //Öffnen Sie hier das neue Ressourcen-Popup-Fenster......
    }
  }
</Skript>

veranschaulichen:

Referenzdokumente: Element-UI, Tree-Control, integrierte Dropdown-Auswahl

Dies ist das Ende dieses Artikels über die Elementbaumsteuerung, die Dropdown-Menüs mit Symbolen integriert (Baum+Dropdown+Eingabe). Weitere Inhalte zum Element-Dropdown-Menü mit Symbolen 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:
  • Lösung für unvollständige Textanzeige im El-Tree
  • Im Vorstellungsgespräch müssen Fragen zur Set-Implementierungsklasse gestellt werden: TreeSet
  • C++-Implementierung von KDTree mit vollständigem Code
  • JDK-Sammlung Quellcode-Analyse TreeMap (Teil 2)
  • JDK-Sammlung Quellcode-Analyse TreeMap (I)
  • ConcurrentHashMap analysieren: Rot-Schwarz-Baum-Proxy-Klasse (TreeBin)
  • Über das Wertübertragungsproblem zwischen Antd-Baum und übergeordneten und untergeordneten Komponenten (Reaktionszusammenfassung)
  • C# TreeNode-Fallstudie

<<:  Beispielcode für das MySQL-Indexprinzip ganz links

>>:  So importieren Sie Excel-Dateien in eine MySQL-Datenbank

Artikel empfehlen

Lösung für mehrere 302-Antworten im Nginx-Proxy (Nginx Follow 302)

Proxying mehrerer 302er mit proxy_intercept_error...

Tipps zur Verwendung von Frameset zum Zentrieren des Breitbilds

Code kopieren Der Code lautet wie folgt: <fram...

Lösung für das Problem des verstümmelten Codes in MySQL 5.x

MySQL ist eine häufig verwendete Open-Source-Date...

Detaillierte Erläuterung der MySQL-Transaktionsisolationsebene und des MVCC

Inhaltsverzeichnis Transaktionsisolationsebene Be...

Zusammenfassung gängiger Befehle zur Linux-Benutzer- und Gruppenverwaltung

Dieser Artikel fasst die allgemeinen Befehle zur ...

Jenkins verpackt Microservices, um Docker-Images zu erstellen und auszuführen

Inhaltsverzeichnis Umgebungsvorbereitung Start 1....

WeChat Mini-Programm: Position des Videofeuers zufällig

In diesem Artikel wird der spezifische Code zur z...

Umfassende Analyse von Prototypen, Prototypobjekten und Prototypketten in js

Inhaltsverzeichnis Prototypen verstehen Prototypo...

Beispielcode zum Bereitstellen eines Spring-Boot-Projekts mit Docker

1. Grundlegender Spring-Boot-Schnellstart 1.1 Sch...

Beispielcode für mehrere Elementtabellen, um synchrones Scrollen zu erreichen

Element UI implementiert mehrere Tabellen, die gl...

Wie löst Vue das domänenübergreifende Problem des Axios-Request-Frontends?

Inhaltsverzeichnis Vorwort 1. Warum treten domäne...

Detaillierte Untersuchung der MySQL-Mehrversions-Parallelitätskontrolle MVCC

MVCC MVCC (Multi-Version Concurrency Control) ist...