Vue implementiert Login-Sprung

Vue implementiert Login-Sprung

In diesem Artikelbeispiel wird der spezifische Code von Vue zur Implementierung des Login-Sprungs zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Reden wir nicht über Unsinn, schauen wir uns zuerst die Renderings an~

Spezifische Implementierungsmethoden finden Sie in den folgenden Schritten ~

1. Erstellen Sie login.vue, zeichnen Sie den Anmeldebildschirm und fügen Sie ein Sprungereignis hinzu.

<Vorlage>
    <div Klasse="Login-Container">
        <el-form :model="ruleForm2" :rules="Regeln2"
         Statussymbol
         ref="regelForm2" 
         Beschriftungsposition = "links" 
         Beschriftungsbreite = "0px" 
         Klasse="Demo-RuleForm-Anmeldeseite">
            <h3 class="title">Login-Plattform</h3>
            <el-form-item prop="Benutzername">
                <el-input Typ="Text" 
                    v-model="ruleForm2.Benutzername" 
                    Auto-Vervollständigung="aus" 
                    Platzhalter="Benutzername"></el-input>
            </el-form-item>
            <el-form-item prop="Passwort">
                <el-input type="Passwort" 
                    v-model="regelForm2.passwort" 
                    Auto-Vervollständigung="aus" 
                    Platzhalter="Passwort"></el-input>
            </el-form-item>
            <el-form-item style="width:100%;">
                <el-button type="primary" style="width:100%;" @click="handleSubmit" :loading="logining">Anmelden</el-button>
            </el-form-item>
            <el-form-item>
                <el-Kontrollkästchen 
                    v-model="geprüft"
                    class="rememberme">Passwort merken</el-checkbox>
                <el-button type="text" @click="forgetpassword">Passwort vergessen</el-button>
            </el-form-item>
            
        </el-form>
    </div>

</Vorlage>

<Skript>
  importiere { requestLogin } von '../api/api';
  Standard exportieren {
    Daten() {
      zurückkehren {
        Anmeldung: falsch,
        RegelForm2: {
        },
        Regeln2: {
          Konto: [
            { erforderlich: true, Nachricht: ‚Bitte geben Sie Ihre Kontonummer ein‘, Auslöser: ‚unscharf‘ },
          ],
          checkPass: [
            { erforderlich: true, Nachricht: ‚Bitte geben Sie Ihr Passwort ein‘, Auslöser: ‚unscharf‘ },
          ]
        },
        geprüft: true
      };
    },
    Methoden: {
      handleReset2() {
        dies.$refs.ruleForm2.resetFields();
      },
      handleSubmit(ev) {
        dies.$refs.ruleForm2.validate((gültig) => {
          if (gültig) {
            dies.logining = wahr;
            var loginParams = { Benutzername: this.ruleForm2.username, Passwort: this.ruleForm2.password, Identifizierungscode: this.ruleForm2.identifycode };
            AnfrageLogin(loginParams).then(data => {
              dies.logining = falsch;
              let { msg, code, user } = Daten;
              wenn (Code !== 200) {
                diese.$nachricht({
                  Nachricht: msg,
                  Typ: "Fehler"
                });
              } anders {
                wenn (Benutzer.Typ === "Administrator"){
                    sessionStorage.setItem('Benutzer', JSON.stringify(Benutzer));
                    dies.$router.push({ Pfad: '/homepage' });
                } sonst wenn (Benutzer.Typ === "Anzeige") {
                    sessionStorage.setItem('Benutzer', JSON.stringify(Benutzer));
                    dies.$router.push({ Pfad: '/table' });
                }
              }
            });
          } anders {
            console.log('Fehler beim Senden!!');
            gibt false zurück;
          }
        });
      },
      Passwort vergessen(){
          this.$alert('Bitte kontaktieren Sie den Administrator, um Ihr Passwort abzurufen, Administrator-Telefonnummer: 131xxxxxxxx', 'Prompt', {
          confirmButtonText: 'Bestätigen',
          Typ: "Warnung"
        })
      }
    }
  }
</Skript>

<Stilbereich>
    label.el-checkbox.merke dich an mich {
        Rand: 0px 0px 15px;
        Textausrichtung: links;
    }
    label.el-button.vergessen {
        Rand: 0;
        Polsterung: 0;
        Rand: 1px durchgehend transparent;
        Gliederung: keine;
    }
</Stil>

2. Erstellen Sie die Home.vue-Menüleistenseite

<Vorlage>
    <el-row Klasse="Container">
        <el-col :span="24" class="header">
   <el-col :span="18" Klasse="Logo" >
                {{sysName}}
   </el-col>
   <el-col :span="4" class="Benutzerinfo">
    <el-dropdown trigger="schweben">
     <span class="el-dropdown-link userinfo-inner"><img :src="this.sysUserAvatar" /> {{sysUserName}}</span>
     <el-dropdown-menu slot="Dropdown">
      <el-dropdown-item>Meine Nachricht</el-dropdown-item>
      <el-dropdown-item>Einstellungen</el-dropdown-item>
      <el-dropdown-item @click.native="logout">Abmelden</el-dropdown-item>
     </el-Dropdown-Menü>
    </el-dropdown>
   </el-col>
  </el-col>
        <el-col :span="24" Klasse="main">
            <beiseite>
                <el-menu :default-active="$route.path" Klasse="el-menu el-menu-vertical-demo" @select="handleselect"
                        einzigartig geöffneter Router >
                        <template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
      <el-submenu :index="index+''" v-if="!item.leaf">
       <template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
       <el-menu-item v-for="Kind in Element.Kinder" :index="Kind.Pfad" :key="Kind.Pfad" v-if="!Kind.hidden">{{Kind.name}}</el-menu-item>
      </el-Untermenü>
      <el-menu-item v-if="item.leaf&&item.children.length>0" :index="item.children[0].path"><i :class="item.iconCls"></i>{{item.children[0].name}}</el-menu-item>
     </Vorlage>
                </el-Menü>
            </aside>
   <Abschnitt Klasse="Inhaltscontainer">
    <div Klasse="Rasterinhalt bg-lila-hell">
     <el-col :span="24" class="breadcrumb-container">
      {{$route.name}}
     </el-col>
     <el-col :span="24" class="content-wrapper">
      <Übergangsname="Ausblenden" Modus="Aus-Ein">
       <Router-Ansicht></Router-Ansicht>
      </Übergang>
     </el-col>
    </div>
   </Abschnitt>
  </el-col>
    </el-row>
</Vorlage>

<Skript>
Standard exportieren {
    Daten() {
   zurückkehren {
    sysName:'xxx Verwaltungsplattform',
    sysUserName: '',
    sysUserAvatar: '',
    bilden: {
     Name: '',
     Region: '',
     Datum1: '',
     Datum2: '',
     Lieferung: falsch,
     Typ: [],
     Ressource: '',
     Beschreibung: ''
    }
   }
        },
    Methoden: {
   //Abmelden: function () {
    var _this = dies;
    this.$confirm('Beenden bestätigen?', 'Eingabeaufforderung', {
     //Typ: 'Warnung'
    }).then(() => {
     sessionStorage.removeItem('Benutzer');
     _this.$router.push('/login');
    }).catch(() => {

    });
   }
  },
    montiert() {
   var Benutzer = sessionStorage.getItem('Benutzer');
   if (Benutzer) {
    Benutzer = JSON.parse(Benutzer);
    this.sysUserName = Benutzername || '';
    this.sysUserAvatar = Benutzer.Avatar || '';
   }

  }
}
</Skript>

<style scoped lang="scss">
@import '../style/vars.scss';

    .container {
  Position: absolut;
  oben: 0px;
  unten: 0px;
  Breite: 100 %;
    }
    .header {
   Höhe: 60px;
            Zeilenhöhe: 60px;
   Hintergrund: $color-primary;
   Farbe: #fff;
   .Benutzerinfo {
    Textausrichtung: rechts;
    Polsterung rechts: 35px;
    schweben: rechts;
    .userinfo-inner {
     Cursor: Zeiger;
     Farbe: #fff;
     img {
      Breite: 40px;
      Höhe: 40px;
      Rahmenradius: 20px;
      Rand: 10px 0px 10px 10px;
      schweben: rechts;
     }
    }
   }
   .logo {
    Höhe: 60px;
    Schriftgröße: 22px;
    Polsterung links: 20px;
    img {
     Breite: 40px;
     schweben: links;
     Rand: 10px 10px 10px 0px;
    }
    .txt {
                    Farbe: #fff;
    }
   }
   .logo-width{
    Breite: 230px;
   }
   .logo-collapse-width{
    Breite: 60px
   }
   .Titel{
                Schriftgröße: 22px;
    Polsterung links: 20px;
    Zeilenhöhe: 60px;
    Farbe: #fff;
   }
        }
    .hauptsächlich {
   Anzeige: Flex;
   Position: absolut;
   oben: 60px;
   unten: 0px;
   Überlauf: versteckt;
   beiseite
    flexibel:0 0 230px;
    Breite: 230px;
    .el-menu{
                    Höhe: 100%;
                    /* Breite: 34 %; */
    }
   }
   .Inhaltscontainer {
    biegen: 1;
    /* Überlauf-y: scrollen; */
    Polsterung: 20px;
    .Breadcrumb-Container {
     .Titel {
      Breite: 200px;
      schweben: links;
      Farbe: #475669;
     }
     .breadcrumb-inner {
      schweben: rechts;
     }
    }
    .Inhaltswrapper {
     Hintergrundfarbe: #fff;
     Box-Größe: Rahmenbox;
    }
   }
  }
</Stil>

3. Unterseiten erstellen

<Vorlage>
   <p>Startseite</p>
</Vorlage>

4. Routing-Konfiguration

Login aus „./views/Login.vue“ importieren
Home aus „./views/Home.vue“ importieren
Homepage aus „./views/list/homepage.vue“ importieren 
Tabelle aus „./views/list/Table.vue“ importieren

let Routen = [
    {
        Pfad: '/login',
        Komponente: Login,
        Name: '',
        versteckt: wahr
    },
    {
        Weg: '/',
        Komponente: Home,
        Name: '',
        leaf: true, //Nur ein Knoten iconCls: 'el-icon-menu', //Symbolstilklasse
        Kinder: [
            { Pfad: '/homepage', Komponente: Homepage, Name: 'Homepage' },
        ]
    },
    {
        Weg: '/',
        Komponente: Home,
        Name: 'Menü',
        // leaf: true, // nur ein Knoten iconCls: 'el-icon-message', // Icon-Stilklasse
        Kinder: [
            { Pfad: '/Tabelle', Komponente: Tabelle, Name: 'Untermenü 01' }
        ]
    }
];

Standardrouten exportieren;

5.main.js-Implementierung

// Die Vue-Build-Version, die mit dem Befehl „import“ geladen werden soll
// (nur Laufzeit oder Standalone) wurde in webpack.base.conf mit einem Alias ​​festgelegt.
Vue von „vue“ importieren
App aus „./App“ importieren
VueRouter von „vue-router“ importieren
Routen aus „./routes“ importieren
Vuex von „vuex“ importieren
Store aus „./vuex/store“ importieren
importiere ElementUI von „element-ui“
importiere 'element-ui/lib/theme-chalk/index.css'
importiere Mock aus „./mock“
Mock.bootstrap();
importiere './style/login.css'

/* Vue.use(VueAxios, axios) */
Vue.use(ElementUI)
Vue.use(VueRouter)
Vue.Verwenden(Vuex)
Vue.config.productionTip = falsch

const router = neuer VueRouter({
  Routen
})

router.beforeEach((bis, von, weiter) => {
  //NProgress.start();
  wenn (zu.Pfad == '/login') {
    sessionStorage.removeItem('Benutzer');
  }
  let Benutzer = JSON.parse(sessionStorage.getItem('Benutzer'));
  wenn (!Benutzer && zu.Pfad != '/login') {
    weiter({ Pfad: '/login' })
  } anders {
    nächste()
  }
})

neuer Vue({
  Router,
  speichern,
  rendern: h => h(App)
}).$mount('#app')

Ein solcher Anmeldebildschirm wird realisiert. Den spezifischen Quellcode finden Sie unter: Vue realisiert Anmeldesprung

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Mehrere Methoden zum Seitensprung in Vue (empfohlen)
  • Vue.js tatsächlicher Kampf mit Vue-Router, um zur Seite zu springen
  • Zwei Möglichkeiten, eine neue Seite zu öffnen, wenn der Vue-Router springt
  • Vue implementiert die Methode zum Springen zur Anmeldeseite, wenn Sie nicht angemeldet sind
  • So springen Sie in Vue von einer Seite zur anderen und übertragen Parameter
  • So springen Sie mit Vue-Router zur Seite
  • Vue implementiert Seitensprung zur vorherigen Seite nach dem Login
  • So richten Sie die Vue-Routing-Interception und den Seitensprung ein
  • So implementieren Sie den Vue-Seitensprung-Animationseffekt
  • So kehren Sie nach einem Seitensprung von Vue zur Ausgangsposition der Originalseite zurück

<<:  Wird der Index in der MySQL-Abfragebedingung verwendet?

>>:  Tutorial zur Installation von Apache 2.4.41 unter Windows 10

Artikel empfehlen

Detaillierte Erklärung zur korrekten Verwendung der Zählfunktion in MySQL

1. Beschreibung Wenn wir in MySQL die Gesamtzahl ...

Das Prinzip und die Richtung von JavaScript

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

Three.js realisiert den dynamischen 3D-Logoeffekt von Facebook Metaverse

Inhaltsverzeichnis Hintergrund Was ist das Metave...

Detailliertes Beispiel für die Blockierung von Flash durch HTML-Elemente

Code kopieren Der Code lautet wie folgt: wmode-Pa...

WiFi-Entwicklung | Einführung in die WiFi-Wireless-Technologie

Inhaltsverzeichnis Einführung in die WiFi-Wireles...

XHTML-Tutorial für den Einstieg: Häufig verwendete XHTML-Tags

<br />Genau wie ein Artikel sollten unsere W...

Einführung in die Eigenschaften von B-Tree

B-Baum ist eine allgemeine Datenstruktur. Daneben...

W3C Tutorial (11): W3C DOM Aktivitäten

Das Document Object Model (DOM) ist eine Plattfor...

MySQL-Grundlagen-Tutorial: Detaillierte Erklärung der DML-Anweisungen

Inhaltsverzeichnis DML-Anweisungen 1. Datensätze ...

React realisiert sekundären Verknüpfungseffekt (Treppeneffekt)

In diesem Artikel wird der spezifische Code von R...