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

Wissen Sie, wie Sie mit Vue-Cropper Bilder in Vue zuschneiden?

Inhaltsverzeichnis 1. Installation: 2. Verwendung...

Detaillierte Erklärung der Kernfunktionen und der Ereignisbehandlung von jQuery

Inhaltsverzeichnis Ereignis Seite wird geladen Ve...

Detaillierte Erklärung der Mixin-Verwendung in Vue

Inhaltsverzeichnis Vorwort 1. Was sind Mixins? 2....

So paginieren Sie schnell MySQL-Datenmengen im zweistelligen Millionenbereich

Vorwort Um bei der Backend-Entwicklung zu verhind...

Lösung zum Hinzufügen einer iptables-Firewall-Richtlinie zum MySQL-Dienst

Wenn Ihre MySQL-Datenbank auf einem CentOS7-Syste...

Praktische Aufzeichnung von VUE mithilfe des Wortwolkendiagramms von Echarts

echarts Wortwolke ist eine Erweiterung von echart...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.24

MySQL ist das beliebteste relationale Datenbankma...

Parsen des Linux-Quellcodes epoll

Inhaltsverzeichnis 1. Einleitung 2. Einfaches Epo...

Verwendung des Linux-Befehls ipcs

1. Befehlseinführung Der Befehl ipcs wird verwend...