Vue Element フロントエンドアプリケーション開発 従来の Element インターフェースコンポーネント

Vue Element フロントエンドアプリケーション開発 従来の Element インターフェースコンポーネント

1. リストインターフェースとその他のモジュールの表示処理

従来のリスト表示インターフェースは、一般的にいくつかの領域に分かれています。1 つはクエリ領域、1 つはリスト表示領域、もう 1 つは下部のページング コンポーネント領域です。クエリ領域は主に共通条件のレイアウトに使用され、インポート、エクスポート、追加、一括追加、一括削除などのボタンなど、いくつかのグローバルまたはバッチ操作が追加されています。メインリスト表示領域は比較的複雑で、さまざまなデータをよりユーザーフレンドリーに表示する必要があります。タグ、アイコン、ボタン、その他のインターフェイス要素と組み合わせて表示できます。リストには通常、表示、編集、削除など、単一行レコードを処理するためのいくつかの操作が含まれています。一括削除の場合は、上部のボタン領域に配置できます。

通常のボタン、テーブル、ページング コンポーネントについては、すでに紹介したので、ここでは繰り返しません。

具体的なインターフェース コンポーネントを紹介する前に、まずは全体的なインターフェース レイアウトを理解しましょう。通常のリスト インターフェース、追加、編集、表示、インポートなどのインターフェースをまとめます。リスト ページを除いて、他のコンテンツは、次のインターフェース図に示すように、ポップアップ ダイアログ ボックスの形式で処理されます。

各ダイアログ ボックスの :visible プロパティ値によって、どのモーダル ダイアログ ボックスが表示されるか、または非表示になるかが決まります。

Vue JS モジュールでは、対応するダイアログ ボックスに表示される変数を定義するだけでなく、各ダイアログ ボックスに対して、データの双方向バインディング用のフォーム情報を定義します。

共通的な追加、編集、表示、インポートなどのコンテンツの定義は、ダイアログ コンポーネントとして定義されています。共通ダイアログ コンポーネントの使用コードは次のとおりです。

<el-ダイアログ
  title="ヒント"
  :visible.sync="ダイアログを表示"
  幅="30%"
  :before-close="ハンドルを閉じる">
  <span>これはメッセージです</span>
  <span slot="フッター" class="ダイアログフッター">
    <el-button @click="dialogVisible = false">キャンセル</el-button>
    <el-button type="primary" @click="dialogVisible = false">OK</el-button>
  </span>
</el-ダイアログ>

ダイアログボックスのスタイルを制御するには、フッターのスロットに注目します。通常、処理ボタンはここに配置します。たとえば、表示インターフェイスダイアログボックスの場合は、次のように定義します。

一般的に、フォームコンテンツが多いシナリオでは、通常、表示または入力用に複数のタブに分割して管理しやすくします。インターフェイスの全体的な効果を以下に示します。

ダイアログ ボックスのデータ バインディングでは、ダイアログ ボックスを開く前に、まず API モジュールを通じて JSON データを要求し、次にそれを対応するダイアログ モデル属性にバインドします。たとえば、表示インターフェイスの場合、処理ロジックは次のようになります。

表示ビュー(id) {
      var パラメータ = { id: id }
      GetProductDetail(param).then(データ => {
        オブジェクトにデータを割り当てます。
      })
      this.isView = true
    },

テーブルをダブルクリックする場合は、次のテンプレート コードと JS コードに示すように、そのビューの詳細処理操作もバインドします。

テンプレートの HTML コードは次のとおりです。

<el-テーブル
  v-loading="リスト読み込み中"
  :data="製品リスト"
  国境
  フィット
  ストライプ
  現在の行をハイライト
  :header-cell-style="{background:'#eef1f6',color:'#606266'}"
  @selection-change="選択変更"
  @row-dblclick="rowDbclick"
>

JSロジックコードは次のとおりです

rowDbclick(行、列) {
      var id = 行.ID
      id を表示します。
    },

2. 従来のインターフェースコンポーネントの使用

一般的に、インターフェース コンポーネントを使用する場合は、公式サイトの「Element コンポーネントの使用方法」を参照して、対応するコンポーネントのコードを見つけます。ここでは、一般的なさまざまな Element コンポーネントについて簡単に紹介します。

1) フォームとフォーム項目、単一のテキストボックス

フォームの場合、通常は対応する名前を定義し、そのデータに対応するモデル名を以下のように設定します。

<el-form ref="viewForm" :model="viewForm" label-width="80px">

フォーム項目の場合、通常はフォーム項目のラベルを定義し、対応する入力コントロールまたは表示コントロールを挿入するだけです。以下に示すように、単一のテキスト コンポーネントで使用します。

 <el-form-item label="製品番号">
   <el-input v-model="editForm.ProductNo" />
 </el-form-item>

このうち、v-model="editForm.ProductNo" が対応するバインドデータです。

フォーム項目の場合、フィールドに検証処理を追加し、データが送信される前に顧客の入力が有効かどうかを確認できます。

<el-フォーム項目
    prop="メール"
    label="メールボックス"
    :ルール="[
      { 必須: true、メッセージ: 'メールアドレスを入力してください'、トリガー: 'blur' },
      { type: 'email'、message: '有効なメールアドレスを入力してください'、trigger: ['blur'、'change'] }
    ]"
  >
    <el-input v-model="dynamicValidateForm.email"></el-input>
  </el-form-item>

このフォーム項目では、prop="email" などの prop 属性設定を追加する必要があることに注意してください。

通常、レイアウトを制御するには、次のコードに示すように、el-row を組み合わせてレイアウト プロセスを実行します (1 行は span 24 に相当し、span=12 は 2 つのコントロール グループが 1 行に配置されることを意味します)。

<el-行>
  <el-col :span="12">
    <el-form-item label="製品番号">
      <el-input v-model="editForm.ProductNo" />
    </el-form-item>
  </el-col>
  <el-col :span="12">
    <el-form-item label="バーコード">
      <el-input v-model="editForm.BarCode" />
    </el-form-item>
  </el-col>
</el-row>

2) ドロップダウンリストコントロールのバインディング

ドロップダウン リストのバインディング プロセスでは、値を v-model を通じてバインディングしますが、オプションはデータ リストを通じてバインディングできます。

<el-form-item label="製品タイプ">
  <el-select v-model="editForm.ProductType" filterable="" placeholder="選択してください">
    <el-オプション
      v-for="(item, key) in typeList"
      :key="キー"
      :label="アイテム.値"
      :value="アイテムキー"
    />
  </el-select>
</el-form-item>

オプションの typeList については、ページが初期化されるときに取得できます。

作成された() {
    // 辞書などをバインドするための製品タイプを取得します。GetProductType().then(data => {
      if (データ) {
        データ.forEach(アイテム => {
          this.productTypes.set(アイテムID、アイテム名)
          this.typeList.push({ キー: item.id, 値: item.name })
        })

        // リスト情報を取得する this.getlist()
      }
    });
  },

通常の複数行テキスト ボックスの場合、処理は通常の 1 行テキスト ボックスの場合と同様です。type="textarea" と rows の値を指定するだけです。

<el-tab-pane label="説明" name="2番目">
    <el-form-item label="説明">
      <el-input v-model="editForm.Description" type="textarea" :rows="10" />
    </el-form-item>
  </el-tab-pane>

HTML を表示する必要のあるコンテンツについては、DIV コントロールを使用して表示し、v-html タグを使用して HTML コードを含むコンテンツを処理できます。

 <el-tab-pane label="詳細">
    <el-form-item label="詳細な説明">
      <div class="border-radius" v-html="viewForm.Note" />
    </el-form-item>
  </el-tab-pane>

3) 画像表示

表示する必要のある一部のサーバー イメージについては、Element イメージ コンポーネントの設定に従って要求して処理することができます。以下は、単一イメージと複数イメージの表示およびプレビュー操作です。

画像表示のコードは以下の通りです。

<el-tab-pane label="画像情報">
    <el-form-item label="カバー画像">
      <el-image
        スタイル="幅: 100px; 高さ: 100px"
        :src="viewForm.Picture"
        :preview-src-list="[viewForm.Picture]"
      />
    </el-form-item>
    <el-form-item label="バナー画像">
      <el-image
        スタイル="幅: 100px; 高さ: 100px"
        :src="viewForm.バナー"
        :preview-src-list="[viewForm.Banner]"
      />
    </el-form-item>
    <el-form-item label="商品表示画像">
      <el-image
        v-for="viewForm.pics 内の項目"
        :key="アイテムキー"
        クラス="境界半径"
        :src="アイテムの写真"
        スタイル="幅: 100px; 高さ: 100px; パディング: 10px"
        :preview-src-list="getPreviewPics()"
      />
    </el-form-item>
  </el-tab-pane>

上図では、画像が 1 枚の場合、[viewForm.Banner] のように、プレビュー用の URL としてコレクションを設定できます。画像が複数ある場合は、getPreviewPics() 関数に示すように、画像リストを取得する関数を使用する必要があります。

プレビュー画像を取得する() {
      // ViewForm.pics 内の pic コレクションを変換します var list = []
      if (this.viewForm.pics) {
        this.viewForm.pics.forEach(item => {
          if (item.pic) {
            リスト.push(item.pic)
          }
        })
      }
      返品リスト
    }

4) サードパーティの拡張機能コントロール

拡張コンポーネントを必要とする一部のアプリケーションでは、通常、ソリューションを検索し、npm を通じて対応するコンポーネントをインストールします。たとえば、バーコードと QR コードの場合、@chenfengyuan/vue-barcode と @chenfengyuan/vue-qrcode を使用します。通常、Github でキーワードを検索すると、人気のあるサードパーティ コンポーネントが見つかります。

これらのコンポーネントをインストールするための具体的な手順は、以下を参照してください (アンインストールする場合は、install を uninstall に変更するだけです)。

npm インストール @chenfengyuan/vue-barcode vue

同様に

npm インストール @chenfengyuan/vue-qrcode vue

バーコードとQRコードの表示効果は以下のとおりです

バーコードとQRコードのコンポーネントをグローバルにインポートする場合は、次のコードに示すように、main.jsにインポートできます。

// バーコード、QRコードをインポート
'@chenfengyuan/vue-barcode' から VueBarcode をインポートします。
'@chenfengyuan/vue-qrcode' から VueQrcode をインポートします。
Vue.component(VueBarcode.name, VueBarcode);

リッチテキスト編集では、Tinymce サードパーティコンポーネントを使用して編集を実装しており、表示効果は以下のようになります。

コードは次のとおりです

<el-tab-pane label="詳細な説明" name="3番目">
    <el-form-item label="詳細な説明">
      <tinymce v-model="editForm.Note" :height="300" />
    </el-form-item>
  </el-tab-pane>

上記は、いくつかの一般的なインターフェースコンポーネントの使用例です。ファイルのアップロードと写真を組み合わせた操作については、後ほど紹介します。

3. カスタムコンポーネントの作成と使用

以前の BS 開発に比べて Vue を使用する利点は、コンポーネント化を簡単に実装できることです。これは素晴らしいことです。コントロールを定義すると、複数のインターフェイスで使用できるため非常に便利であり、カプセル化はニーズに応じて処理できます。

クエリ領域の一般的なインターフェース効果を以下に示します。一般的に使用されるいくつかのクエリ条件に加えて、通常はいくつかのドロップダウン リストがあります。これらは、バックグラウンド ディクショナリにバインドされたコンテンツである可能性があります。一般的なディクショナリ ドロップダウン リスト コンポーネントとして使用することを検討できます。

実際、インターフェースに入るときに、これらの条件ドロップダウン リストが必要になることがよくあります。

そこで、カスタム コンポーネントを定義して、それをインターフェースで使用してみましょう。

Components ディレクトリにディレクトリを作成し、以下に示すように、my-dictdata.vue という名前のコンポーネント vue ファイルを作成します。

インターフェース テンプレート コードでは、主に選択コンポーネントを使用します。

<テンプレート>
  <el-select v-model="svalue" filterable clearable placeholder="選択してください">
    <el-オプション
      v-for="(item, index) in dictItems"
      :key="インデックス"
      :label="item.テキスト"
      :value="アイテムの値"
    />
  </el-select>
</テンプレート>

スクリプトロジックコードは次のとおりです。

<スクリプト>
// API モジュールクラスメソッドをインポートします import { GetDictData } from '@/api/dictdata'

エクスポートデフォルト{
  name: 'MyDictdata', // コンポーネント名 props: {
    typeName: { // 辞書型、バックエンド辞書インターフェースからデータを取得 type: String,
      デフォルト: ''
    },
    オプション:{// 固定リストモード、直接バインディングタイプ: 配列、
      デフォルト: () => { return [] }
    }
  },
  データ() {
    戻る {
      dictItems: [], // 辞書リストを設定 svalue: '' // 選択した値 }
  },
  時計:
    // ドロップダウンボックスの値が変更されたかどうかを判定する svalue(val, oldVal) {
      if (val !== oldVal) {
        this.$emit('input', this.svalue);
      }
    }
  },
  マウント() {
    var that = this;

    if (this.typeName && this.typeName !== '') {
      // 辞書型を使用してサーバーからデータを要求します GetDictData(this.typeName).then(data => {
        if (データ) {
          データ.forEach(アイテム => {
            if (item && typeof (item.Value) !== 'undefined' && item.Value !== '') {
              that.dictItems.push(アイテム)
            }
          });
        }
      })
    } それ以外の場合 (this.options && this.options.length > 0) {
      // 固定の辞書リストを使用する this.options.forEach(item => {
        if (item && typeof (item.Value) !== 'undefined' && item.Value !== '') {
          that.dictItems.push(アイテム)
        }
      });
    }
    // デフォルト値を設定します。this.svalue = this.value;
  },
  メソッド: {

  }
}
</スクリプト>

主なことは、辞書データの取得を処理し、それをモデル オブジェクトにバインドすることです。

ページで使用する前に、定義したコンポーネントをインポートする必要があります。

'@/components/Common/my-dictdata' から myDictdata をインポートします。

それをコンポーネントに含めます

エクスポートデフォルト{
  コンポーネント: { myDictdata },

次に、選択コンポーネントコードを直接使用する必要があります

<el-select v-model="searchForm.ProductType" filterable clearable placeholder="選択してください">
  <el-オプション
    v-for="(item, key) in typeList"
    :key="キー"
    :label="アイテム.値"
    :value="アイテムキー"
  />
</el-select>

1行のコードに簡略化できる

<my-dictdata v-model="searchForm.ProductType" type-name="製品タイプ" />

固定リストの場合は、一般的な処理コードを使用することもできます。

<my-dictdata v-model="searchForm.Status" :options="ステータス" />

ステータスは定義されたオブジェクトの集合である

状態: [
    { テキスト: 'Normal'、値: 0 },
    { テキスト: '推奨'、値: 1 },
    { テキスト: '無効'、値: 2 }
  ]

とても便利で、得られる効果も変わりません。

上記は、ダイアログ レイヤー モードを通じて統合された複数のページの内容であり、その使用方法を紹介するとともに、インターフェイスで共通の要素コンポーネントを使用する方法と、インターフェイス コードの使用を簡素化するために辞書リストの主な定義コンポーネントを定義する方法についても説明します。

上記は、Vue Element フロントエンドアプリケーション開発の従来の Element インターフェースコンポーネントの詳細な内容です。Vue Element 従来の Element インターフェースコンポーネントの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • vue-element-adminフレームワークを使用して、バックエンドからメニュー機能を動的に取得します。
  • Vue+elementUI コンポーネントは、折りたたみ可能な動的レンダリングのマルチレベル サイドバー ナビゲーションを再帰的に実装します。
  • プレーヤー機能を実現するためのvue + element uiのサンプルコード
  • Vue要素のバックグラウンド認証プロセスの分析
  • Vue ベースの要素ボタン権限実装ソリューション
  • Vue+element+oss はフロントエンドのフラグメントアップロードとブレークポイント再開を実現します
  • 要素 DateTimePicker+vue ポップアップボックスに時間のみが表示される問題を解決する
  • VueはElementUIのフォームサンプルコードを模倣する
  • vue3.0 で要素を使用するための完全な手順
  • Vue Elementのテーブルコンポーネントをカプセル化する方法

<<:  Linuxプロセス監視と自動再起動の簡単な実装方法

>>:  Linux に JDK Tomcat MySQL をインストールするチュートリアル (Mac を使用したリモート アクセス)

推薦する

CSS で 3D ブック効果を実装するためのサンプル コード

さっそく、レンダリングを見てみましょうソースコードは以下のとおりです <!DOCTYPE ht...

バックエンドデータを取得するためのVue Elementフロントエンドアプリケーション開発

目次概要1. バックエンドデータの取得と処理2. インターフェース表示処理概要前回のエッセイ「ステッ...

Docker ファイルの保存パス、コンテナの起動コマンド操作の取得

コンテナはすでに作成されていますが、その起動パラメータ(データがマウントされる場所)を知る方法 #コ...

Docker イメージのインポートとエクスポートのコード例

Dockerイメージのインポートとエクスポートこの記事では、移行、バックアップ、アップグレードなどの...

CSS と Bootstrap アイコンを使用して、上下にジャンプするインジケーター矢印のアニメーション効果を作成します。

ページが非常に長い場合は、下にさらにコンテンツがあることをユーザーに知らせるために矢印が必要になるこ...

Vueはタブ切り替えの虫眼鏡効果を実装します

この記事では、タブ切り替えの虫眼鏡効果を実現するためのVueの具体的なコードを例として紹介します。具...

MySQL GRANT ユーザー認証の実装

承認とは、ユーザーに特定の権限を付与することです。たとえば、新しく作成したユーザーに、すべてのデータ...

要素 el-table テーブルの二次カプセル化 (テーブルの高さの調整付き)

序文会社でのインターンシップ中、フロントエンド開発にはvue+element-uiフレームワークを使...

HTML テーブル マークアップ チュートリアル (2): テーブル境界属性 BORDER

デフォルトでは、テーブルの境界線は 0 ですが、テーブルの境界線を設定できます。基本的な構文<...

Nginxポーリングアルゴリズムの基本的な実装方法の詳細な説明

ポーリングアルゴリズムの紹介多くの人が職場で nginx を使用しており、その設定に精通しています。...

JavaScript の for ループと二重 for ループの詳細な説明

forループfor ループは配列の要素をループします。文法: for (初期化変数; 条件式; 繰り...

ウェブページを作成するために最もよく使用されるHTMLタグ

1. よく使われるHTMLタグの最適化HTML は Web 編集者にとって基本的なスキルであるべきで...

Firebug ツールを使用して iPad でページをデバッグする

iPad でページをデバッグするにはどうすればいいですか? iOS 5 をご利用の場合、iPad の...

MySQL インデックスのクイックガイド

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

ElementUIテーブルのヘッダーアイコンにフローティングプロンプトを追加します。

この記事では主に、ElementUI テーブルのヘッダー アイコンにフローティング プロンプトを追加...