複数レベルの複雑な動的ヘッダーの 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の新機能におけるグローバルパラメータの永続性の詳細な説明

推薦する

JS を使用してバイナリ ツリー トラバーサル アルゴリズムのサンプル コードを実装する

目次序文1. バイナリツリー1.1. 二分木の走査1.2. jsを使用してバイナリツリーを表現する1...

JavaScript でシンプルなタイマーを実装する

この記事では、参考までに簡単なタイマーを実装するためのJavaScriptの具体的なコードを紹介しま...

Mysql 日付クエリの詳細な紹介

現在の日付を照会する CURRENT_DATE() を選択します。 CURDATE() を選択する;...

TypeScript インターフェース定義ケースチュートリアル

インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コ...

PhpStormがVirtualBoxに接続できない問題を解決する

問題の説明: phpstorm の SFTP ホストを 192.168.122.1 に設定すると、接...

Element PlusはAffixを実装します

目次1. コンポーネントの紹介2. ソースコード分析2.1 テンプレート2.2 スクリプト2.3 実...

コネクタコンポーネントから Tomcat のスレッドモデルを見る - BIO モード (推奨)

Tomcat の上位バージョンでは、デフォルト モードは NIO モードを使用することになります。...

MySQL ベストプラクティス: パーティションテーブルの基本タイプ

MySQL パーティションテーブルの概要MySQL の人気が高まるにつれて、MySQL に保存される...

Nginx で Http、Https、WS、WSS を設定する方法

前面に書かれた今日のインターネット分野では、Nginx は最も広く使用されているプロキシ サーバーの...

Linux での SSH パスワードフリーログイン設定の詳細な説明

Linux サーバー A と B が 2 台あり、一方のサーバーから SSH 経由でパスワードなしで...

レスポンシブレイアウトの概要(推奨)

レスポンシブレイアウト開発の基礎知識この章は主に以下の部分に分かれています• レスポンシブデザインを...

MySQL フェイルオーバー ノート: アプリケーション対応設計の詳細な説明

1. はじめに周知のように、データベース ミドルウェアの読み取り/書き込み分離のアプリケーション シ...

CSS3は光る境界線効果を実現します

操作効果: html <!-- この要素は表示されません。DOM は JavaScript に...

MySQL 8.0 WITH クエリの詳細

目次MySQL 8 の WITH クエリについて学ぶ1. 例3. 練習するMySQL 8 の WIT...