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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: あまり一般的ではないが便利な CSS 属性操作の完全ガイド
>>: MySQL 8の新機能におけるグローバルパラメータの永続性の詳細な説明
目次序文1. バイナリツリー1.1. 二分木の走査1.2. jsを使用してバイナリツリーを表現する1...
この記事では、参考までに簡単なタイマーを実装するためのJavaScriptの具体的なコードを紹介しま...
現在の日付を照会する CURRENT_DATE() を選択します。 CURDATE() を選択する;...
インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コ...
問題の説明: phpstorm の SFTP ホストを 192.168.122.1 に設定すると、接...
目次1. コンポーネントの紹介2. ソースコード分析2.1 テンプレート2.2 スクリプト2.3 実...
1. 現在の日付 DATE_SUB(curdate(),INTERVAL 0 DAY) を選択します...
Tomcat の上位バージョンでは、デフォルト モードは NIO モードを使用することになります。...
MySQL パーティションテーブルの概要MySQL の人気が高まるにつれて、MySQL に保存される...
前面に書かれた今日のインターネット分野では、Nginx は最も広く使用されているプロキシ サーバーの...
Linux サーバー A と B が 2 台あり、一方のサーバーから SSH 経由でパスワードなしで...
レスポンシブレイアウト開発の基礎知識この章は主に以下の部分に分かれています• レスポンシブデザインを...
1. はじめに周知のように、データベース ミドルウェアの読み取り/書き込み分離のアプリケーション シ...
操作効果: html <!-- この要素は表示されません。DOM は JavaScript に...
目次MySQL 8 の WITH クエリについて学ぶ1. 例3. 練習するMySQL 8 の WIT...