1. css: dragTable.css @Zeichensatz "UTF-8"; .w-Tabelle{ Höhe: 100%; Breite: 100 %; schweben: links; } /* Mausanzeigestil beim Ziehen*/ .w-table_moving .el-table th .thead-cell{ Cursor: bewegen !wichtig; } .w-table_moving .el-table__fixed{ Cursor: nicht erlaubt; } .w-Tabelle .thead-Zelle{ Anzeige: Inline-Flex; Flex-Richtung: Spalte; Elemente ausrichten: zentrieren; Breite: automatisch; maximale Höhe: 23px; vertikale Ausrichtung: Mitte; Überlauf: anfänglich; Position: relativ; } 2. Komponente kapseln: dragTable.vue <Vorlage> <div Klasse="w-table" :Klasse="{'w-table_moving': dragState.dragging}"> <el-table :data="Daten" :ref="Option.ref" :Klasse="Option.Klasse" :stripe="Option.stripe" :border="Option.border" :Höhe="Option.Höhe" :max-height="Option.maxHöhe" Aktuelle Zeile hervorheben :style="{ width: parseInt(option.width)+'px' }" :cell-class-name="Zellenklassenname" :header-cell-class-name="Headerzellenklassenname" @sort-change="Option.sortChange" > <slot name="fest"></slot> <template v-for="(Spalte, Index) im Tabellenkopf"> <el-table-column :label="col.label" :key="index" :prop="col.prop" :width="col.width" v-if="col.useTemplate==true"> <template slot-scope="Umfang"> <span v-html=col.useTemplateRes(scope.row)></span> </Vorlage> </el-Tabellenspalte> <el-table-column v-else :Schlüssel="Index" :prop="Spalte.prop" :label="Spalte.label" :Breite="Spaltenbreite" :min-width="Spalte.minWidth" :Typ="Spalte.Typ" :sortierbar="Spalte.sortierbar" :header-align="Spalte.headerAlign" :align="Spalte.align" :Spaltenschlüssel="index.toString()" :render-header="RenderHeader" Überlauf-Tooltip anzeigen :formatter="Spalte.formatter" > </el-Tabellenspalte> <el-table-column :label="v.name" :key="k" :prop="v.prop" :width="v.width" v-else></el-table-column> </Vorlage> <!--<el-table-column v-for="(col, index) in tableHeader" :key="index" :prop="Spalte.prop" :label="Spalte.label" :Breite="Spaltenbreite" :min-width="Spalte.minWidth" :Typ="Spalte.Typ" :sortierbar="Spalte.sortierbar" :header-align="Spalte.headerAlign" :align="Spalte.align" :Spaltenschlüssel="index.toString()" :render-header="RenderHeader" Überlauf-Tooltip anzeigen :formatter="Spalte.formatter" > </el-table-column>--> </el-Tabelle> </div> </Vorlage> <Skript> Sortable aus „sortablejs“ importieren Standard exportieren { Name: "", Daten () { zurückkehren { tableHeader: dieser.header, Ziehen Sie den Status: { start: -9, // Index des Startelements end: -9, // Index des Elements, das beim Bewegen der Maus abgedeckt wird dragging: false, // Ist es dragging direction: undefined // Dragging direction } } }, Requisiten: { Daten: { Standard: Funktion () { zurückkehren [] }, Typ: Array }, Kopfzeile: { Standard: Funktion () { zurückkehren [] }, Typ: Array }, Option: { Standard: Funktion () { zurückkehren {} }, Typ: Objekt } }, montiert() { }, betrachten: Header (Wert, alterWert) { this.tableHeader = Wert } }, Methoden: { renderHeader (ErstellenElement, {Spalte}) { returniere Element erstellen( 'div', { 'Klasse': ['Kopfzelle'], An: { Maus nach unten: ($event) => { this.handleMouseDown($event, Spalte) }, Mausbewegung: ($event) => { this.handleMouseMove($event, column) } } }, [ // Fügen Sie <a> hinzu, um die Kopfzeilenbezeichnung anzuzeigen createElement('span', spaltenbezeichnung), // Füge ein leeres Tag hinzu, um die Drag-Animation anzuzeigen createElement('span', { 'Klasse': ['virtuell'] }) ]) }, // Drücken Sie die Maus, um mit dem Ziehen zu beginnen handleMouseDown (e, column) { this.dragState.dragging = wahr this.dragState.start = parseInt(Spalte.Spaltenschlüssel) // Breite und Höhe beim Ziehen zum virtuellen Container hinzufügen let table = document.getElementsByClassName('w-table')[0] let virtual = document.getElementsByClassName('virtual') für (let item of virtual) { item.style.height = table.clientHeight - 1 + 'px' // item.style.width = item.parentElement.parentElement.clientWidth + 'px' item.style.width = item.parentElement.clientWidth + 'px' } document.addEventListener('mouseup', this.handleMouseUp); }, // Lassen Sie die Maus los, um den Drag-Vorgang zu beenden handleMouseUp () { diese.dragColumn(diese.dragState) // Drag-Status initialisieren this.dragState = { Beginn: -9, Ende: -9, ziehen: falsch, Richtung: undefiniert } : document.removeEventListener('mouseup', this.handleMouseUp); }, //Ziehen Sie den Griff der Maus. Verschieben Sie (e, Spalte) { wenn (dieser.dragState.dragging) { let index = parseInt(column.columnKey) // Startspalte aufzeichnen if (index - this.dragState.start !== 0) { this.dragState.direction = index - this.dragState.start < 0 ? 'left' : 'right' // Bestimmen Sie die Ziehrichtung this.dragState.end = parseInt(column.columnKey) } anders { this.dragState.direction = nicht definiert } } anders { return false } }, // Ziehen und neu positionieren dragColumn ({start, end, direction}) { let tempData = [] lass links = Richtung === 'links' sei min = links? Ende : Start - 1 sei max = links? Start + 1 : Ende für (lass i = 0; i < this.tableHeader.length; i++) { wenn (i === Ende) { tempData.push(dieser.tableHeader[start]) } sonst wenn (i > min und i < max) { tempData.push(diese.tableHeader[links?i-1:i+1]) } anders { tempData.push(dieser.tableHeader[i]) } } this.tableHeader = tempData }, headerCellClassName ({Spalte, Spaltenindex}) { let active = Spaltenindex - 1 === this.dragState.end ? `darg_active_${this.dragState.direction}` : '' let start = Spaltenindex - 1 === this.dragState.start ? `darg_start` : '' gibt `${active} ${start}` zurück }, Zellklassenname ({Spalte, Spaltenindex}) { Rückgabe (Spaltenindex – 1 === this.dragState.start? „darg_start“: „“) }, }, } </Skript> <Stil> @import '~@/assets/css/dragTable.css'; </Stil> 3. Aufruf der Paketkomponente <Vorlage> <div> <wTable :data="WarnResTable_Data_SS" :header="tableHeaderSS" :option="tableOptionSS"> <el-table-column Typ="Index" Slot="fest" behoben prop="" label="Seriennummer" ausrichten="zentrieren" Breite="60" > </el-Tabellenspalte> <el-table-column Bezeichnung = "Vorgang" Slot="fest" behoben prop="" Breite="95" ausrichten="zentrieren"> <template slot-scope="Umfang"> <el-Schaltfläche Größe="mini" @click="lookDetails(scope.$index, scope.row)">Anzeigen</el-button> </Vorlage> </el-Tabellenspalte> </wTabelle> </div> </Vorlage> <Skript> importiere wTable aus '../../components/dragTable/dragTable' Standard exportieren { Name: "Tabelle", Daten () { zurückkehren { TabellenoptionSS: { Grenze: wahr, Streifen: wahr, ref:'WarnResSSTable', Klasse: 'pms-Tabelle', maxHeight: "100%", Höhe: "100%", sortChange:this.changeTableSortSS }, TabellenkopfzeileSS: [ { Bezeichnung: 'Stadtname', Stütze: "dsmc", sortierbar: wahr, ausrichten: 'zentriert', Breite: '200', }, { Bezeichnung: 'Betriebs- und Wartungseinheit', Stütze: "ywdw", ausrichten: 'zentriert', Breite: '200', }, { Bezeichnung: 'Unterstation', Stütze: "bdzmc", ausrichten: 'zentriert', Breite: '170', }, { Bezeichnung: 'Gerätename', Stütze: "sbmc", sortierbar: wahr, ausrichten: 'zentriert', Breite: '150', }, { Bezeichnung: 'Warnparameter', Stütze: "yjcs", ausrichten: 'zentriert', Breite: '150', }, { Bezeichnung: „Warnungstyp“, Stütze: "yjlx", ausrichten: 'zentriert', Breite: '140', }, { Beschriftung: 'Erster Warnzeitpunkt', Stütze: 'scyjsj', sortierbar:true, ausrichten: 'zentriert', Breite: '160', Formatierer:dieses.formatTime }, { Bezeichnung: „Datenzeit aktualisieren“, Stütze: "dqyjsj", sortierbar:true, ausrichten: 'zentriert', Breite: '160', Formatierer:dieses.formatTime }, { Bezeichnung: 'Warnungsbeschreibung', Stütze: "yjgz", ausrichten: 'zentriert', Breite: '170', }, { Bezeichnung: „Gerätetyp“, Stütze: "sblx", sortierbar:true, ausrichten: 'zentriert', Breite: '140', }, { Bezeichnung: 'Spannungspegel', Stütze: 'dydjid', sortierbar:true, ausrichten: 'zentriert', Breite: '120', Formatierer:dieses.formatVoltageLevel } ], WarnResTable_Data_SS:[ {dsmc:'dsmc1',sbmc:'sbmc1',dydjid:'hhhhh1'}, {dsmc:'dsmc2',sbmc:'sbmc2',dydjid:'hhhhh2'}, {dsmc:'dsmc3',sbmc:'sbmc3',dydjid:'hhhhh3'} ], } }, Methoden: { handleNameSort() { console.log('handleNameSort') }, formatVoltageLevel: Funktion (Zeile, Spalte) { let val = Zeile[Spalteneigenschaft]; wenn (Wert == undefiniert) { zurückkehren ""; } konsole.log('Wert ') Rückgabewert '5555' }, changeTableSortSS(Spalte){ console.log('sortHandle-Spalte',Spalte) }, formatTime: Funktion (Zeile, Spalte) { let date = Zeile[Spalteneigenschaft]; if (Datum == undefiniert) { zurückkehren ""; } Rückgabedatum? Moment (neues Datum (Datum)). Format ('JJJJ-MM-TT HH:MM:SS'):''; }, formatVoltageLevel: Funktion (Zeile, Spalte) { let val = Zeile[Spalteneigenschaft]; wenn (Wert == undefiniert) { zurückkehren ""; } Rückgabewert+'kV' }, }, Komponenten: wTabelle } } </Skript> Dies ist das Ende dieses Artikels mit der detaillierten Erklärung des Drag & Drop-Falls von Vue Element Sortablejs zur Implementierung von Tabellenspalten. Weitere relevante Inhalte zu Vue Element Sortablejs zur Implementierung von Drag & Drop von Tabellenspalten finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung der Nginx-Konfigurationsdatei
>>: MySQL Installer 8.0.21 Installations-Tutorial mit Bildern und Text
<meta name="viewport" content="B...
1. Übergeordnete Komponenten können Daten über Re...
Der Linux-Befehl zum Ausführen des JAR-Pakets lau...
Methode 1: schweben: rechts Darüber hinaus wird d...
Inhaltsverzeichnis 1. Einleitung 2. Grundkonzepte...
Unter Bezugnahme auf die Online-Informationen hab...
Ich habe das System vor einiger Zeit neu installi...
1. Maria-Quelle hinzufügen vi /etc/yum.repos.d/Ma...
Inhaltsverzeichnis Layoutteil: <div id="a...
Grundlegende Verwendung <!DOCTYPE html> <...
Private Docker-Imagebibliothek Private Docker-Bil...
Hintergrund Wenn die von Tomcat generierte catali...
Heutzutage werden Datenbankoperationen immer häuf...
Detaillierte Einführung in den MySql-Index und ko...
Inhaltsverzeichnis Vorwort 1. Technisches Prinzip...