複数レベルの複雑な動的ヘッダーの avue-crud 実装例

複数レベルの複雑な動的ヘッダーの avue-crud 実装例

Avue.js は、既存の element-ui ライブラリに基づく二次カプセル化であり、面倒な操作を簡素化します。コアコンセプトはデータ駆動型ビューです。メインコンポーネントライブラリは、テーブルとフォームのシナリオ用です。同時に、企業でより一般的に使用されるコンポーネントを派生させ、再利用性が高く、保守と拡張が容易なフレームワークを実現します。同時に、豊富なデータ表示コンポーネントが組み込まれているため、開発が容易になります。

序文

実際の開発プロセスでは、複数レベルの複雑な動的ヘッダーが必要となり、ヘッダー内のコンテンツが動的に入力されます。以下は avuejs 公式サイトで提供されているヘッダースタイルなので、私のバックグラウンドで返されるデータは avue-crud で json 形式で接合する必要があります。

ここに画像の説明を挿入

実際の開発では、それをつなぎ合わせる必要がありますが、列形式。

カラム: [{
            ラベル: '名前',
            プロパティ: '名前',
            幅:140,
          }, {
            ラベル: '性別 1'、
            小道具: 'セックス',
          },
          {
            ラベル: 'カスタムアイコン'、
            プロパティ: 'アイコン',
            タイプ: "アイコン",
            アイコンリスト: [{
              ラベル: '基本チャート'、
              リスト: ['el-icon-time', 'el-icon-bell', 'el-icon-star-on']
            }]
          }, {
            ラベル: '複雑なヘッダー'、
            子供たち: [{
              ラベル: '情報'、
              子供たち: [{
                ラベル: '年齢'、
                プロパティ: '年齢'
              }, {
                ラベル: '携帯電話番号'、
                プロップ: '電話',
              }]
            }, {
              ラベル: '地域',
              プロパティ: 'アドレス',
              タイプ: '選択'、
              小道具: {
                  ラベル: '名前',
                  値: 'コード'
              },
              dicUrl: 'https://cli.avuejs.com/api/area/getProvince'
            }]
          }, {
            ラベル: 'テスト'、
            プロパティ: 'テスト'、
          },
          {
            ラベル: '携帯電話情報1'、
            プロパティ: 'phone1'
          }],
        },
        データ: [{
          名前: '張三'、
          年齢: 14歳
          住所: '110000',
          電話1: '17547400800',
          電話番号: '17547400800',
          アイコン: 'el-icon-time',
          テスト: 1,
          性別: '男性'
        }, {
          名前: '王武'、
          年齢: 10歳
          住所: '120000',
          テスト: 1,
          性別: 「女性」、
          アイコン: 'el-icon-star-on',
          電話1: '17547400800',
          電話番号: '17547400800'
        }]

バックグラウンドデータの結合

@GetMapping("/getTableHeader")
	パブリックR getTableHeaderJson(){
		Map<String,Object> map = new HashMap<>();
		StringBuilder sb = 新しい StringBuilder();
		sb.append("{label: 'プロセス',children: [");
		リスト<FactoryProcess> processList = factoryProcessService.list();
		(int i = 0; i < processList.size(); i++) の場合 {
			文字列 pid = processList.get(i).getProcessId();
			sb.append("{label:'" + processList.get(i).getProcessName() + "',prop:'" + pid + "',");
			sb.append("children:[{label: '単価',prop: '価格" + pid + "'}, " +
				"{ラベル: '合計'、プロパティ: '合計" + pid + "'}、{ラベル: '完了した数量'、プロパティ: 'completeNum" + pid + "'}、" +
				"{label: '資格検査資格番号', prop: 'qualifiedNum" + pid + "'}," +
				" {label: '不適格な品質検査の数'、prop: 'unqualifiedNum" + pid + "'}, " +
				"{label: 'スクラップ数量',prop: 'scrapNum" + pid + "'}]").append("},");
		};
		sb.append("]}");

		map.put("列",sb.toString());

		R.data(map) を返します。
	}

フロントエンドデータ表示

作成関数でヘッダー情報表示をロードする

// created(){ をロードする
      ヘッダーリストを取得します。
 },
//メソッドの読み込みページに表示される情報: {
      ヘッダーリストを取得する(){
        getHeaderFun().then(res => {
          このオプション列をプッシュ(
                 {
                   ラベル: "製品名",
                   プロパティ: "productName",
                   色:'#eef1f6'
                 },
                 {
                   ラベル: "製品コード"、
                   プロパティ: "productCode",
                 },
                 {
                   ラベル: 「素材」、
                   プロパティ: "productMaterialStr",
                 },
                 {
                   ラベル: "数量",
                   プロパティ: "sumNum",
                 },
                 {
                   ラベル: 「アウトソーシング件数」、
                   プロパティ: "outNum",
                 },
                 {
                   ラベル: 「アウトソーシング完了額」、
                   プロパティ: "outCompleteNum"
                 },
                 {
                   ラベル: 「合計完了金額」、
                   プロパティ: "totalCompleteNum"
                 }
          )
          // 背景のスプライシング情報を取得します。let objs = eval("("+res.data.data.cols+")");
          this.option.column.push(objs);
          this.onLoad(このページ);
        })
      }, 
 }

テーブルからデータを読み込む

// ページデータの表示はバックグラウンドリクエストのprop属性に対応している必要があります onLoad(page, params = {}) {
        this.loading = true;
        findProjectFormList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
          定数データ = res.data.data;
          this.page.total = データ.total;
          // this.data = data.records;

          records = data.records とします。
          データリストを [] にします。
          processListをthis.option.column[7].childrenとします。
          for(let i = 0; i < records.length; i++ ) {
            obj = {
              'productName' : records[i].productName,
              'productCode' : records[i].productCode,
              'productMaterialStr' : records[i].productMaterialStr,
              'sumNum' : レコード[i].sumNum,
              'outNum' : レコード[i].outNum,
              'outCompleteNum' : レコード[i].outCompleteNum、
              'totalCompleteNum': レコード[i].totalCompleteNum、
            }
            processNumList = records[i].processNumList;とします。
            for(j = 0; j < processNumList.length; j++) {
              (k = 0; k < processList.length; k++) の場合 {
                プロセスリスト[k].prop === プロセス番号リスト[j].processCodeの場合{
                // $set は対応するプロパティに値を割り当てます。prop this.$set(obj, 'price'+processNumList[j].processCode, processNumList[j].processPrice);
                  this.$set(obj, 'sum'+processNumList[j].processCode, processNumList[j].processTotal);
                  this.$set(obj, 'completeNum'+processNumList[j].processCode, processNumList[j].completeNum);
                  this.$set(obj, 'qualifiedNum'+processNumList[j].processCode, processNumList[j].qualifiedNum);
                  this.$set(obj, 'unqualifiedNum'+processNumList[j].processCode, processNumList[j].unqualifiedNum);
                  これを$set(obj, 'scrapNum'+processNumList[j].processCode, processNumList[j].scrapNum);
                  this.$set(obj, 'shift'+processNumList[j].processCode, processNumList[j].shiftName);
                }
              }
            }
            データリストをプッシュします。
          }
          this.data = データリスト;

          this.loading = false;
          this.selectionClear();

        })
      },

ページ効果表示

ここに画像の説明を挿入

ここに画像の説明を挿入

avue-crud マルチレベル複合動的ヘッダーの実装例に関するこの記事はこれで終わりです。avue-crud マルチレベル複合動的ヘッダーの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue+Element uiはバックグラウンドの戻りデータに応じて動的なヘッダー操作を設定します
  • Vue 要素でのテーブルの動的レンダリング (動的テーブル ヘッダー)

<<:  あまり一般的ではないが便利な CSS 属性操作の完全ガイド

>>:  MySQL 8の新機能におけるグローバルパラメータの永続性の詳細な説明

推薦する

Nexus をベースに Alibaba Cloud プロキシ ウェアハウスを構成するプロセスの分析

Nexus のデフォルトのリモートリポジトリは https://repo1.maven.org/ma...

LinuxのCPU負荷とCPU使用率の詳細な説明

CPU 負荷と CPU 使用率これらは両方とも、ある程度、マシンの忙しさを反映できます。 CPU 使...

知らないかもしれない実用的なTypeScriptのヒント

目次序文関数のオーバーロードマッピングタイプ部分的、読み取り専用、Null 可能、必須選択、記録除外...

Jupyter Notebook で JavaScript を実行する方法

その後、VSC で Jupyter Notebook を使用する方法も追加しました...アナコンダを...

Dockerコンテナはルーティングを介して直接通信し、ネットワーク通信を実現します。

概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...

JavaScript を使用してセカンダリ メニューを作成する

この記事では、セカンダリメニュー効果を実現するためのJavaScriptの具体的なコードを参考までに...

JavaScript - Vue でのスロットの使用: スロット

目次Vue でのスロットの使用: slotスコープ付きスロット: テンプレートタグで囲む要約するVu...

JSで実現したページサイドバーの効果に関する研究

目次発見: ディスプレイアニメーションの応用実装:記事の1行目を表示する効果を実現する方法実際、その...

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

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

Linuxのdateコマンドの使用

1. コマンドの紹介date コマンドは、現在の時刻または指定された時刻を指定された形式で表示するた...

MySQL の高可用性アーキテクチャの完全な説明: MHA アーキテクチャ

目次1. はじめに2. 構成3. 作業プロセス4. 建築5. 表示例MHA (Master HA) ...

VUE 応答性原理の詳細な説明

目次1. 応答原理の基盤2. コアオブジェクト: Dep と Watcher 3. 依存関係を収集し...

React と Threejs を使用して VR パノラマ プロジェクトを作成する詳細なプロセス

最近、 Three.jsでReactを使用して、720 度のパノラマ写真を閲覧できるプロジェクトを構...