Vueはログインジャンプを実装する

Vueはログインジャンプを実装する

この記事では、ログインジャンプを実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次のとおりです。

くだらない話はやめて、まずはレンダリングを見てみましょう〜

具体的な実施方法については、以下の手順を参照してください。

1. login.vue を作成し、ログイン画面を描画し、ジャンプ イベントを追加します。

<テンプレート>
    <div class="ログインコンテナ">
        <el-form :model="ruleForm2" :rules="rules2"
         ステータスアイコン
         ref="ルールフォーム2" 
         ラベル位置="左" 
         ラベル幅="0px" 
         class="デモルールフォームログインページ">
            <h3 class="title">ログイン プラットフォーム</h3>
            <el-form-item prop="ユーザー名">
                <el-input type="text" 
                    v-model="ruleForm2.ユーザー名" 
                    オートコンプリート="オフ" 
                    placeholder="ユーザー名"></el-input>
            </el-form-item>
            <el-form-item prop="パスワード">
                <el-input type="パスワード" 
                    v-model="ruleForm2.password" 
                    オートコンプリート="オフ" 
                    placeholder="パスワード"></el-input>
            </el-form-item>
            <el-form-item スタイル="width:100%;">
                <el-button type="primary" style="width:100%;" @click="handleSubmit" :loading="logining">ログイン</el-button>
            </el-form-item>
            <el-form-item>
                <el-チェックボックス 
                    v-model="チェック済み"
                    class="rememberme">パスワードを記憶する</el-checkbox>
                <el-button type="text" @click="forgetpassword">パスワードを忘れた場合</el-button>
            </el-form-item>
            
        </el-form>
    </div>

</テンプレート>

<スクリプト>
  '../api/api' から { requestLogin } をインポートします。
  エクスポートデフォルト{
    データ() {
      戻る {
        ログイン: false、
        ルールフォーム2: {
        },
        ルール2: {
          アカウント: [
            { 必須: true、メッセージ: 'アカウント番号を入力してください'、トリガー: 'blur' },
          ]、
          チェックパス: [
            { 必須: true、メッセージ: 'パスワードを入力してください'、トリガー: 'blur' },
          ]
        },
        チェック済み: true
      };
    },
    メソッド: {
      ハンドルリセット2() {
        this.$refs.ruleForm2.resetFields();
      },
      ハンドル送信(ev) {
        this.$refs.ruleForm2.validate((有効) => {
          (有効)の場合{
            this.logining = true;
            var loginParams = { ユーザー名: this.ruleForm2.username、パスワード: this.ruleForm2.password、識別コード: this.ruleForm2.identifycode };
            リクエストログイン(ログインパラメータ)。その後(データ => {
              this.logining = false;
              {msg、コード、ユーザー} = データとします。
              (コード!== 200)の場合{
                this.$メッセージ({
                  メッセージ: メッセージ、
                  タイプ: 'エラー'
                });
              } それ以外 {
                (user.type === "admin")の場合{
                    sessionStorage.setItem('user', JSON.stringify(user));
                    this.$router.push({ パス: '/homepage' });
                } それ以外の場合 (user.type === "advert") {
                    sessionStorage.setItem('user', JSON.stringify(user));
                    this.$router.push({ パス: '/table' });
                }
              }
            });
          } それ以外 {
            console.log('送信エラー!!');
            false を返します。
          }
        });
      },
      パスワードを忘れた(){
          this.$alert('パスワードを取得するには管理者に連絡してください。管理者の電話番号: 131xxxxxxxx', 'プロンプト', {
          confirmButtonText: '確認'、
          タイプ: '警告'
        })
      }
    }
  }
</スクリプト>

<スタイルスコープ>
    label.el-checkbox.rememberme {
        マージン: 0px 0px 15px;
        テキスト配置: 左;
    }
    label.el-button.forget {
        マージン: 0;
        パディング: 0;
        境界線: 1px 透明の実線;
        アウトライン: なし;
    }
</スタイル>

2. Home.vueメニューバーページを作成する

<テンプレート>
    <el-row クラス="コンテナ">
        <el-col :span="24" class="header">
   <el-col :span="18" class="logo" >
                {{sysName}}
   </el-col>
   <el-col :span="4" class="ユーザー情報">
    <el-dropdown トリガー="hover">
     <span class="el-dropdown-link userinfo-inner"><img :src="this.sysUserAvatar" /> {{sysUserName}}</span>
     <el-dropdown-menu slot="ドロップダウン">
      <el-dropdown-item>私のメッセージ</el-dropdown-item>
      <el-dropdown-item>設定</el-dropdown-item>
      <el-dropdown-item @click.native="logout">ログアウト</el-dropdown-item>
     </el-dropdown-menu>
    </el-dropdown>
   </el-col>
  </el-col>
        <el-col :span="24" class="main">
            <余談>
                <el-menu :default-active="$route.path" class="el-menu el-menu-vertical-demo" @select="handleselect"
                        ユニークオープンルーター >
                        <テンプレート 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="item.children 内の子" :index="child.path" :key="child.path" v-if="!child.hidden">{{child.name}}</el-menu-item>
      </el-サブメニュー>
      <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>
     </テンプレート>
                </el-menu>
            </余談>
   <セクションクラス="コンテンツコンテナ">
    <div class="grid-content bg-purple-light">
     <el-col :span="24" class="breadcrumb-container">
      {{$ルート名}}
     </el-col>
     <el-col :span="24" class="content-wrapper">
      <トランジション名="フェード" モード="アウトイン">
       <ルータービュー></ルータービュー>
      </トランジション>
     </el-col>
    </div>
   </セクション>
  </el-col>
    </el-row>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
    データ() {
   戻る {
    sysName:'xxx 管理プラットフォーム',
    システムユーザー名: ''、
    sysUserAvatar: ''、
    形状: {
     名前: ''、
     地域: ''、
     日付1: ''、
     日付2: ''、
     配達: 偽、
     タイプ: []、
     リソース: ''、
     説明: ''
    }
   }
        },
    メソッド: {
   //ログアウト: 関数 () {
    var _this = これ;
    this.$confirm('終了して確認しますか?', 'プロンプト', {
     //タイプ: '警告'
    }).then(() => {
     sessionStorage.removeItem('ユーザー');
     _this.$router.push('/login');
    }).catch(() => {

    });
   }
  },
    マウント() {
   var user = sessionStorage.getItem('user');
   if (ユーザー) {
    ユーザー = JSON.parse(ユーザー);
    this.sysUserName = user.name || '';
    this.sysUserAvatar = user.avatar || '';
   }

  }
}
</スクリプト>

<スタイル スコープ lang="scss">
@import '../style/vars.scss';

    。容器 {
  位置: 絶対;
  上: 0px;
  下: 0px;
  幅: 100%;
    }
    .ヘッダー{
   高さ: 60px;
            行の高さ: 60px;
   背景: $color-primary;
   色:#fff;
   .ユーザー情報{
    テキスト配置: 右;
    右パディング: 35px;
    フロート: 右;
    .userinfo-inner {
     カーソル: ポインタ;
     色:#fff;
     画像 {
      幅: 40px;
      高さ: 40px;
      境界線の半径: 20px;
      マージン: 10px 0px 10px 10px;
      フロート: 右;
     }
    }
   }
   .ロゴ {
    高さ:60px;
    フォントサイズ: 22px;
    パディング左:20px;
    画像 {
     幅: 40px;
     フロート: 左;
     マージン: 10px 10px 10px 0px;
    }
    。TXT {
                    色:#fff;
    }
   }
   .ロゴ幅{
    幅:230ピクセル;
   }
   .logo-collapse-width{
    幅:60ピクセル
   }
   。タイトル{
                フォントサイズ: 22px;
    パディング左:20px;
    行の高さ: 60px;
    色:#fff;
   }
        }
    。主要 {
   ディスプレイ: フレックス;
   位置: 絶対;
   上: 60px;
   下: 0px;
   オーバーフロー: 非表示;
   脇に
    フレックス:0 0 230px;
    幅: 230ピクセル;
    .el-メニュー{
                    高さ: 100%;
                    /* 幅: 34%; */
    }
   }
   .コンテンツコンテナ{
    フレックス:1;
    /* オーバーフロー-y: スクロール; */
    パディング: 20px;
    .ブレッドクラムコンテナ{
     。タイトル {
      幅: 200ピクセル;
      フロート: 左;
      色: #475669;
     }
     .breadcrumb-inner {
      フロート: 右;
     }
    }
    .コンテンツラッパー{
     背景色: #fff;
     ボックスのサイズ: 境界線ボックス;
    }
   }
  }
</スタイル>

3. サブページを作成する

<テンプレート>
   <p>ホームページ</p>
</テンプレート>

4. ルーティング構成

'./views/Login.vue' からログインをインポートします。
'./views/Home.vue' から Home をインポートします。
'./views/list/homepage.vue' からホームページをインポートします。 
'./views/list/Table.vue' からテーブルをインポートします。

ルートを = [
    {
        パス: '/login',
        コンポーネント: ログイン、
        名前: ''、
        非表示: true
    },
    {
        パス: '/'、
        コンポーネント: ホーム、
        名前: ''、
        leaf: true, // ノードは 1 つだけ iconCls: 'el-icon-menu', // アイコン スタイル クラス
        子供たち: [
            { パス: '/homepage'、コンポーネント: ホームページ、名前: 'ホームページ' },
        ]
    },
    {
        パス: '/'、
        コンポーネント: ホーム、
        名前: 'メニュー',
        // leaf: true, // ノードは 1 つだけ iconCls: 'el-icon-message', // アイコン スタイル クラス
        子供たち: [
            { パス: '/table'、コンポーネント: テーブル、名前: 'サブメニュー 01' }
        ]
    }
];

デフォルトルートをエクスポートします。

5.main.jsの実装

// `import` コマンドで読み込む Vue ビルド バージョン
// (ランタイムのみまたはスタンドアロン) が webpack.base.conf にエイリアスとともに設定されています。
'vue' から Vue をインポートします
'./App' から App をインポートします
'vue-router' から VueRouter をインポートします。
'./routes' からルートをインポートします
'vuex' から Vuex をインポートします
'./vuex/store' からストアをインポートします。
'element-ui' から ElementUI をインポートします。
'element-ui/lib/theme-chalk/index.css' をインポートします。
'./mock' から Mock をインポートします。
モック
'./style/login.css' をインポートします

/* Vue.use(VueAxios、axios) */
Vue.use(要素UI)
Vue.use(VueRouter)
Vue.use(Vuex)
Vue.config.productionTip = false

const ルーター = 新しい VueRouter({
  ルート
})

router.beforeEach((to, from, next) => {
  //NProgress を開始します。
  to.path == '/login'の場合{
    sessionStorage.removeItem('ユーザー');
  }
  user = JSON.parse(sessionStorage.getItem('user')); とします。
  if (!user && to.path != '/login') {
    次へ({ パス: '/login' })
  } それ以外 {
    次()
  }
})

新しいVue({
  ルーター、
  店、
  レンダリング: h => h(App)
}).$mount('#app')

このようなログイン画面が実現されています。具体的なソースコードについては、Vue でログインジャンプを実現するを参照してください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue ジャンプページのいくつかの方法 (推奨)
  • Vue.js実戦vue-routerを使ってページにジャンプする
  • vue-routerがジャンプしたときに新しいページを開く2つの方法
  • Vueはログインしていないときにログインページにジャンプする方法を実装します
  • Vue でページ間を移動してパラメータを渡す方法
  • vue-routerでページにジャンプする方法
  • Vue はログイン後に前のページへのページジャンプを実装します
  • Vue ルーティングインターセプションとページジャンプの設定方法
  • Vue ページジャンプアニメーション効果を実装する方法
  • Vueページがジャンプした後に元のページの初期位置に戻す方法

<<:  インデックスは MySQL クエリ条件で使用されますか?

>>:  Windows 10 に Apache 2.4.41 をインストールするチュートリアル

推薦する

CSS3 で less のテキストの長い影を実装する

この記事では主に、CSS3 LESS で長いテキストの影を実装する方法を紹介し、皆さんと共有します。...

better-scrollプラグインのスライドできないバグについて(2021年プラグインで解決)

より良いスクロールの原則親コンテナーであるため、ラッパーの高さはコンテンツのサイズに応じて増加します...

Linux manコマンドの具体的な使い方

01. コマンドの概要Linux には充実したヘルプ マニュアルが用意されています。コマンドのパラメ...

「MySQL サービスを開始できません エラー 1069」を解決する方法

今日、外出中に同僚から、ウェブサイトのバックエンドにアクセスできないというメッセージが届きました。と...

クールなネオンライト効果を実現する純粋な CSS (デモ付き)

私は最近、YouTube の CSS アニメーション効果チュートリアル シリーズをフォローしています...

MySQLオンラインデッドロック分析練習

序文MySQL を学習する際に、MySQL のロック メカニズムについて簡単に理解したことがあると思...

CSS レイアウト チュートリアル: 垂直方向の中央揃えを実現する方法

序文最近、フロントエンドの知識をまとめており、いくつかのインタビューにも参加しました。インタビュー中...

Vueはカスタムツリーコンポーネントを再帰的に実装します

この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...

vue.js ベースの QQ チャット ルーム

目次導入効果のデモンストレーションは次のとおりです。 MChat コンポーネントのレンダリング: I...

HTML でシンプルな ListViews 効果を実装するためのサンプル コード

シンプルなリストビュー効果を実現するHTML結果: CSS スタイル ファイル listviewTe...

Vueはテーマ切り替えのための複数のアイデアを実装します

目次テーマを動的に変更する最初の方法: 動的コンポーネント2番目の方法はルーティング分離です要約する...

MySQLデータベースを操作するためのコマンドラインツールmycliの簡単な紹介

GitHub にはあらゆる種類の魔法のツールがあります。今日、私はデータベースを操作するためのコマン...

Angular のパフォーマンス最適化: サードパーティ コンポーネントと遅延読み込みテクノロジー

目次概要環境の準備プロジェクトのパフォーマンスに影響を与える要因遅延読み込みとは何ですか?プロジェク...

MySQLで最新のトランザクションIDを照会する方法

前に書いた内容: ビジネス ロジックの判断を行うために、最新のトランザクション ID を表示する必要...

bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明

SSHPASSをインストールする最新のオペレーティング システムでは、sshpass パッケージはデ...