Hintergrundanforderungen: Das ERP-System muss eine Funktion zur „Schaltflächenberechtigungssteuerung“ hinzufügen und die Steuerungsgranularität der Berechtigung sollte auf die Schaltflächenebene erweitert werden. erwartet Für die Steuerung der Schaltflächenberechtigungen gibt es zwei interaktive Modi: „unsichtbar“ und „sichtbar, aber nicht anklickbar“. Unsichtbar Die unsichtbare Interaktionsmethode ist relativ einfach. Wir können v-if verwenden, um zu steuern, ob sie angezeigt wird. Sie können v-show verwenden, aber das ist nicht sicher genug. Schließlich ändert v-show nur den Stil in „display: none“ und dieser existiert immer noch im realen DOM-Rendering. Daher wird empfohlen, v-if zu verwenden, um das Unsichtbare zu steuern. Sichtbar, aber nicht anklickbar„Du kannst sehen, aber du kannst nicht.“
Für die endgültige Produktanforderung wurde „sichtbar, aber nicht anklickbar“ gewählt, wahrscheinlich weil unsichtbar als zu einfach angesehen wurde. (¬_¬) Ideenerkundung
Übungsplan Schließlich haben wir uns für die Anweisungsmethode entschieden, die eine Erweiterung mit den geringsten Kosten ermöglicht und eine Änderung der vorhandenen Geschäftscodelogik vermeidet.
Den konkreten Umsetzungsplan finden Sie weiter unten: Berechtigungseintrag: Vuex-Steuerung, globale Verwendung//Nachdem sich der Benutzer angemeldet hat, holen Sie sich den Berechtigungscode des Benutzers und speichern Sie ihn im Store dies.$store.commit('SET_AUTH_CODE', authCodeList); SET_AUTH_CODE: (Status, Aktionscode) => { wenn (acthCode) { Zustand.autoCodeList = acthCode; } setStore({ Name: "autoCodeList", Inhalt: Status.autoCodeList || [], }); } Berechtigungsanweisungen definierenconst disableClickFn = (Ereignis) => { Ereignis und Ereignis.stopImmediatePropagation(); } export const hasPermission = () => { Vue.direktive('Berechtigung', { binden(el, Bindung) { lass deaktivieren = true; wenn (autoCodeList.length und autoCodeList.includes(Bindung.Wert)) { deaktivieren = falsch; } if (deaktivieren) { el.classList.add('Berechtigung deaktiviert'); el.setAttribute('deaktiviert', 'deaktiviert'); el.addEventListener('klicken', clickFn deaktivieren, true); } }, unbind(el) { el.removeEventListener('klicken', clickFn deaktivieren); } }); };
Wenn mehrere Ereignis-Listener an denselben Ereignistyp im selben Element angehängt sind, werden sie beim Auslösen des Ereignisses in der Reihenfolge aufgerufen, in der sie hinzugefügt wurden. Wenn Sie stopImmediatePropagation() in einem der Ereignis-Listener aufrufen, werden die verbleibenden Ereignis-Listener nicht aufgerufen. MSDN - stopImmediatePropagation Deaktivierte CSS-Stile hinzufügen.Berechtigung deaktiviert { Position: relativ; Cursor: nicht erlaubt !wichtig; Zeigerereignisse: keine; // Verhindern, dass Elemente Mausereignisse empfangen. Grenze: keine; Hintergrundbild: keines; &::nach { Inhalt: ''; Position: absolut; unten: 0; links: 0px; rechts: 0px; Höhe: 100%; Z-Index: 9; Hintergrund: rgba(255, 255, 255, 0,5); } } Hier wird eine relativ unbekannte CSS-Eigenschaft, pointer-events, verwendet. Die CSS3-Eigenschaft „pointer-events“ gibt an, unter welchen Umständen (falls überhaupt) ein bestimmtes Grafikelement zum Ziel eines Mausereignisses werden kann. Weitere Verwendungshinweise: MSDN - Zeigerereignisse Die Verwendung von Zeigerereignissen ist hier nur eine Hilfsfunktion. Sie bedeutet nicht unbedingt, dass der Ereignislistener des Elements niemals ausgelöst wird. Wenn das untergeordnete Element Zeigerereignisse angegeben hat und es erlaubt, das Ereignisziel zu werden, kann das Ereignis des übergeordneten Elements ausgelöst werden. Und sich ausschließlich auf CSS-Eigenschaften zu verlassen, um das Nichtklicken zu steuern, ist immer noch riskant, daher wird es hier nur zu Hilfszwecken verwendet. Globale Toolfunktion „Berechtigungsbeurteilung“importiere { getStore, } von '@/util/store'; const autoCodeList = getStore({ name: 'autoCodeList', }) || []; Exportfunktion hatBerechtigung(authName) { Rückgabewert !(autoCodeList.length > 0 und autoCodeList.includes(authName)); } Spezifische Verwendung// Befehlsmethode (oms/order/save entspricht hier dem CODE-Berechtigungscode, wenn sich der Benutzer anmeldet) <el-button v-permission="'oms:order:save'">Speichern</el-button> // Funktionsmethode <el-button :disabled="hasPermission('oms:order:save')"></el-button> Dies ist das Ende dieses Artikels über die Implementierung von Vue-basierten Element-Schaltflächenberechtigungen. Weitere relevante Element-Schaltflächenberechtigungen finden Sie in früheren Artikeln auf 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:
|
>>: Docker verwendet Busybox, um ein Basis-Image zu erstellen
Ich habe MySQL auf meinem Computer längere Zeit n...
1. Erste Schritte mit setUp Stellen Sie kurz die ...
Inhaltsverzeichnis Schritt 1: Pakete unter CentOS...
Problem: Die von mybatis zurückgegebenen Daten vo...
Problem: Die Partition, in der MySQL Datendateien...
In diesem Artikel wird der spezifische JavaScript...
1. Fügen Sie den Isolationsmarker hinzu: ip netns...
Inhaltsverzeichnis Hbase-Installation und -Konfig...
Vorwort Benannte Slots werden mithilfe des Attrib...
Apache Arrow ist ein beliebtes Format, das von ve...
Vorwort In einem üblichen Geschäftsszenario müsse...
Kapitel 1 Installation des Quellcodes Die Install...
In einem Artikel vor langer Zeit habe ich über di...
Es gibt viele Tools, Komponenten und Programme zu...
Die heute zu implementierende Funktion ist die fo...