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

Detaillierte Erklärung der Lösung für das Nginx-Panikproblem

In Bezug auf das Nginx-Panikproblem müssen wir zu...

Grundprinzipien für die Zusammenstellung einer Website-Homepage

1. Die Organisationsstruktur des Hypertext-Dokumen...

Zwei praktische Möglichkeiten zum Aktivieren des Proxys in React

Zwei Möglichkeiten zum Aktivieren des Proxy React...

Detaillierter Prozess zum Upgrade von gcc (Version 10.2.0) in der CentOS7-Umgebung

Inhaltsverzeichnis Kurze Einleitung 1. Überprüfen...

So ändern Sie die Zeitzone und die Uhrzeit im Ubuntu-System

Auf einem Linux-Computer gibt es zwei Zeitzonen: ...

Schritte zur Erstellung einer React Fiber-Struktur

Inhaltsverzeichnis React-Fasererstellung 1. Bevor...

Fallstudie zu JavaScript Anti-Shake

Prinzip Das Prinzip von Anti-Shake ist: Du kannst...

HTML-Grundlagen - Pflichtlektüre - Umfassendes Verständnis von CSS-Stylesheets

CSS (Cascading Style Sheet) wird zum Verschönern ...

9 praktische Tipps zum Erstellen von Webinhaltsseiten

Inhalt 1. Geben Sie den Lesern einen Grund zu blei...