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 }] } HintergrundcodePaket 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:
|
Docker fragt Bilder in einem privaten Register ab...
Servermanager-Startfehler bei Verbindung zur Date...
Erstellen eines Projektverzeichnisses mkdir php E...
Vor ein paar Tagen habe ich einen von Yu Bo getei...
Test: Chrome v80.0.3987.122 ist normal Es gibt zw...
Vorwort Um sicherzustellen, dass Ihre Webseiten in...
In diesem Artikel wird hauptsächlich die Verwendu...
Inhaltsverzeichnis Zugehörige Abhängigkeitsinstal...
Umfassendes Systemüberwachungstool dstat dstat is...
Inhaltsverzeichnis 1. Die Richtung davon in der F...
Die Jenkins-Konfiguration von Benutzerrollenberec...
Dieser Artikel ist MySQL-Datenbank Frage 1 Import...
1. Ziehen Sie das offizielle 5.0.3-Image [root@lo...
Inhaltsverzeichnis Überblick 1. Funktion Entprell...
In diesem Artikelbeispiel wird der spezifische Co...