Vue Element-ui テーブルはツリー構造テーブルを実現します

Vue Element-ui テーブルはツリー構造テーブルを実現します

この記事では、ツリー構造テーブルを実現するためのElement-uiテーブルの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

フロントエンドエフェクト表示:

el-tableではツリー型のデータの表示がサポートされています。行に children フィールドが含まれている場合、その行はツリー データと見なされます。ツリー データをレンダリングするときは、行キーを指定する必要があります。子ノード データの非同期読み込みをサポートします。

行の hasChildren フィールドを指定することで、子ノードを含む行を指定できます。 children と hasChildren は両方とも tree-props を介して設定できます。

row-key="id" および :tree-props="{children: 'children', hasChildren: 'hasChildren'} は必須です。

以下は Vue のテーブルツリーです。

 <!--表-->  
       <el-行>
            <el-table :data="tableData" style="width: 100%;" row-key="id" :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                        <el-table-column prop="privilegeName" label="権限名" >
                        </el-table-column>
                        <el-table-column prop="privilegeCode" label="権限コード" >
                        </el-table-column>
                        <el-table-column prop="privilegeType" label="権限カテゴリ" :formatter="formatPrivilegeType" >
                        </el-table-column>
 
                        <el-table-column label="操作">
                            <テンプレート スロット スコープ="スコープ">
                                
                                <el-button type="primary" size="mini" @click="toAdd(scope)">追加</el-button>
                                <el-button type="primary" size="mini" @click="toEdit(scope)">編集</el-button>
                            </テンプレート>
                        </el-table-column>
                    </el-table>
                    <br>
                    <el-ページネーション
                        @size-change="ハンドルサイズ変更"
                        @current-change="現在の変更を処理する"
                        :current-page="ページ区切りページインデックス"
                        :ページサイズ="[5, 10, 20, 30, 40]"
                        :page-size=ページネーション.ページサイズ
                        レイアウト="合計、前、ページ、次"
                        :total=ページネーション合計>
                    </el-pagination>
</el-row>

バックエンドコード: データ構造クエリを実装するための SpringBoot+MyPlus+MySQL8

すべてのフロントエンドコード:

<スタイル>
</スタイル>
<テンプレート>
  <div id="権限マネージャー">
   <!--トップメニューバー-->
    <el-form :inline="true" class="demo-form-inline">
          <el-form-item>
            <el-ボタン
              クラス="el-icon-refresh"
              タイプ="プライマリ"
              @click="toAdd()">追加</el-button>
          </el-form-item>
      </el-form>
      <!--表-->  
       <el-行>
            <el-table :data="tableData" style="width: 100%;" row-key="id" :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                        <el-table-column prop="privilegeName" label="権限名" >
                        </el-table-column>
                        <el-table-column prop="privilegeCode" label="権限コード" >
                        </el-table-column>
                        <el-table-column prop="privilegeType" label="権限カテゴリ" :formatter="formatPrivilegeType" >
                        </el-table-column>
 
                        <el-table-column label="操作">
                            <テンプレート スロット スコープ="スコープ">
                                
                                <el-button type="primary" size="mini" @click="toAdd(scope)">追加</el-button>
                                <el-button type="primary" size="mini" @click="toEdit(scope)">編集</el-button>
                            </テンプレート>
                        </el-table-column>
                    </el-table>
                    <br>
                    <el-ページネーション
                        @size-change="ハンドルサイズ変更"
                        @current-change="現在の変更を処理する"
                        :current-page="ページ区切りページインデックス"
                        :ページサイズ="[5, 10, 20, 30, 40]"
                        :page-size=ページネーション.ページサイズ
                        レイアウト="合計、前、ページ、次"
                        :total=ページネーション合計>
                    </el-pagination>
        </el-row>
 
 
  </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
    名前: '特権マネージャー'、
    データ () {
     戻る {
        テーブルデータ: [],
        dialogFormEdit: false、
        ダイアログフォーム追加:false、
        特権:
          id: ''、
          権限名: ''、
          特権コード: ''、
          権限タイプ: ''、
          プロセスID: '0'
        },
        ページネーション:
            ページインデックス: 1,
            ページサイズ: 10,
            合計: 0,
        }
      }
    },
    方法:{
         初期化(){
        var 自己 = これ
         this.$axios({
            メソッド:'post',
            url:'/api/baoan/privilege/getPage',
            データ:{"page":this.pagination.pageIndex,"limit":this.pagination.pageSize, "pid": this.privilege.pid},
            ヘッダー:{
                'Content-Type':'application/json;charset=utf-8' //ここを変更するだけです}
        }).then(res => {
           コンソールログ(res);
           自己ページネーション合計 = res.data.datas.data.total;
           self.tableData = res.data.datas.data.records;
        })
          .catch(関数 (エラー) {
            コンソール.log(エラー)
          })
        },
        ハンドルサイズ変更(val) {
                console.log(`ページあたり${val}項目`);
                this.pagination.pageSize = val;
                this.pagination.pageIndex = 1;
                これを初期化します。
        },
        現在の変更を処理する(val) {
                 console.log(`現在のページ: ${val}`);
                this.pagination.pageIndex = val;
                これを初期化します。
        },
        //権限タイプの変換形式PrivilegeType: function( row, column) {
                 if(row.privilegeType === '1'){
                     'ディレクトリ' を返す
                 } そうでない場合、row.privilegeType === '2' の場合 {
                     'メニュー' を返す
                 } そうでない場合 (row.privilegeType === '3') {
                     'ボタン'を返す
                 } それ以外 {
                     戻る ''
                 }
        }
    },
    マウント: 関数 () {
      この.init()
  }
 
 
}
</スクリプト>

要約:

1. フロントエンド テーブルで変更する必要があるのは次の点です。

2. バックエンドの主な変更点は次のとおりです。

(1) ビューレイヤーにビューレイヤーコレクション属性を追加します。フロントエンドがツリー構造にレンダリングできるように、children という名前を付ける必要があることに注意してください。

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

以下もご興味があるかもしれません:
  • Vueは要素ツリーコントロールを通じてツリーテーブルを実装します
  • Vue要素ツリーコントロールに点線を追加する詳細な説明
  • Vue コンポーネント ライブラリ ElementUI はテーブル読み込みツリー データのチュートリアルを実装します
  • Vue+element UI でツリーテーブルを実現
  • Vue+Element UI ツリー コントロールはドロップダウン機能メニュー (ツリー + ドロップダウン + 入力) を統合します。
  • Vue Element-ui はツリーコントロールノードを実装し、アイコンを追加します。詳細な説明

<<:  MySQLクエリ条件におけるonとwhereの配置の違いの分析

>>:  WindowsはVMwareを使用してLinux仮想マシンを作成し、CentOS7.2オペレーティングシステムをインストールします。

推薦する

Mac に Windows サービスを備えた仮想マシンをインストールする方法

1. 仮想マシンをダウンロードする公式ダウンロードウェブサイト: https://www.vmwar...

ホバードロップダウンメニューを実装するためのネイティブJS

JS はホバー ドロップダウン メニューを実装します。これは、フロントエンドの面接で遭遇するシナリ...

JavaでTomcatサーバーを起動/停止する方法

1. プロジェクト構造 2.Tomcat.javaを呼び出す パッケージ com.calltomca...

Docker コンテナ ソース コードのデプロイ httpd ストレージ ボリュームを使用して Web サイトをデプロイする (推奨)

目次Dockerコンテナのソースコードを使用してhttpdをデプロイし、ストレージボリュームを使用し...

Vueコンポーネントのカスタムイベントの詳細な説明

目次要約する <テンプレート> <div> 要素 <h2>{{メ...

シンプルなウェブデザインコンセプトのカラーマッチング

(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...

MySQLシリーズ マルチテーブル結合クエリ92および99構文例詳細チュートリアル

目次1. デカルト積現象2. 接続クエリの知識ポイントのまとめ1) 結合クエリとは何ですか? 2) ...

JavaScript を使って簡単な計算機を書く

効果は以下のとおりです。参考プログラム: <!DOCTYPE html> <htm...

JConsoler を使って Tomcat の JVM メモリを監視する方法を説明します

目次1. Tomcatを監視する方法2. Java独自の監視コマンド3. Tomcatのトラブルシュ...

jsはショッピングカートの加算と減算、価格計算を実装します

この記事の例では、ショッピングカートの加算と減算、価格計算を実装するためのjsの具体的なコードを共有...

Vue プロジェクトはファイルダウンロードの進行状況バー機能を実装します

日常業務でファイルをダウンロードする一般的な方法は 2 つあります。 1 つ目は、サーバーのファイル...

MySQL コマンドライン操作中のエンコードの問題の詳細な説明

1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...

Vue イベントの $event パラメータ = イベント値の場合

テンプレート <el-table :data="データリスト"> &...

キーボード上の各種特殊記号の英語読み方(知識の普及)

キーボード文字英語`バッククォート〜チルダ!叫ぶ@で#ナンバーサイン$ドル%パーセント^キャレット&...