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
Inhaltsverzeichnis Transaktionsisolationsebene Wa...
Inhaltsverzeichnis 1. Isolationsstufe LESEN SIE U...
Entwicklungstrends: html (Hypertext-Markup-Sprache...
Inhaltsverzeichnis Initialisierung initState() in...
Bevor die neue CSS-Eigenschaft „contain“ vorgeste...
Öffnen Sie eine beliebige Webseite, zum Beispiel ...
Eine Hyperlink-URL in Vm muss mit Chinesisch als P...
html Code kopieren Der Code lautet wie folgt: <...
Inhaltsverzeichnis 1. Übersicht 2. Verwenden Sie ...
Netzwerk-Ports freigeben Tatsächlich gibt es in D...
1. Linux-Netzwerkkonfiguration Bevor Sie das Netz...
In diesem Artikel wird der spezifische Code des W...
Was ist HTML? HTML ist eine Sprache zur Beschreib...
Inhaltsverzeichnis Was ist Docker Clientseitiger ...
Was ist SSH? Administratoren können sich remote a...