最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue-element-admin テンプレートを使用しました。私は PanJianChen (ソースコード アドレス: https://github.com/PanJiaChen/vue-admin-template) を使用しました。 最初のステップ: ソースコードをダウンロードします。ダウンロードアドレス: https://github.com/PanJiaChen/vue-admin-template ステップ2: 実際の状況に応じて、ログインページ、ログインインターフェース(/store/modules/admin.js/login())を変更し、ユーザー情報インターフェース(/store/modules/admin.js/getInfo())を変更します。 ステップ3: 権限ルーティングを変更する 1. ルーティングファイル内の設定を削除し、const constantRoutesをエクスポートして、基本的な/login、/404を保持します。 2. 動的ルーティングがクリアされ、export const asyncRoutes=[] 3. 生成されたルーティングメソッドを/store/modules/permission.jsで定義します。 /** * バックグラウンドでクエリされたメニューデータは、ルーティング形式のデータに組み立てられます* @param ルート */ エクスポート関数generaMenu(ルート、データ) { データ.forEach(アイテム => { メニューを = { パス: item.url、 子供たち: []、 名前: 'menu_' + アイテムID, meta: { title: item.name、 id: item.id、 icon:item.icon} } // console.log(item.url.indexOf('ダッシュボード')) // コンソールログ(item.children) if (item.children) { // console.log(item.children.length) (アイテムの子供の長さ>0)の場合{ menu.redirect = item.children[0].url menu.component = レイアウト } それ以外 { // menu.component = () => import(`@/views${item.url}/index`) menu.component = () => Promise.resolve(require(`@/views${item.url}`).default) } if (item.url && item.url.indexOf('ダッシュボード') != -1) { メニュー = { パス: '/'、 コンポーネント: レイアウト、 リダイレクト: '/dashboard', 子供たち: [{ パス: 'ダッシュボード', 名前: 'ダッシュボード'、 コンポーネント: () => import('@/views/dashboard/index'), meta: { title: 'ダッシュボード', icon: 'ダッシュボード' } }] } } generaMenu(メニュー.children、アイテム.children) } それ以外 { console.log('子なし') } ルート.push(メニュー) }) } バックグラウンドインターフェースに従ってアクションに動的ルーティングをロードする アクション: { ルートを生成する({コミット},データ){ 新しいPromiseを返します(resolve => { 定数loadMenuData = [] getAuthMenu().then(res => { データ = res.data とします console.log('menu=>', データ) コンソールログ('asyncRoutes=>>', asyncRoutes) let newRoutes = [] //以前のルートをクリアする hereObject.assign(loadMenuData, data) メニューを生成します(新しいルート、メニューデータを読み込みます) newRoutes.push({ パス: '*'、リダイレクト: '/404'、非表示: true }) accessedRouters = newRoutes || [] とします console.log('アクセスされたルーター', アクセスされたルーター) commit('SET_ROUTERS', アクセスされたルーター) 解決する() }) }) }, reset_routers({ コミット }) { 新しいPromiseを返します(resolve => { コミット('RESET_ROUTERS') 解決する() }) } } ステップ4. /permission.jsに動的ルーティングを追加する router.beforeEach(非同期(to, from, next) => { // プログレスバーを開始 NProgress.start() // ページタイトルを設定する document.title = getPageTitle(to.meta.title) // ユーザーがログインしているかどうかを判定する 定数hasToken = getToken() (トークンを持っている場合){ to.path === '/login'の場合{ // ログインしている場合はホームページにリダイレクトします 次へ({ パス: '/' }) NProgress.done() } それ以外 { const hasGetUserInfo = store.getters.name (hasGetUserInfo) の場合 { 次() } それ以外 { 試す { // ユーザー情報を取得する ストアを待機します。dispatch('admin/getInfo') store.dispatch('GenerateRoutes', {}).then(() => { // アクセス可能なルーティングテーブルを生成する router.addRoutes(store.getters.addRouters) // アクセス可能なルーティングテーブルを動的に追加する console.log('to=',store.getters.addRouters) next({ ...to, replace: true }) // addRoutes が完了したことを確認するためのハックメソッド。replace: true を設定して、ナビゲーションが履歴レコードを残さないようにします。 NProgress.done() }) // 次() } キャッチ(エラー){ // トークンを削除し、ログインページに移動して再度ログインします store.dispatch('admin/resetToken') を待機します。 Message.error(error || 'エラーあり') 次へ(`/login?redirect=${to.path}`) NProgress.done() } } } } それ以外 { /* トークンがありません*/ (whiteList.indexOf(to.path) !== -1) の場合 { // 無料ログインホワイトリストでは、直接 次() } それ以外 { // アクセス権限のない他のページはログイン ページにリダイレクトされます。 次へ(`/login?redirect=${to.path}`) NProgress.done() } } }) その後は好きなようにプレイできます。 これで、バックエンド管理システムを構築するための vue-element-admin の実装手順に関するこの記事は終了です。バックエンド管理システムを構築するための vue-element-admin に関するより関連性の高い記事については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Net Core実装プロセス分析のDockerインストールと展開
1. はじめにtelnet コマンドは、リモート ホストにログインするために使用されます。これは、T...
実際の使用では、ミニプログラムを友人や友人サークルと共有する必要があることが多く、通常は一度に 1 ...
目次1. Angular 2 アプリケーションのライフサイクル フックとは何ですか? 2. Angu...
今日会社から課題をもらったのですが、効果図は以下のとおりです。 どのような効果を実現したいかは特に決...
毎回インストールチュートリアルを探すのは面倒なので、後で確認できるように手順をバックアップします。解...
#include <asm/io.h> #define ioremap(cookie,...
最近、Yahoo の 34 の黄金律を読み、ウェブサイトのパフォーマンスを最適化する方法を学びました...
目次WebSocketを使用する理由ソケット.ioオープンソースプロジェクト効果プレビューアプリイン...
多くの場合、透明度の設定やぼかしなど、写真の背景を加工する必要があります。 ただし、背景画像が配置さ...
くさびコンピュータにインストールされている MySQL のバージョンが比較的古く、おそらくバージョン...
1. 兄弟要素の余白を結合する効果は次のようになります: (2 つの間の間隔は 150 ピクセルでは...
目次序文1. 一度限りの計画タスクの紹介2. コマンド3. 1回限りのスケジュールタスクを作成する4...
MySQL のインストールについてはインターネット上に多くの記事がありますが、今日ノート PC にイ...
CSS を導入する方法には、インライン スタイル、内部スタイル シート、外部スタイル シートの 3 ...
ユーザーとグループの管理1. ユーザーとグループの基本概念ユーザーとグループ:システム上のすべてのプ...