Was ist Element-UIelement-ui ist eine auf Vue.js 2.0 basierende Desktop-Komponentenbibliothek, die vom Front-End-Team von Ele.me für Entwickler, Designer und Produktmanager eingeführt wurde, während das entsprechende Framework für Mobiltelefone Mint UI ist. Der gesamte UI-Stil ist einfach und praktisch und verbessert auch die Effizienz der Entwickler erheblich. Es ist eine sehr beliebte Komponentenbibliothek. Die Seite sieht ungefähr so aus: Die Komponente verwendet das Layer.open-Popup-Fenster von Layui. Links befinden sich die Formularinformationen und rechts der Zeichenbereich. Originaldatei mapForm.vue <Vorlage> <div Klasse="mapForm"> <div Klasse="links"> <el-form ref="form" :model="form" :rules="Regeln" label-width="160px"> <el-form-item label="Kartenname" prop="Kartenname"> <el-input v-model="form.mapName" size="mini" löschbar class="formInputClass"></el-input> </el-form-item> <el-form-item label="Kartenbeschreibung" prop="Bemerkungen"> <el-input Typ="Textbereich" v-Modell="form.remarks" Größe="mini" löschbar Klasse="formInputClass"></el-input> </el-form-item> <el-form-item label="Punktinformationen" prop="" v-if="mapList.length > 0"> <div Klasse="Karteninhalt"> <div v-for="(map,key) in mapList" :key="key"> <div class="pointAbscissaOrdinate"><span>Punktkoordinaten {{key+1}}: {{map.abscissa}}-{{map.ordinate}}</span></div> <el-select v-model="mapList[key]['point']" Platzhalter="Bitte auswählen" class="selectClass" @change="changePoint"> <el-option v-for="(Element, Schlüssel) in Punktliste" :Schlüssel="Schlüssel" :label="Element.Name" :Wert="Element.Punkt"> </el-Option> </el-Auswahl> </div> </div> </el-form-item> <div Klasse="btn"> <el-button @click="checkParams" type="primary">Senden</el-button> </div> </el-form> </div> <div Klasse="rechts" id=""> <div Klasse="imgDiv" id="imgDiv" v-loading="loadStage"> <img :src="fileSrc" width="1100" height="720" id="imgPainter" /> <div Klasse="Marker" v-for="(Element, Schlüssel) in MapList" :Schlüssel="Schlüssel" :style="{top: Element.ordinate+'px', 'left': Element.abscissa+'px'}" @contextmenu.prevent="clearMarker(Schlüssel)"> {{key+1}} <div Klasse="ponint">{{Artikel.Punkt}}</div> </div> </div> <div Klasse="uploadBtn"> <el-upload class="upload-demo" ref="upload" action="" :on-change="handleChange" :show-file-list="false" :on-remove="handleRemove" :auto-upload="false" style="display:inline-block;"> <el-button slot="trigger" size="mini" type="primary">Datei auswählen</el-button> </el-upload> <el-button @click="clearPic" type="danger">Alle Punkte löschen</el-button> </div> <div class="info"><i class="el-icon-info"></i>Anzeigegröße ist 1100px*720px</div> <div class="info"><i class="el-icon-info"></i>Linke Maustaste mit Interpunktion im Bilderrahmen</div> <div class="info"><i class="el-icon-info"></i>Klicken Sie mit der rechten Maustaste auf den markierten Punkt im Bilderrahmen, um den Punkt zu löschen</div> </div> </div> </Vorlage> <Skript> Standard exportieren { Name: 'mapFormComponent', Daten() { zurückkehren { bilden: { Kartenname: "", }, Regeln: Kartenname: [ { erforderlich: true, Nachricht: "Bitte geben Sie einen Kartennamen ein", Auslöser: "unscharf" }, ], }, Dateiliste: [], Dateiquelle: '', Punktliste: [ { Name: "Entladeanschluss 1", Punkt: "@FQ01" }, { Name: "Entladeanschluss 2", Punkt: "@FQ02" }, ], mapList: [], //Array von Zebrastreifen canBiaoZhu: true, //Kann es markiert werden pointColor: 'red', //Punktfarbe pointSize: 20, //Punktgröße pointSelectList: {}, Benachrichtigungs-ID: {}, loadStage: falsch, }; }, erstellt() { }, montiert() { //Zeichenbereich-Ereignisbindung let _this = this; wenn (document.getElementById('imgPainter')) { document.getElementById('imgPainter').onmousedown = (e) => { e = e || Fenster.Ereignis if (e.button !== 2) { //Beurteilen, ob mit der rechten Maustaste geklickt werden soll if (this.canBiaoZhu && this.fileSrc != '') { //Beurteilen, ob Bilder markiert und hochgeladen werden können var x = e.offsetX || e.layerX var y = e.offsetY || e.layerY diese.mapList.push({ ID: this.mapList.length + 1, Name: '', Abszisse: x, Koordinate: y, }) // Variablen festlegen // this.pointSelectList.$set(0); let key = „Punkt“; _this.$set(this.mapList[this.mapList.length - 1], Schlüssel, "") } anders { //Aufforderung zum Hochladen eines Bildes// Nur einmal anzeigen, wenn (_this.notifyId.id) _this.notifyId.schließen(); diese.notifyId = _this.$notify.error({ Titel: 'Schnelle Information', Meldung: „Bitte laden Sie zuerst das Bild hoch und fügen Sie dann Satzzeichen hinzu“, showClose: wahr, }); } } anders { return false } } } // Rechtsklick, um zu verhindern var oDiv1 = document.getElementById('imgDiv'); oDiv1.oncontextmenu = Funktion (ev) { var e = e || Fenster.Ereignis; //Blasenbildung verhindern e.cancelBubble = true; //Auslösen des Standardereignisses verhindern e.returnValue = false; } }, Methoden: { Änderungspunkt() { /**Punktänderung */ dies.$forceUpdate(); }, Markierung löschen(index) { /**Markierung löschen */ diese.mapList.splice(index, 1); }, handleChange(Datei, Dateiliste) { dies.loadStage = wahr; let fileName = Dateiname; lass regex = /(.jpg|.jpeg|.gif|.png|.bmp)$/; wenn (regex.test(Dateiname.toLowerCase())) { this.fileSrc = URL.createObjectURL(file.raw) // URL abrufen Konsole.log(diese.fileSrc); } anders { this.$message.error('Bitte wählen Sie die Bilddatei aus'); } dies.loadStage = falsch; }, Bild löschen() { /**Bild löschen*/ diese.mapList = []; }, checkParams() { /*** * Übermittlungsinformationen überprüfen */ dies.$refs["form"].validate((valid) => { if (gültig) { lass Parameter = diese.Form; dies.submit(params); } }); }, asynchrones Senden (Parameter) { /**einreichen*/ let resp = warte darauf.$api.companyApiList .addEditCompany(Parameter); wenn (bzw.Datencode != "Fehler") { // Bestimmen Sie, ob this.$notify.success({ hinzugefügt oder geändert werden soll. Titel: "Tipps", Nachricht: resp.data.msg, showClose: wahr, }); let type = params.id && params.id != '' ? 'Bearbeiten' : 'Hinzufügen'; dies.$emit("update", Typ); // Formulardaten löschen this.$refs.form.resetFields(); } }, }, }; </Skript> <style scoped lang="weniger"> /** Formularstil*/ .mapForm { Anzeige: Flex; Polsterung: 10px; Rand: 1px durchgehend rosa; .links { Flexibilität: 2; Rahmen rechts: 1px gestrichelt rosa; Rand rechts: 4px; .mapContent { Höhe: 700px; Überlauf-y: automatisch; .Klasse auswählen { Rand: 0px 5px; } .PunktAbzisseOrdinate { Anzeige: Inline-Block; Breite: 140px; } } } .Rechts { Flexibilität: 8; // Rand: 1px durchgehend rosa; maximale Breite: 1100px; .imgDiv { Position: relativ; Höhe: 720px; Rand: 2px, durchgehendes Kornblumenblau; .marker { Position: absolut; Randradius: 50 %; Z-Index: 999; Breite: 20px; Höhe: 20px; Hintergrundfarbe: rot; Textausrichtung: zentriert; Zeilenhöhe: 20px; Farbe: gelb; .punkt { Anzeige: Block; Position: absolut; links: 20px; oben: 0px; Schriftgröße: 12px; Farbe: blau; } } .marker:hover .punkt { Anzeige: Block; } } .die Info { Schriftgröße: 12px; } .uploadBtn { Rand: 10px 0px; } } .btn { Polsterung links: 160px; } } .formInputClass { Breite: 200px; } </Stil> Die Auswirkungen der Zeichensetzung sind wie folgt: Dies ist das Ende dieses Artikels über das Markieren von Koordinatenpunkten durch Element-UI nach dem Hochladen von Bildern. Weitere relevante Inhalte zum Hochladen von Bildern durch Element-UI 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:
|
<<: Beispiel zum Ändern der inländischen Quelle in Ubuntu 18.04
>>: So importieren Sie chinesische Daten in Navicat für SQLite in CSV
In Bezug auf das Nginx-Panikproblem müssen wir zu...
Ob der a-Tag eine neue Seite öffnet: (1) Baidu Enc...
In unserer täglichen Entwicklungsarbeit sind Text...
Vorwort: Ich wollte schon immer wissen, wie eine ...
1. Die Organisationsstruktur des Hypertext-Dokumen...
Deinstallieren von MySQL 1. Deinstallieren Sie in...
Ich spiele in letzter Zeit mit Big Data. Ein Freu...
Zwei Möglichkeiten zum Aktivieren des Proxy React...
Inhaltsverzeichnis Kurze Einleitung 1. Überprüfen...
Inhaltsverzeichnis Vom Vater zum Sohn Vom Sohn zu...
Auf einem Linux-Computer gibt es zwei Zeitzonen: ...
Inhaltsverzeichnis React-Fasererstellung 1. Bevor...
Prinzip Das Prinzip von Anti-Shake ist: Du kannst...
CSS (Cascading Style Sheet) wird zum Verschönern ...
Inhalt 1. Geben Sie den Lesern einen Grund zu blei...