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オペレーティングシステムをインストールします。

推薦する

ミニプログラムカスタムタブバーコンポーネントのカプセル化

この記事の例では、ミニプログラムのカスタムタブバーコンポーネントをカプセル化するための具体的なコード...

jQueryはドロップダウンメニューのスライド効果を実現します

Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...

uniapp エントリーレベル nvue クライミングピット記録の分析

目次序文こんにちは世界画像 境界線の半径を設定する実ピクセルを設定する外部CSSをインポートttfフ...

WeChatアプレット+EChartsで動的更新プロセス記録を実現

序文最近、小さなプログラムでリアルタイムにチャートを更新するという要件に遭遇しました。最初は wx-...

html.cssオーバーフローの包括的な理解

html.cssオーバーフローの包括的な理解XML/HTML コードコンテンツをクリップボードにコピ...

VUEユニアプリ開発環境についての簡単な説明

目次1. HBuilderXビジュアルインターフェースを通じて2. vue-cliコマンドで実行する...

nginx の場所に複数の Proxy_pass メソッドがある

1. まず、nginxの位置情報に関する関連知識を確認しましょう1) 位置マッチング手順: ~ #波...

Dockerコンテナのログ処理の詳細な説明

Docker には多くのログ プラグインがあります。デフォルトでは json-file を使用します...

ユーザーはその理由を知る必要がある

証券会社にいた頃、設計業務が忙しくなかったため、商品のマニュアルを書く役割を担ったことがありました。...

HTML テーブルタグチュートリアル (21): 行の境界線の色属性 BORDERCOLOR

テーブルを美しくするために、行ごとに異なる境界線の色を設定できます。基本的な構文<TR 境界線...

ウェブページのフォント設定についての簡単な説明

サイト全体のフォントを設定することは、常にシンプルでありながら難しい作業です。深く掘り下げていくと、...

MySQL データベースの大文字と小文字の区別の問題

MySQL では、データベースはデータ ディレクトリ内のディレクトリに対応します。データベース内の各...

この記事では、6つの負荷分散技術の実装方法をまとめます(要約)

ロード バランシングは、サーバー クラスタの展開でよく使用されるデバイスです。マシンのパフォーマンス...

SpringBoot を MySQL に接続してデータを取得し、バックエンド インターフェースに書き込む方法

目次1. 新しいプロジェクトを作成する2. 依存関係を追加する3. SpringコンテナにDrive...

Ubuntu 18.04はルート権限を取得し、ルートユーザーとしてログインします

事前に書いておきます:次の手順では、ターミナルにコマンドを入力する必要があります。コンピューターでブ...