So verwenden Sie Vue+ElementUI Tree

So verwenden Sie Vue+ElementUI Tree

Die Verwendung von Vue + ElementUI Tree dient zu Ihrer Information. Der spezifische Inhalt ist wie folgt

Front-End-Code

<Vorlage>
    <div>
        <el-dialog title="Terminal-Adressbuch" :visible.sync="isOpen" class="el-dialog-mini">
            <div Klasse="Formulare-Menü-Con">
                <!-- 
                    check-on-click-node: Legen Sie fest, ob das Kontrollkästchen beim Auswählen chinesischer Zeichen aktiviert werden soll. Requisiten: Definieren Sie die Übereinstimmung zwischen dem Knoten und dem von Ihnen angegebenen Feld (z. B. entspricht der Name dem aus der Datenbank abgefragten Namensattribut).
                    data: Daten im Baum, wo die Felder angepasst und weitere Geschäftsfelder hinzugefügt werden können. Beim Klicken wird die Funktion aufgerufen, um den Wert abzurufen. node-key: unique, was bedeutet, welches Feld als eindeutiger Bezeichner verwendet wird, wenn der Knoten ausgewählt wird. render-content: Inhaltsrendering. Wenn Sie dem Baummenü Symbole und andere Stile hinzufügen möchten, verwenden Sie dieses Attribut und konfigurieren Sie eine Rendering-Funktion. check-change: Wenn sich der Status des Kontrollkästchens ändert, wird die Funktion ausgelöst. Dies wird hauptsächlich für Einzelauswahlvorgänge und Geschäftsverarbeitung verwendet. show-checkbox: Kontrollkästchen anzeigen. highlight-current: ausgewählten Knoten hervorheben. check-strictly: Wenn das Kontrollkästchen angezeigt wird, ob die Praxis, dass übergeordnete und untergeordnete Knoten nicht miteinander in Beziehung stehen, strikt befolgt werden soll. Der Standardwert ist false
                 -->
                <el-tree :data="treeData" :props="treeProps" :check-strictly="true" node-key="id" ref="treeForm" :render-content="renderContent" @check-change="handleClick" show-checkbox highlight-current class="addtree" style="height:275px;">
                </el-Baum>
                <el-col Klasse="Formularsuche Spalte-Mitte">
                    <el-button @click="senden">
                        <i class="ump-save" style="font-size:15px;"></i>OK</el-button>
                    <el-button @click="schließen">
                        <i class="ump-quxiao3" style="font-size:16px;"></i>Schließen</el-button>
                </el-col>
            </div>
        </el-dialog>
    </div>
</Vorlage>

<Skript>
Standard exportieren {
    Daten() {
        zurückkehren {
            isOpen: false,
            ifonlyTerminal: 1,
            Baumdaten: [],
            Baumeigenschaften: {
                Bezeichnung: "Bezeichnung",
                Kinder: 'Kinder',
                deaktiviert: this.disabledFn
            }
        }
    },
    Methoden: {
        disabledFn(Daten, Knoten) {
            gibt data.nodeType == 0 zurück;
        },
        handleClick(Daten, geprüft, Knoten) {
            sei $this = dies;
            wenn (aktiviert) {
                konsole.log(Daten);
                /** Dieser Knoten ist immer eine Einzelauswahl*/
                //$this.$refs.treeForm.setCheckedNodes([Daten]);

    /** Dieser Knoten wird für die Mehrfachauswahl verwendet*/
                $this.$refs.treeForm.setChecked([Daten]);
            }
        },
        renderContent(h, {
            Knoten,
            Daten,
            speichern
        }) {
            zurückkehren ( 
                <span Klasse = "benutzerdefinierter Baumknoten" >
                <span>
                <i Klasse = {data.icon} ></i>
                  { Daten.Beschriftung } 
                </span>
                </span>
            );
        },
        öffnen(Auswahl,ifonlyTerminal) {
            sei $this = dies;
            $this.treeData=[];
            $this.ifonlyTerminal=ifonlyTerminal;
            $this.$httpclient.get("/reminder/getTerminalContacts", {
                ifonlyTerminal: $this.ifonlyTerminal
            }, Funktion (res) {
                wenn (res.success == true) {
                    $this.treeData = res.data;
                    $this.$refs.treeForm.setCheckedKeys(Auswahl);
                } anders {
                    $diese.$nachricht({
                        Meldung: „Initialisierung fehlgeschlagen, Netzwerk verloren …“,
                        Typ: "Fehler"
                    });
                }
            });
            dies.istOpen = wahr;
        },
        einreichen() {
            : Lassen Sie SelectionNode = this.$refs.treeForm.getCheckedNodes();
            lass Liste = [];
            für (let i=0;i<selectionNode.length;i++){
                let item = Auswahlknoten[i];
                Liste.push({
                    id:Artikel-ID,
                    Terminalname:Element.Bezeichnung,
                    Terminalnummer:Element.Terminalnummer,
                    Seriennummer:Artikel.Seriennummer,
                    Terminaltyp:Element.Terminaltyp
                });
            }
            konsole.log(Liste);
            dies.$parent.setTerminals(Liste);
            dies.schließen();
        },
        schließen() {
            dies.isOpen = falsch;
        }
    }
}
</Skript>

Referenzkomponente

<Vorlage>
    <div>
        <el-dialog title="Geplantes Meeting hinzufügen" :visible.sync="addModelOpen" class="el-dialog-large dialogClass">
            <div Klasse="Formulare-Menü März-10">
                <div Klasse="Formulare-Menü-tit">
                    <span>
                        <i class="ump-caidan flt-l" style="color:#2681ec;font-size:20px;margin-top:-3px;"></i>
                        Grundlegende Informationen
                </div>

                <div Klasse="Formulare-Menü-mit Par-T10">
                    <el-Zeile>
                        <el-form :model="addForm" :rules="Regeln" ref="addForm" :inline="true" label-position="rechts">
                            <div Klasse="el-colum-xs12 block">
                                <div Klasse="Formulargruppe el-display">
                                    <el-form-item label="Thema" prop="Titel" style="width:1050px;">
                                        <el-input v-model="addForm.title" placeholder="Bitte geben Sie den Betreff ein"></el-input>
                                    </el-form-item>
                                </div>
                            </div>

                            <div Klasse="el-colum-xs12">
                                <div Klasse="Formulargruppe el-display">
                                    <el-form-item label="Startzeit" prop="startTime" style="margin-top:20px;width:700px;">
                                        <el-date-picker :picker-options="startTimeValid" @change="newValid" v-model="addForm.startTime" type="datetime" format="yyyy-MM-dd hh:mm" value-format="yyyy-MM-dd hh:mm" placeholder="Wählen Sie die Startzeit des Meetings aus"></el-date-picker>
                                    </el-form-item>
                                </div>
                            </div>

                            <div Klasse="el-colum-xs12" Stil="margin-top:20px;">
                                <div Klasse="Formulargruppe">
                                    <el-form-item label="Besprechungsdauer" prop="meetTime">
                                        <el-select v-model="addForm.meetTimeHour" placeholder="Bitte auswählen" style="width:100px;">
                                            <el-option label="0" value="0"></el-option>
                                            <el-option label="1" value="1"></el-option>
                                            <el-option label="2" value="2"></el-option>
                                            <el-option label="3" value="3"></el-option>
                                            <el-option label="4" value="4"></el-option>
                                            <el-option label="5" value="5"></el-option>
                                            <el-option label="6" value="6"></el-option>
                                        </el-Auswahl>
                                        <span style="margin:0px 10px">Stunden</span>
                                        <el-select v-model="addForm.meetTimeMin" placeholder="Bitte auswählen" style="width:100px;">
                                            <el-option label="0" value="0"></el-option>
                                            <el-option label="10" value="10"></el-option>
                                            <el-option label="20" value="20"></el-option>
                                            <el-option label="30" value="30"></el-option>
                                            <el-option label="45" value="45"></el-option>
                                            <el-option label="50" value="50"></el-option>
                                        </el-Auswahl>
                                        <span style="margin:0px 10px">Minuten</span>
                                    </el-form-item>
                                </div>
                            </div>

                            <div Klasse="el-colum-xs12" Stil="margin-top:20px;">
                                <div Klasse="Formulargruppe">
                                    <el-form-item label="Besprechungsdetails" prop="meetDetails" style="width:700px;">
                                        <el-input type="textarea" :rows="3" v-model="addForm.meetDetails" placeholder="Bitte geben Sie die zusammenfassenden Informationen zum Meeting ein..."></el-input>
                                    </el-form-item>
                                </div>
                            </div>

                            <div Klasse="el-colum-xs12 block" Stil="margin-top:20px;">
                                <div Klasse="Formulargruppe el-display">
                                    <el-form-item label="Teilnehmer" prop="noselect" style="width:700px;">
                                        <el-input v-model="terminalNum" placeholder="Bitte geben Sie Ihre Telefonnummer, Terminalnummer und Terminalseriennummer ein und klicken Sie zum Hinzufügen auf die Schaltfläche "OK""></el-input>
                                        <div Klasse="Formularsuche" Stil="Anzeige: inline">
                                            <el-button @click="addTerminal"><i class="el-icon-document-checked" style="font-size:16px;margin-top:6px;"></i>OK</el-button>
                                            <el-button @click="openContactsModel"><i class="el-icon-plus" style="font-size:16px;margin-top:6px"></i>Adressbuch hinzufügen/abbrechen</el-button>
                                        </div>
                                        <el-checkbox-group v-model="ifonlyTerminal">
                                            <el-checkbox label="A">Nur Terminal<span style="color:#44b5ff">(Diese Auswahl umfasst nur Terminals, keine Benutzer)</span></el-checkbox>
                                        </el-checkbox-group>
                                    </el-form-item>
                                    <el-form-item label="Ausgewähltes Terminal/Benutzer" prop="Terminals" style="width:700px;">
                                        <el-input type="textarea" class="textarea" v-model="terminalsInfo" readonly="schreibgeschützt"></el-input>
                                    </el-form-item>

                                </div>
                            </div>

                            <!-- <div class="el-colum-xs12 block" style="margin-top:20px;">
                                <div Klasse="Formulargruppe el-display">
                                    <el-form-item label="Teilnehmer" prop="name" style="width:700px;">
                                        <el-input v-model="terminalNum" placeholder="Bitte geben Sie Ihre Telefonnummer, Terminalnummer und Terminalseriennummer ein und klicken Sie zum Hinzufügen auf die Schaltfläche "OK""></el-input>
                                        <div Klasse="Formularsuche" Stil="Anzeige: inline">
                                            <el-button @click="addTerminal"><i class="el-icon-document-checked" style="font-size:16px;margin-top:6px;"></i>OK</el-button>
                                            <el-button @click="openContactsModel"><i class="el-icon-plus" style="font-size:16px;margin-top:6px"></i>Adressbuch hinzufügen/abbrechen</el-button>
                                        </div>
                                        <el-checkbox-group v-model="ifonlyTerminal">
                                            <el-checkbox label="A">Nur Terminal<span style="color:#44b5ff">(Diese Auswahl umfasst nur Terminals, keine Benutzer)</span></el-checkbox>
                                        </el-checkbox-group>
                                        <el-input Typ="textarea" Klasse="textarea" v-model="terminalsInfo"></el-input>
                                    </el-form-item>
                                </div>
                            </div> -->

                            <div Klasse="el-colum-xs12 block" Stil="margin-top:20px;">
                                <div Klasse="Formulargruppe">
                                    <el-form-item label="Meeting-Einstellungen" prop="sex">
                                        <el-checkbox-group v-model="ifAutoRecord">
                                            <el-checkbox label="A"> <span style="color:#44b5ff">Bei Beginn des Meetings automatisch die teilnehmenden Terminals anrufen</span></el-checkbox><br>
                                        </el-checkbox-group>
                                        <el-checkbox-group v-model="wennAutoCall">
                                            <el-checkbox label="B"> <span style="color:#44b5ff">Automatisch aufzeichnen</span></el-checkbox>
                                        </el-checkbox-group>
                                    </el-form-item>
                                </div>
                            </div>

                            <div Klasse="el-colum-xs12 block" Stil="margin-top:20px;">
                                <div Klasse="Formulargruppe">
                                    <el-form-item label="Cloud-Konferenzraum auswählen" prop="meetRoomId">
                                        <el-form-item label="" style="width:200px;">
                                            <el-select v-model="addForm.meetRoomId" placeholder="Bitte wählen Sie einen Besprechungsraum">
                                                <el-option v-for="Element in Besprechungsräumen" :key="item.id" :label="item.roomName" :value="item.id"></el-option>
                                            </el-Auswahl>
                                        </el-form-item>

                                    </el-form-item>
                                </div>
                            </div>
                            <div Klasse="el-colum-xs12 block" Stil="margin-top:20px;">
                                <div Klasse="Formulargruppe">
                                    <el-col Klasse="Formularsuche Spalte-Mitte">
                                        <el-button @click="senden" :disabled="isDisabled">
                                            <i class="ump-save" style="font-size:15px;"></i>Speichern</el-button>
                                        <el-button @click="schließen">
                                            <i class="ump-quxiao3" style="font-size:16px;"></i>Schließen</el-button>
                                        <br /><br />
                                    </el-col>
                                </div>
                            </div>
                        </el-form>
                    </el-row>
                </div>
            </div>
        </el-dialog>

        <Kontakte ref="contactsModel"></Kontakte>

    </div>
</Vorlage>

<Stil>
.dialogClass .el-dialog {
    Höhe: 690px;
    oben: 50 %;
    Rand oben: -369px !wichtig;
}

.dialogClass .el-dialog .el-dialog__body {
    Höhe: 670px;
}
</Stil>

<Skript>
importiere dateUtil aus '@/common/util.js'
Kontakte aus „@/components/meet/reminder/contacts“ importieren;

Standard exportieren {
    Komponenten:
        Kontakte
    },
    Daten() {
        sei $this = dies;
        let meetTimeTimeValid = Funktion (Regel, Wert, Rückruf) {
            wenn (($this.addForm.meetTimeHour + $this.addForm.meetTimeMin) == 0) {
                callback(new Error('Bitte wählen Sie die Dauer des Meetings aus'));
            }
            Rückruf();
        }

        let terminalsValid = Funktion (Regel, Wert, Rückruf) {
            wenn ($this.addForm.terminals.length == 0) {
                callback(new Error('Bitte wählen Sie das teilnehmende Endgerät/den teilnehmenden Benutzer aus'));
            }
            Rückruf();
        }
        zurückkehren {
            addModelOpen: false,
            Terminalnummer: "",
            ifonlyTerminal: falsch,
            terminalsInfo: "",
            ifAutoRecord: false,
            ifAutoCall: falsch,
            isDisabled: false,
            Treffpunkt: [],
            Formular hinzufügen: {
                Titel: "",
                meetRoomId: "",
                Startzeit: "",
                Zimmernummer: "",
                meetTimeHour: "0",
                meetTimeMin: "20",
                Endzeit: "",
                meetDetails: "",
                ifAutoRecord: "",
                ifAutoCall: "",
                meetPassWord: "",
                controlPassWord: "",
                Terminals: []
            },
            Regeln:
                Titel: [{
                    erforderlich: wahr,
                    Meldung: „Bitte geben Sie das Besprechungsthema ein“,
                    Auslöser: ‚Unschärfe‘
                }],
                meetRoomId: [{
                    erforderlich: wahr,
                    Meldung: „Bitte wählen Sie den Cloud-Konferenzraum aus“,
                    Auslöser: ‚Unschärfe‘
                }],
                Startzeit: [{
                    erforderlich: wahr,
                    Meldung: „Bitte wählen Sie eine Startzeit“,
                    Auslöser: ‚Unschärfe‘
                }],
                TreffenDetails: [{
                    erforderlich: wahr,
                    Meldung: „Bitte geben Sie die Besprechungsdetails ein“,
                    Auslöser: ‚Unschärfe‘
                }],
                Treffpunkt: [{
                    Validator: meetTimeTimeValid,
                    Auslöser: „ändern“
                }],
                Terminals: [{
                    Validator: TerminalsValid,
                    Auslöser: „ändern“
                }]
            },
            startTimeValid: {
                disabledDate: (Zeit) => {
                    Zeit zurückgeben.getTime() <= Date.now();
                }
            }
        }
    },
    montiert() {
        console.log("Willkommen auf der Notfallplattform – Terminbesprechung…");
    },
    Methoden: {
        offen() {
            sei $this = dies;
            $this.$httpclient.get("/reminder/getMeetRooms", {}, Funktion (res) {
                wenn (res.success == true) {
                    $this.meetRooms = res.data;
                } anders {
                    $diese.$nachricht({
                        Meldung: „Der Cloud-Konferenzraum wurde nicht gefunden, das Netzwerk ist verloren gegangen …“,
                        Typ: "Warnung"
                    });
                }
            });
            Dies.addModelOpen = true;
        },
        schließen() {
            this.addModelOpen = falsch;
        },
        neuGültig(){
            dies.$refs["addForm"].validateField('startTime');
        },
        einreichen() {
            sei $this = dies;
            $this.btnStatus = wahr;
            $this.$refs.addForm.validate((gültig) => {
                wenn (gültig && $this.btnStatus) {
                    $this.addForm.ifAutoRecord = $this.ifAutoRecord ? 1 : 0;
                    $this.addForm.ifAutoCall = $this.ifAutoCall ? 1 : 0;
                    für (lass i = 0; i < $this.meetRooms.length; i++) {
                        let item = $this.meetRooms[i];
                        wenn (item.id == $this.addForm.meetRoomId) {
                            $this.addForm.roomNum = Artikel.roomNum;
                        }
                    }
                    $this.$httpclient.post("/Erinnerung", $this.addForm, Funktion (res) {
                        $this.btnStatus = falsch;
                        wenn (res.success == true) {
                            $diese.$übergeordnete.suche();
                            $dies.schließen();
                        } anders {
                            $diese.$nachricht({
                                Meldung: '[Netzwerk beschäftigt],' + res.errorMsg,
                                Typ: "Fehler"
                            });
                        }
                    });
                } anders {
                    $this.btnStatus = falsch;
                    gibt false zurück;
                }
            });
        },
        öffneKontakteModell() {
            lass Liste = [];
            für (lass i = 0; i < this.addForm.terminals.length; i++) {
                Füge die folgenden Schritte aus, um die AddForm-Eigenschaften zu ändern:
                Liste.push(Artikel-ID);
            }
            dies.$refs.contactsModel.open(Liste, dies.ifonlyTerminal ? 1 : 0);
        },
        /** 
         * Diese Funktion wird am Ende der Komponente verwendet. Wenn Sie den Funktionsnamen ändern möchten, * ändern Sie die Codezeile *this.$parent.setTerminals(list);* in der aufrufenden Komponente, um den Ersatz abzuschließen.
   * Es gibt andere Möglichkeiten, wie z. B. das Übergeben von Funktionen vom übergeordneten Container an den untergeordneten Container usw. 
   * Ich verwende diese Methode immer noch gerne, schließlich kann man damit zwei Codezeilen einsparen, haha~~
   */
        setTerminals(Terminals) {
            this.addForm.terminals = Terminals;
            let terminalsInfo = "";
            für (sei i = 0; i < terminals.length; i++) {
                sei terminal = terminals[i];
                terminalsInfo += "『[" + terminal.terminalName + "]-[" + terminal.terminalNum + "]』";
            }
            diese.terminalsInfo = terminalsInfo;
        },
        addTerminal() {
            sei $this = dies;
            Lassen Sie Terminals = $this.addForm.terminals;

            lass flag = wahr;
            für (sei i = 0; i < terminals.length; i++) {
                lass Element = Terminals[i];
                wenn (item.terminalNum == $this.terminalNum || item.serialNum == $this.terminalNum) {
                    Flagge = falsch;
                    $this.terminalNum = "";
                    $diese.$nachricht({
                        Meldung: „Das aktuelle Terminal wurde ausgewählt, es muss nicht erneut hinzugefügt werden.“,
                        Typ: "Warnung"
                    });
                    brechen;
                }
            }

            wenn (Flagge) {
                $this.$httpclient.get('/terminal/getTerminal', {
                    Terminalnummer: $this.terminalNum
                }, Funktion (res) {
                    wenn (res.success == true) {
                        let terminal = res.data;
                        : Terminals.push(Terminal);
                        $this.terminalsInfo += "『[" + terminal.terminalName + "]-[" + terminal.terminalNum + "]』";
                        $this.terminalNum = "";
                    } anders {
                        $diese.$nachricht({
                            Meldung: 'Das aktuelle Terminal wurde nicht gefunden, bitte überprüfen Sie sorgfältig, ob Sie es richtig eingegeben haben..',
                            Typ: "Warnung"
                        });
                    }
                });
            }

        }
    }
}
</Skript>

Gibt das JSON-Datenformat zurück

{
 "Erfolg": wahr,
 "Fehlercode": null,
 "errorMsg": null,
 "Daten": [{
  "Beschriftung": "\u6E56\u5317\u7701\u8003\u8BD5\u9662",
  "id": "17",
  "parentId": "17",
  "Knotentyp": 0,
  "Symbol": null,
  "Kinder": [{
   "Beschriftung": "\u9662\u529E\u516C\u5BA4",
   "id": "23",
   "parentId": "17",
   "Knotentyp": 0,
   "Symbol": null,
   "Kinder": [{
    "Beschriftung": "\u9662\u529E\u516C\u5BA4\u4E00\u5904",
    "id": "24",
    "parentId": "23",
    "Knotentyp": 0,
    "Symbol": null,
    "Kinder": null
   }, {
    "Beschriftung": "\u9662\u529E\u516C\u5BA4\u4E8C\u5904",
    "id": "25",
    "parentId": "23",
    "Knotentyp": 0,
    "Symbol": null,
    "Kinder": null
   }]
  }]
 }, {
  "Beschriftung": "\u6E56\u5317\u77012020\u5E74\u9AD8\u8003\u5E94\u6025\u673A\u6784",
  "id": "18",
  "parentId": "18",
  "Knotentyp": 0,
  "Symbol": null,
  "Kinder": [{
   "Beschriftung": "\u4E2D\u5FC3\u94F6\u884C",
   "id": "A06E0C6FFB29198EE053437CA8C07A48",
   "parentId": "18",
   "Knotentyp": 1,
   "Symbol": "el-icon-monitor",
   "Kinder": null,
   "terminalTyp": 0,
   "terminalNum": "769025",
   "serialNum": "7D1846124E640764"
  }, {
   "Beschriftung": "\u6B66\u6C49\u5E02\u4E00\u4E2D\u8003\u70B9\u5E94\u6025\u529E",
   "id": "20",
   "parentId": "18",
   "Knotentyp": 0,
   "Symbol": null,
   "Kinder": [{
    "Beschriftung": "\u6B66\u6C49\u4E00\u4E2D\u5E94\u6025\u6307\u6325\u4E2D\u5FC3",
    "id": "22",
    "parentId": "20",
    "Knotentyp": 0,
    "Symbol": null,
    "Kinder": null
   }]
  }, {
   "Beschriftung": "\u6B66\u6C49\u4E8C\u4E2D\u8003\u70B9\u5E94\u6025\u529E",
   "id": "21",
   "parentId": "18",
   "Knotentyp": 0,
   "Symbol": null,
   "Kinder": null
  }]
 }, {
  "Beschriftung": "2020\u5E74\u7814\u7A76\u751F\u8003\u8BD5\u5E94\u6025\u673A\u6784",
  "id": "19",
  "parentId": "19",
  "Knotentyp": 0,
  "Symbol": null,
  "Kinder": [{
   "Beschriftung": "\u738B\u7269\u6D41",
   "id": "A0BA62D5108D1565E053437CA8C0C74B",
   "parentId": "19",
   "Knotentyp": 1,
   "Symbol": "el-icon-user",
   "Kinder": null,
   "Terminaltyp": 1,
   "terminalNum": "15010330199",
   "Seriennummer": "15010330199"
  }, {
   "Beschriftung": "\u6B66\u6C49\u8003\u533A",
   "id": "27",
   "parentId": "19",
   "Knotentyp": 0,
   "Symbol": null,
   "Kinder": [{
    "Beschriftung": "\u6B66\u6C49\u4E00\u533A\u5E94\u6025\u529E",
    "id": "28",
    "parentId": "27",
    "Knotentyp": 0,
    "Symbol": null,
    "Kinder": null
   }, {
    "Beschriftung": "\u6B66\u6C49\u4E8C\u533A\u5E94\u6025\u529E",
    "id": "41",
    "parentId": "27",
    "Knotentyp": 0,
    "Symbol": null,
    "Kinder": null
   }]
  }]
 }, {
  "Beschriftung": "\u6E56\u5317\u77012019\u5E74\u9AD8\u8003\u5E94\u6025",
  "id": "26",
  "parentId": "26",
  "Knotentyp": 0,
  "Symbol": null,
  "Kinder": null
 }]
}

Hintergrundcode

Paket com.itechhero.app.module.edu.meet.reminder.service;

importiere com.github.pagehelper.PageHelper;
importiere com.itechhero.app.module.edu.common.model.TreeBean;
importiere com.itechhero.app.module.edu.meet.reminder.mapper.MeetReminderMapper;
importiere com.itechhero.app.module.edu.meet.reminder.mapper.ReminderTerminalLinkMapper;
importiere com.itechhero.app.module.edu.meet.reminder.model.MeetReminder;
importiere com.itechhero.app.module.edu.meet.reminder.model.ReminderTerminalLink;
importiere com.itechhero.app.module.edu.meet.reminder.model.TerminalTreeBean;
importiere com.itechhero.app.module.edu.terminal.mapper.TerminalMapper;
importiere com.itechhero.app.module.edu.terminal.model.Terminal;
importiere com.itechhero.app.module.edu.utils.exceptions.ReqException;
importiere com.itechhero.app.module.edu.utils.req.CMap;
importiere com.itechhero.app.module.edu.utils.req.PageData;
importiere com.itechhero.app.module.edu.utils.req.ResBean;
importiere com.itechhero.app.module.edu.xylink.api.reminder.ReminderApi;
importiere com.itechhero.app.module.edu.xylink.util.Result;
importiere lombok.extern.slf4j.Slf4j;
importiere org.springframework.beans.factory.annotation.Autowired;
importiere org.springframework.stereotype.Service;
importiere org.springframework.transaction.annotation.Transactional;

importiere java.util.ArrayList;
importiere java.util.List;
importiere java.util.Map;


/**
 * Meeting-Reservierungsservice* Autor: Wu Bo* Zeit: 2020-03-09 17:28
 * Pseudonym: Aubergine im Herbst desselben Jahres^^
 */
@Slf4j
@Service
@Transaktional
öffentliche Klasse MeetReminderService {


    @Autowired
    privater MeetReminderMapper meetReminderMapper;

    @Autowired
    privater TerminalMapper TerminalMapper;

    @Autowired
    privater ReminderTerminalLinkMapper ErinnerungTerminalLinkmapper;

    /**
     * Holen Sie sich den Kommunikationsterminalbaum * Autor: Wu Bo * Zeit: 2020-03-14 10:32
     * Pseudonym: Aubergine im Herbst desselben Jahres^^
     */
    öffentliche ResBean getContacts(Integer ifonlyTerminal) {
        Liste<TreeBean> root = this.meetReminderMapper.getRootContacts();
        getKidContacts(root, ifonlyTerminal);
        gibt ResBean.success(root) zurück;
    }

    /**
     * Holen Sie sich den Unterknoten des Terminaladressbuchs * Autor: Wu Bo * Zeit: 2020-03-14 11:07
     * Pseudonym: Aubergine im Herbst desselben Jahres^^
     */
    private void getKidContacts(List<TreeBean> root, Integer ifonlyTerminal) {
        log.info("\n{}", root);
        für (TreeBean treeBean : root) {
            Liste<TreeBean> Kinderkontakte = neue ArrayList<>();

            /*Terminal*/
            Liste<TerminalTreeBean> terminalContacts = this.terminalMapper.getTerminalKidsForTree(treeBean.getId(), ifonlyTerminal);
            wenn (terminalContacts != null und terminalContacts.size() != 0) {
                kidsContacts.addAll(TerminalContacts);
            }

            /*Abteilung*/
            Liste<TreeBean> orgKidsContacts = this.meetReminderMapper.getKidsContacts(treeBean.getId());
            wenn (orgKidsContacts != null und orgKidsContacts.size() != 0) {
                kidsContacts.addAll(orgKidsContacts);
            }

            wenn (Kinderkontakte.Größe() != 0) {
                treeBean.setKids(KinderKontakte);
            }

            getKidContacts(kidsContacts, ifonlyTerminal);
        }


    }

    /**
     * Holen Sie sich das ausgewählte Terminal * Autor: Wu Bo * Zeit: 2020-03-14 21:36
     * Pseudonym: Aubergine im Herbst desselben Jahres^^
     */
    öffentliche ResBean getTerminals(CMap param) {
        Liste<CMap> Liste=this.reminderTerminalLinkmapper.getTerminals(param);
        log.info("\n[Holen Sie sich das Endgerät für die geplante Telefonkonferenz]\n{}",list);
        gibt ResBean.success(Liste) zurück;
    }
}

Mapper.xml

<!-- Adressbuch abrufen -->
    <select id="getRootContacts" resultType="com.itechhero.app.module.edu.common.model.TreeBean">
        wählen
               ID||'' ALS "id",
               YJJGMC AS "Etikett",
               FBMID||'' als "parentId",
               0 als „nodeType“ – Damit das Frontend bestimmen kann, ob es aus YJ_ZB_ZBJG ausgewählt werden kann
        WO 1=1 UND ID=FBMID
    </Auswählen>

    <!-- Untergeordneten Knoten des Adressbuchs abrufen-->
    <select id="getKidsContacts" resultType="com.itechhero.app.module.edu.common.model.TreeBean">
        wählen
            ID||'' ALS "id",
            YJJGMC AS "Etikett",
            FBMID||'' als "parentId",
            0 als „nodeType“
        VON YJ_ZB_ZBJG
        WO 1=1
          UND ID||'' != #{parentId}
          UND FBMID||'' = #{parentId}
    </Auswählen>

    <!-- Holen Sie sich das Terminaladressbuch TREE -->
    <select id="getTerminalKidsForTree" resultType="com.itechhero.app.module.edu.meet.reminder.model.TerminalTreeBean">
        WÄHLEN
               ID als "id",
               TERMINAL_NAME als "Label",
               TERMINALTYP,
               TERMINAL_NUM,
               SERIENNUMMER,
               ORG_ID||'' als "parentId",
               1 als „nodeType“,
               case TERMINAL_TYPE -- Legen Sie das Symbol für das Frontend fest (um das direkte Schreiben in die Datenbank zu erleichtern, beachten Sie die Beurteilung des Frontends)
                   wenn 0 dann 'el-icon-monitor'
                   sonst endet „el-icon-user“ als „icon“
        VON YJ_TERMINAL
        wobei 1 = 1
        und ORG_ID||'' =#{parentId}
        <if test="ifonlyTerminal==1">
            und TERMINAL_TYPE = 0
        </if>

</Auswählen>

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So verwenden Sie die ElementUI-Paginierungskomponente Paginierung in Vue
  • Lösen Sie das Auslöseproblem des Änderungsereignisses, wenn Vue ElementUI El-Select verwendet.
  • Vue+ElementUI verwendet vue-pdf, um die Vorschaufunktion zu implementieren
  • Detaillierte Erläuterung der Verwendung der Bild-Upload-Komponente von vue + elementUi
  • Beispiel für die Verwendung von ElementUI in Vue zur Verwendung der Drittanbieter-Symbolbibliothek iconfont
  • Implementierung der Standarderweiterungsfunktion der Navigationsleiste bei Verwendung von ElementUI in Vue
  • Detaillierte Erklärung zur Verwendung von ElementUI in Vue

<<:  Die perfekte Lösung für die Installation von MYSQL5.7.24 ohne Datenverzeichnis und my-default.ini und Dienststartfehler

>>:  Zusammenfassung der Lösung des Yum-Fehlerproblems nach dem Upgrade von Python auf 3.6.6 unter CentOS 7

Artikel empfehlen

Spezifische Verwendung von MySQL-Operatoren (und, oder, in, nicht)

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...

Schwebendes Menü, kann einen Bildlaufeffekt nach oben und unten erzielen

Der Code kann noch weiter optimiert werden. Aus Z...

Implementierung des Vue 3.x-Projekts basierend auf Vite2.x

Erstellen eines Vue 3.x-Projekts npm init @vitejs...

So mounten Sie eine Festplatte in Linux

Wenn Sie eine virtuelle Maschine verwenden, stell...

Anweisungen zur Verwendung der MySQL-Isolations-Leseansicht

Welche historische Version kann die aktuelle Tran...

Detailliertes Tutorial zur Installation von phpMyAdmin unter Ubuntu 18.04

Wir werden phpMyAdmin installieren, damit es mit ...

Eine kurze Analyse der Zählverfolgung einer Anfrage in nginx

Lassen Sie mich zunächst die Anwendungsmethode er...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.21 winx64

Dieser Artikel fasst die Hinweise zur Installatio...

JavaScript-Simulationsrechner

In diesem Artikel wird der spezifische Code des J...

So implementieren Sie Leerzeichen in Taobao mit CSS3

Machen Sie einen leeren Bereich für Taobao: Wenn ...