Vueは、サイドナビゲーションバーをタブページに関連付けるサンプルコードを実装します。

Vueは、サイドナビゲーションバーをタブページに関連付けるサンプルコードを実装します。

テクノロジースタック

  • サイドバー用
  • Antdtabは要素を使用します

効果

画像の説明を追加してください

<テンプレート>
	  <div class="メインカード">
          <el-行>
            <el-col :span="3">
              <div class="menu-all">
                <div class="menu-head">
                  <span class="menu-head-title">倉庫管理</span>/<span class="menu-head-title" @click="goBack"
                    >大画面</span>
                  >
                </div>
                <!-- <div class="menu-body">
                <div class="menu-item" @click="openTabs(item)" v-for="menuItems 内の項目" :key="item">
                  <i class="el-icon-s-home" v-if="item.value === '01'"></i>{{ item.name }}
                </div>
              </div> -->
                <a-メニュー
                  モード="インライン"
                  テーマ="ダーク"
                  :openKeys="オープンキー"
                  v-model="選択されたキー"
                  @openChange="onOpenChange"
                >
                  <a-sub-menu v-for="メニュー項目内の項目" :key="item.value">
                    <span スロット="タイトル"
                      ><a-icon type="appstore" /><span>{{ item.name }}</span></span
                    >
                    <メニュー項目
                      v-for="item.children 内の childrenItem"
                      :key="子アイテム.値"
                      @click="addTabs(childrenItem)"
                      >{{ childrenItem.name }}
                    </a-メニュー項目>
                  </a-サブメニュー>
                </a-メニュー>
              </div>
            </el-col>
            <el-col :span="21">
              <el-行>
                <el-col :span="24">
                  <div>
                    <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
                      <el-tab-pane v-for="編集可能なタブ内の項目" :key="item.name" :label="item.title" :name="item.name">
                        <コンポーネント :is="item.content"></コンポーネント>
                      </el-tab-pane>
                    </el-tabs>
                  </div>
                </el-col>
              </el-row>
            </el-col>
          </el-row>
        </div>
</テンプレート>
<スクリプト>
	エクスポートデフォルト{
		データ(){
			戻る {
				   openKeys: [], //第一レベルメニューの折りたたみと展開を制御して、第一レベルメニューの値を保存します
      SelectedKeys: '', //セカンダリメニューを制御して、セカンダリメニューの値を強調表示して保存します
      //サイドナビゲーションメニュー配列 menuItems: [
        {
          名前: 「受信レポートと送信レポート」
          値: '0'、
          子供たち: [
            {
              名前: 「受注数量レポート」
              値: '01'、
              コンテンツ: () => import('@/views/main/index/qtyReportIndex.vue'),
            },
            {
              名前: '保管するユニット数に関するレポート'、
              値: '02'、
              コンテンツ: () => import('@/views/main/index/qtyReportIndexQty.vue'),
            },
            {
              名前: 「出荷予定の注文数量レポート」
              値: '03'、
              コンテンツ: () => import('@/views/main/index/handoverReportIndex.vue'),
            },
            {
              名前: 「出荷予定ユニット数レポート」
              値: '04'、
              コンテンツ: () => import('@/views/main/index/handoverReportIndexQty.vue'),
            },
          ]、
        },
        {
          名前: 「予測」、
          値: '1'、
          子供たち: [
            {
              名前: 「到着登録」
              値: '11'、
              コンテンツ: () => import('@/views/main/index/asnHdrDockIndex.vue'),
            },
            {
              名前:「倉庫利用率」
              値: '12',
              コンテンツ: () => import('@/views/main/index/whUteIndex.vue'),
            },
            {
              名前: 「倉庫内の在庫」
              値: '13',
              コンテンツ: () => import('@/views/main/index/imOdsStorageIndex.vue'),
            },
          ]、
        },
        {
          名前: 'インジケーター'、
          値: '2'、
          子供たち: [
            {
              名前: 「単一倉庫集荷率」
              値: '201',
              コンテンツ: () => import('@/views/main/index/singleWhDeliveryScaleIndex.vue'),
            },
            {
              名前: 「倉庫内の輸送時間」
              値: '202',
              コンテンツ: () => import('@/views/main/index/transitDurationInWhIndex.vue'),
            },
            {
              名前: 'SN の繰り返し'、
              値: '203',
              コンテンツ: () => import('@/views/main/index/dwExceptionBarcodeIndex.vue'),
            },
            {
              名前: 「日次在庫リスト」
              値: '204',
              コンテンツ: () => import('@/views/main/index/inventoryRqIndex.vue'),
            },
            {
              名前: 「データベース転送インジケーター監視」
              値: '205',
              コンテンツ: () => import('@/views/main/index/transferIndexIndex.vue'),
            },
            {
              名前: 「ピッキング場所分析概要レポート」
              値: '206',
              コンテンツ: () => import('@/views/main/index/pickingByLocSumIndex.vue'),
            },
            {
              名前: 'レポートの概要を読み込んでいます',
              値: '207',
              コンテンツ: () => import('@/views/main/index/loadingSummaryIndex.vue'),
            },
            {
              名前: '送信SNエラー率'、
              値: '208',
              コンテンツ: () => import('@/views/main/index/dwBarcodeErrorRptIndex.vue'),
            },
            {
              名前: 「ピッキング場所分析の詳細」
              値: '209',
              コンテンツ: () => import('@/views/main/index/dwPickFxmxIndex.vue'),
            },
            {
              名前: 'バッチピッキングに基づかない保管エリアディメンション'、
              値: '210',
              コンテンツ: () => import('@/views/main/index/notPickingByBatchIndex.vue'),
            },
          ]、
        },
      ]、
      editableTabsValue: '', //タブページ上で現在アクティブな項目
      editableTabs: [], //タブページ配列 }
		},
		方法:{
	// 他のページからホームページにジャンプしてタブページを開くために使用されるメソッド // goTable(item) {
     // this.openKeys = [item.value.substring(0, 1)]
     // this.SelectedKeys = item.value
     // this.$store.commit('updateHomeOrIndexSwitch', false)
     // this.openTabs(アイテム)
    //,
		タブを追加(アイテム) {
      onOff を false にします。
      this.editableTabs.forEach((x) => {
        if (x.name == item.name) {
           this.editableTabsValue = アイテム名
           オンオフ=true
           戻る;
        }
      })
      if(!onOff){
      this.editableTabs.push({
        タイトル: アイテム名、
        名前: アイテム名、
        コンテンツ: アイテム.コンテンツ、
      })
      this.editableTabsValue = アイテム名
      }
    },
    //タブページを閉じてトリガーする targetName = item.name
    削除タブ(ターゲット名) {
      タブを this.editableTabs とします
      activeName = this.editableTabsValue とします
      アクティブ名 === ターゲット名の場合 {
        tabs.forEach((タブ、インデックス) => {
          if (tab.name === targetName) {
            nextTab = tabs[index + 1] || tabs[index - 1]とします
            if (次のタブ) {
              アクティブ名 = 次のタブ名
            } それ以外 {
              this.openKeys = []
              this.SelectedKeys = ''
            }
          }
        })
      }
      this.editableTabsValue = アクティブ名
      this.editableTabs = tabs.filter((tab) => tab.name !== targetName)
    },
		},
		時計:{
			    編集可能なタブ値(val) {
      this.menuItems.forEach((メニュー項目) => {
        メニュー項目の子の場合
          メニュー項目.children.forEach((childrenItem) => {
            if (childrenItem.name === val) {
              this.openKeys = [childrenItem.value.substring(0, 1)]
              this.SelectedKeys = childrenItem.value
              戻る
            }
          })
        }
      })
    },
		}
	}
</スクリプト>

分析する

このコンポーネント セットは、単一の要素フレームワークでは実装できません。サイド ナビゲーション バーでは、折りたたみ、強調表示、メニュー グループのパラメーターを制御する必要があります。メニュー グループの折りたたみと展開を制御する要素のナビゲーション メニューのパラメーターは関数 @open control であるため、コードを通じてメニュー グループの展開と折りたたみを制御する方法がないため、フレームワーク全体でそのような関数を作成して記録します。

ここに画像の説明を挿入

これで、Vue のサイドナビゲーションバーとタブページの関連付けの実装のサンプルコードに関するこの記事は終了です。Vue のサイドナビゲーションバーとタブページの関連付けに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはタブナビゲーションバーを実装し、左右のスライド機能をサポートしています
  • vue elementUIはタブを使用してナビゲーションバーにリンクします
  • Vue カスタム下部ナビゲーションバー タブバー実装コード
  • モバイル慣性スライド&リバウンドVueナビゲーションバーコンポーネントly-tabを書く

<<:  ウェブデザイナーが注意すべき 43 のウェブデザインの間違い

>>:  iframe の src を about:blank に設定した後の詳細

推薦する

MySQL 8.0.12 解凍バージョンのインストールチュートリアル

この記事では、MySQL 8.0.12解凍版のインストールチュートリアルを参考までに紹介します。具体...

画像マーキー効果を実現するネイティブJS

今日は、ネイティブ JS で実装された画像マーキー効果を紹介します。効果は次のとおりです。 実装され...

SQL の左結合と右結合の原理と例の分析

テーブルが 2 つあり、テーブル A のレコードがテーブル B に存在しない可能性があります。左結合...

MySQL ディープページング問題の解決の実践記録

目次序文ディープページングを制限すると遅くなるのはなぜですか?サブクエリによる最適化B+ツリー構造の...

MySQL データベースでよく使用される SQL ステートメントの詳細と概要

この記事では、MySQL データベースでよく使用される SQL ステートメントを例を使用して説明しま...

MySQL データベースの基礎: 基本コマンドの概要

目次1. ヘルプ情報を使用する2. データベースの作成、削除、表示3. データベースに接続する4. ...

VUE ユニアプリライフサイクルに関する簡単な説明

目次1. アプリケーションライフサイクル2. ページのライフサイクルコンポーネントライフサイクル要約...

mysql バックアップ スクリプト mysqldump の使い方の詳細な説明

この記事では、参考までにMySQLバックアップスクリプトを紹介します。具体的な内容は次のとおりです。...

州と市町村の連携を簡単に実現するJavaScript

この記事では、省と市の簡単な連携を実現するためのJavaScriptの具体的なコードを参考までに紹介...

jQueryは時間セレクタを実装する

この記事の例では、参考までに時間セレクターを実装するためのjQueryの具体的なコードを共有していま...

HTML+CSS を使用して、画像の右上隅に削除の十字と画像削除ボタンを追加します。

記録として、将来使用される可能性があり、困っている友人も使用できます。 BBはもうやめて、まずはレン...

Axios はリクエストをキャンセルし、重複リクエストを回避します

目次起源現状リクエストをキャンセル cancelTokenリクエスト方法の変更重複したリクエストを避...

VUE uni-app でよく使用される API についての簡単な説明

目次1. ルーティングとページジャンプ2. インターフェース要約する1. ルーティングとページジャン...

Vueはダイアログのカプセル化を実装します

目次Vue2 ライティングVue3プラグインのバージョンの記述Vue3 動的コンポーネントの記述書き...

Reactベースのコンポーネントのカプセル化の実装手順

目次序文antd はどのようにしてコンポーネントをカプセル化するのでしょうか?ディバイダーコンポーネ...