首頁 > 軟體

vue.js基於ElementUI封裝了CRUD的彈框元件

2022-07-04 14:01:07

前言

程式碼寫得不好,為什麼不封裝一下呢,如果用的是ElementUI框架,也可以在此基礎上進行二次封裝。譬如說,這個用來對列表資料進行增刪改查的彈框。

開始封裝

原本只是個小功能,但是別的模組也需要用到。

我的想法就是,把彈框標題,table表頭,必填位元組,介面請求路徑,增刪改查CRUD,等等,放在一個json物件裡面。通過父元件向子元件傳參的方式,展示不同內容,呼叫不同的介面。

極大提高了程式碼的複用性。

json物件如下所示

  // 範例:
    let example = {
      // 彈框標題
      popTitle: "編輯主題",
      // table
      columnList: [
        {
          prop: "themeName",
          label: "主題名稱",
        },
        {
          prop: "themeDescribe",
          label: "主題描述",
        },
      ],
      // 必填的欄位
      requiredKeys: ["themeName"],
      tableData: this.themeList,
      // 主鍵,預設為id
      idKey: "id",
      // 刪除的引數名稱,預設為ids
      deleteKey: "ids",
      // 批次的引數名稱,預設為ids
      batchDeleteKey: "ids",
      // 介面請求路徑,增刪改查CRUD
      interfaceUrl: {
        add: "/target/addTheme",
        edit: "/target/updateTheme",
        delete: "/target/deleteTheme",
        // 批次刪除
        batchDelete: "/target/deleteTheme",
        list: "/target/themelist",
      },
    };

table表頭作為列表傳入,資料結構如下

 columnList: [
    {
      prop: "themeName",
      label: "主題名稱",
    },
    {
      prop: "themeDescribe",
      label: "主題描述",
    },
],

在子元件中迴圈渲染出表頭

<el-table-column
  v-for="(item, index) in columnList"
  :key="index"
  :show-overflow-tooltip="item.showOverflowTooltip || true"
  :align="item.align || 'center'"
  :header-align="item.headerAlign || item.align || 'center'"
  :label="item.label"
  :width="item.width"
>
  <template slot-scope="scope">
    <span v-if="scope.row.statusBtn === false">{{ scope.row[item.prop] }}</span>
    <el-input
      v-else-if="scope.row.statusBtn === true"
      v-model="scope.row[item.prop]"
      size="mini"
    />
  </template>
</el-table-column>

在父元件中呼叫

<!-- 編輯主題的彈框 -->
<edit-table-modal
  ref="editTableModal"
  :visible.sync="editTableModal.show"
  :tableObject="themeTableObject"
  v-if="editTableModal.show"
  @ok="editTableFunction"
/>

到此這篇關於vue.js基於ElementUI封裝了CRUD的彈框元件的文章就介紹到這了,更多相關 ElementUI封裝CRUD內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com