element-ui Markieren Sie die Koordinatenpunkte nach dem Hochladen des Bildes

element-ui Markieren Sie die Koordinatenpunkte nach dem Hochladen des Bildes

Was ist Element-UI

element-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:
  • Lösung für die Upload-Einschränkung von Element-ui-Uploaddateien
  • Implementierung des Hochladens mehrerer Dateien auf einmal mit el-upload in element-ui
  • Element-ui-Datei-Upload-Methode zum Ändern des Dateinamenbeispiels
  • Detaillierte Erläuterung der Front-End-Verarbeitung hochgeladener Dateien in Element-UI
  • Element-ui verbirgt die Upload-Button-Funktion nach dem Hochladen eines Bildes
  • Element-UI-Implementierungsbeispiel für den Upload mehrerer Dateien
  • Verwendung der Upload-Komponente „el-upload“ von vue-cli3.0+element-ui

<<:  Beispiel zum Ändern der inländischen Quelle in Ubuntu 18.04

>>:  So importieren Sie chinesische Daten in Navicat für SQLite in CSV

Artikel empfehlen

Müssen Designer das Programmieren lernen?

Oftmals wird nach der Fertigstellung eines Webdes...

Mysql implementiert drei Funktionen zum Feldspleißen

Beim Exportieren von Daten in Operationen ist das...

Grafisches Tutorial zur Installation von CentOS7 auf VMware 15.5

1. Erstellen Sie eine neue virtuelle Maschine in ...

Installieren Sie Kafka unter Linux

Inhaltsverzeichnis 1.1 Java-Umgebung als Vorausse...

So stellen Sie ein SpringCloud-Projekt mit Docker bereit

Inhaltsverzeichnis Docker-Image herunterladen Sta...

Detaillierte Erklärung des Linux Namespace-Benutzers

Der Benutzer-Namespace ist ein neuer Namespace, d...

Eine kurze Diskussion über die Platzierung von Skripten in HTML

Früher dachte ich, dass Skripte überall in HTML p...

Drei Möglichkeiten zum Parsen von QR-Codes mit Javascript

Inhaltsverzeichnis 1. Verwenden Sie JavaScript, u...

Analyse des Funktionsprinzips und des Implementierungsprozesses von Docker Hub

Ähnlich wie der von GitHub bereitgestellte Code-H...

Vorschläge zur Optimierung der Webseiten-Kopfzeile

Logo-Optimierung: 1. Das Logobild sollte so klein...

Lernen Sie MySQL-Datenbanken in einer Stunde (Zhang Guo)

Inhaltsverzeichnis 1. Datenbankübersicht 1.1 Entw...

Konfigurationsmethode für die VMware Kali-Umgebung virtueller Maschinen

1|0 Kompilieren Sie den Kernel (1) Führen Sie den...