Vueはツリーテーブルを実装する

Vueはツリーテーブルを実装する

この記事では、ツリーテーブルを実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次のとおりです。

効果は以下のとおりです。

中央の画像:

コードは次のとおりです。

<テンプレート>
  <div class="treeTable">
    <テーブル>
      <tr>
        <th>デバイスタイプ</th>
        <th>製品名</th>
        <th>バージョン</th>
        <th>チェック項目</th>
        <th>サブ項目を確認する</th>
        <th>主要カテゴリを確認する</th>
        <th>機器サブカテゴリ</th>
        <th>備考</th>
      </tr>
      <t本文>
        <tr v-for="(item,index) データ内" :key="index" v-show="item.display">
          <td :style="{paddingLeft:item.left}"><span @click="nodeClick(index)" v-if="item.branch" :class="item.expand? 'expand':'collapse'"></span>{{item.type}}</td>
          <td>{{アイテム名}}</td>
          <td>{{item.version}}</td>
          <td>{{item.checkItem}}</td>
          <td>{{item.checkSubItem}}</td>
          <td v-if="item.branch">{{item.BigItem}}</td>
          <td v-else><input type="text" v-model="item.BigItem"></td>
          <td v-if="item.branch">{{item.smallItem}}</td>
          <td v-else><input type="text" v-model="item.smallItem"></td>
          <td v-if="item.branch">{{item.remark}}</td>
          <td v-else><input type="text" v-model="item.remark"></td>
        </tr>
      </tbody>
    </テーブル>
  </div>
</テンプレート>

<スクリプト>
/* eslint を無効にする */ 
エクスポートデフォルト{
  名前: 'treeTable',
  データ () {
    戻る {
      メッセージ: 'Vue.js アプリへようこそ',
      データ:[
          {left:'0'、branch:true、expand:true、display:true、id:'1'、pid:'0'、type:'Firewall'、name:'',version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'0.5rem'、branch:true、expand:true、display:true、id:'1_1'、pid:'1'、type:'Firewall'、name:'CE001'、version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1rem'、branch:true、expand:true、display:true、id:'1_1_1'、pid:'1_1'、type:'Firewall'、name:'CE001'、version:'VR001'、checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1.5rem'、branch:true、expand:true、display:true、id:'1_1_1_1'、pid:'1_1_1'、type:'ファイアウォール'、name:'CE001'、version:'VR001'、checkItem:'チェック項目 A'、checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'3rem'、branch:false、expand:true、display:true、id:'1_1_1_1_1'、pid:'1_1_1_1'、type:'ファイアウォール'、name:'CE001'、version:'VR001'、checkItem:'チェック項目 A'、checkSubItem:'チェックサブ項目 A'、BigItem:'ソフトウェアバージョン'、smallItem:'チェック項目 A'、remark:'備考情報'}、
          {left:'0'、branch:true、expand:true、display:true、id:'2'、pid:'0'、type:'データ交換センター'、name:'',version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'0.5rem',branch:true,expand:true,display:true,id:'2_1',pid:'2',type:'データ交換センター',name:'CE001',version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1rem'、branch:true、expand:true、display:true、id:'2_1_1'、pid:'2_1'、type:'データ交換センター'、name:'CE001'、version:'VR001'、checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1.5rem',branch:true,expand:true,display:true,id:'2_1_1_1',pid:'2_1_1',type:'データ交換センター',name:'CE001',version:'VR001',checkItem:'チェック項目A',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'3rem',branch:false,expand:true,display:true,id:'2_1_1_1_1',pid:'2_1_1_1',type:'データ交換センター',name:'CE001',version:'VR001',checkItem:'チェック項目A',checkSubItem:'チェックサブ項目A',BigItem:'ソフトウェアバージョン',smallItem:'チェック項目A',remark:'備考情報'},
        ]、
    }
  },
  方法:{
    ノードクリック(インデックス){
      this.datas[index].expand = this.datas[index].expand ? false : true
      pid = this.datas[index].idとします。 
      if (this.datas[index].expand) {
        for(let i = index +1;i<this.datas.length;i++){
          reg = new RegExp('^'+pid) とします。
          if (this.datas[i].pid == pid) {
            this.datas[i].display = true
            this.datas[i].expand = false 
          }そうでない場合、reg.test(this.datas[i].id)){
            this.datas[i].display = false
            this.datas[i].expand = false
          }それ以外{
            壊す
          }
        }
      }それ以外{
        for(let i = index +1;i<this.datas.length;i++){
          reg = new RegExp('^'+pid) とします。
          if(reg.test(this.datas[i].id)){
            this.datas[i].display = false
            this.datas[i].expand = false 
          }それ以外{
            壊す
          }
        }
      }
      // for(let i = index +1;i<this.datas.length;i++){
      // reg = new RegExp('^'+pid) とします
      // if(reg.test(this.datas[i].id)){
      // if(this.datas[index].expand){
      // this.datas[i].display = true
      // }それ以外{
      // this.datas[i].display = false
      // this.datas[i].expand = false 
      // }
      // }
      // }
    }
  }
}
</スクリプト>
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
th、td{
  幅: 150ピクセル;
}
td:最初の子{
  テキスト配置: 左;
}
td スパン{
  表示: インラインブロック;
  幅: 1.5rem;
  高さ: 1rem;
}
td span.expand{
  背景画像: url('./folder_open.png');
}
td span.collapse{
  背景画像: url('./folder.png');
}
</スタイル>

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

以下もご興味があるかもしれません:
  • Vue+element UI でツリーテーブルを実現
  • vue-cli+element-ui ツリーテーブル(多階層テーブル トス小計)の詳しい説明
  • vue+element UI を使用してチェックボックス付きのツリーテーブルを実装するためのサンプルコード
  • Vue ベースのドラッグ可能なツリーテーブルの例の詳細な説明

<<:  Linux インデックスノード inode の詳細な説明

>>:  MySQL データベースのスケジュールされたバックアップ スクリプトの共有

推薦する

Node+Express テストサーバーのパフォーマンス

目次1 テスト環境1.1 サーバーハードウェア1.1.1 t2.マイクロ1.1.2 c5.large...

JavaScript の new 演算子の原理と例の詳細な説明

新しい用途new の機能は、コンストラクターを通じてインスタンス オブジェクトを作成することです。イ...

ウェブデザインの仕事に応募する方法

<br />みなさんこんにちは!ここで皆さんとチャットできて光栄です! (*^__^*)...

CSSを使用して炎の効果を作成する方法

本文は以下から始まります。 123WORDPRESS.COM ダウンロード:純粋な CSS3 で超リ...

Linux コマンドラインからファイルを削除する実用的な方法

rm コマンドrm コマンドは、ファイルを削除するときによく使用されるコマンドです。ファイルまたはデ...

Tomcat の 404 エラーの解決方法の詳細な説明

Tomcat テストで 404 問題が発生します。問題は次のとおりです。 HTTP ステータス 40...

MySQL 演算子の具体的な使用法 (and、or、in、not)

目次1. はじめに2. 本文2.1 および演算子2.2 または演算子2.3 オペレーター2.4 no...

CSSリンクと@importの違いの詳細な説明

HTML に CSS を追加するにはどうすればいいですか? HTML で CSS を設定する方法は ...

同じ日の最初の3つのデータを取得するためのMySQLタイムラインデータ

テーブルデータを作成する テーブル `praise_info` を作成します ( `id` bigi...

mysql-joinsの具体的な使用方法

目次結合構文: 1. InnerJOIN: (内部結合) 2. LeftJOIN: (左結合) 3....

mybatis-plusページングパラメータが渡された後、SQLのwhere条件にはページング情報操作の制限がありません

2時間近くかけて、さまざまな方法を試しました。後で、whereでフィルタリングした後のデータ量が1ペ...

音声キューイングシステムを実装するためのJavaScript

目次導入主な特徴エフェクト表示キーコード導入音声キューイングシステムは、銀行、レストラン、病院などの...

GitHub のサードパーティ認証方式を Vue で実装する例

目次OAuth アプリの作成コードを取得するaccess_tokenを取得するユーザー情報を取得する...

CentOS 6 は Docker を使用して Zookeeper 操作例を展開します

この記事では、Docker を使用して Centos6 に Zookeeper をデプロイする方法に...

Vue の高度な構築プロパティの詳細な説明

目次1. ディレクティブカスタムディレクティブ2. ミックスイン3. 継承を拡張する4. 提供して注...