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

mysql erhält statistische Daten innerhalb eines bestimmten Zeitraums

mysql erhält statistische Daten innerhalb eines b...

MySQL-Performance-Optimierung: So nutzen Sie Indizes effizient und richtig

Die Praxis ist der einzige Weg, die Wahrheit zu t...

Benutzerdefinierte Tabbar-Komponente für das WeChat-Applet

In diesem Artikel wird der spezifische Code der b...

Mehrere gängige Methoden zum Festlegen der Ankerpositionierung in HTML

Mir sind mehrere Möglichkeiten bekannt, die Ankerp...

Tutorial zum Importieren und Exportieren von Docker-Containern

Hintergrund Die Popularität von Docker hängt eng ...

So ändern Sie den Punkt im WeChat-Applet Swiper-Dot in einen Slider

Inhaltsverzeichnis Hintergrund Zieleffekt Ideen e...

Verwendung des optionalen Verkettungsoperators von JS

Vorwort Der optionale Verkettungsoperator (?.) er...

Tutorial zur Installation und Verwendung von Docker MQTT

Einführung in MQTT MQTT (Message Queuing Telemetr...

UCenter-Homepage fügt Statistikcode hinzu

UCenter Home ist ein von Comsenz veröffentlichtes ...

Mehrere Möglichkeiten, die Lesbarkeit von Webseiten zu verbessern

1. Verwenden Sie kontrastierende Farben. Mit Kont...