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

Eine kurze Analyse der Unterschiede zwischen Undo, Redo und Binlog in MySQL

Inhaltsverzeichnis Vorwort 【Protokoll rückgängig ...

Kurs zur Web-Frontend-Entwicklung Was sind die Web-Frontend-Entwicklungstools

Mit der Entwicklung der Internettechnologie werde...

CSS3-Zeitleistenanimation

Ergebnisse erzielen html <h2>CSS3-Zeitleist...

So erstellen Sie ein ELK-Protokollsystem basierend auf Docker

Hintergrundanforderungen: Mit zunehmender Größe d...

Unterschiede im Stundentrennzeichen zwischen Browsern

Beim Erstellen einer Webseite verwenden Sie manchm...

Hinweise zur Groß-/Kleinschreibung bei MySQL

Inhaltsverzeichnis Die Groß-/Kleinschreibung von ...

Analyse zweier Verwendungen des A-Tags in HTML-Post-Anfragen

Zwei Beispiele für die Verwendung des „a“-Tags in...

Implementierung des Pushens von Docker-Images zum Docker Hub

Nachdem das Image erfolgreich erstellt wurde, kan...

Verwenden einer MySQL-Datenbank im Docker, um LAN-Zugriff zu erhalten

1. Holen Sie sich das MySQL-Image Docker-Pull MyS...

43 Webdesign-Fehler, auf die Webdesigner achten sollten

Dies ist ein Artikel über die Benutzerfreundlichk...

Das Prinzip und die Richtung von JavaScript

Wie lässt sich feststellen, worauf dies hinweist?...

Lösung für 1067, wenn Mysql in Windows startet

Ich habe erst vor ein paar Tagen mit der Arbeit b...

JavaScript-Verlaufsobjekt erklärt

Inhaltsverzeichnis 1. Routennavigation 2. API zur...