欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Element 的 el-table 表格實現(xiàn)單元格合并功能

 更新時間:2024年07月08日 10:49:55   作者:koiyQ  
這篇文章主要介紹了Element 的 el-table 表格實現(xiàn)單元格合并功能,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧

Element 的 el-table 表格實現(xiàn)單元格合并

在這里插入圖片描述

html 部分

<template>
  <div class="index-wapper">
    <el-table :data="tableData" :span-method="objectSpanMethod" border>
      <el-table-column v-for="(item, index) in tableHeader" :key="index" :prop="item.prop" :label="item.label"
        :fixed="item.fixed" align="center"></el-table-column>
    </el-table>
  </div>
</template>

js 部分

<script>
export default {
  name: "index-page",
  components: {},
  props: {},
  data() {
    return {
      tableHeader: [
        {
          prop: "country",
          label: "城市",
          fixed: true,
        },
        {
          prop: "title",
          label: "地區(qū)",
          fixed: true,
        },
        {
          prop: "data1",
          label: "1",
          fixed: false,
        },
        {
          prop: "data2",
          label: "2",
          fixed: false,
        },
        {
          prop: "data3",
          label: "3",
          fixed: false,
        },
        {
          prop: "data4",
          label: "4",
          fixed: false,
        },
        {
          prop: "data5",
          label: "5",
          fixed: false,
        },
      ],
      tableData: [
        {
          id: 1,
          country: "杭州",
          title: "濱江",
          data1: 0,
          data2: 1,
          data3: 0,
          data4: 1,
          data5: 0,
        },
        {
          id: 2,
          country: "杭州",
          title: "西湖",
          data1: 0,
          data2: 0,
          data3: 0,
          data4: 0,
          data5: 0,
        },
        {
          id: 3,
          country: "杭州",
          title: "余杭",
          data1: 0,
          data2: 1,
          data3: 0,
          data4: 1,
          data5: 1,
        },
        {
          id: 4,
          country: "長沙",
          title: "岳麓",
          data1: 0,
          data2: 0,
          data3: 0,
          data4: 0,
          data5: 1,
        },
        {
          id: 5,
          country: "長沙",
          title: "開福",
          data1: 1,
          data2: 1,
          data3: 0,
          data4: 1,
          data5: 0,
        },
      ],
      spanArr: [],
    };
  },
  mounted() {
    this.getSpanArr();
  },
  methods: {
    /**
     * 合并處理
     */
    getSpanArr() {
      const hLen = this.tableHeader.length;
      // i表示行,j表示列
      for (let i = 0; i < this.tableData.length; i++) {
        if (i === 0) {
          for (let j = 0; j < hLen; j++) {
            this.spanArr[i * hLen + j] = {
              rowspan: 1,
              colspan: 1,
            };
          }
        } else {
          // 當前和上一次的一樣,合并所有列的相同數(shù)據(jù)單元格
          for (let j = 0; j < hLen; j++) {
            // 指定合并哪些列
            if (this.tableHeader[j].prop === "country") {
              // 哪些不合并,country不一樣的,不合并
              if (
                this.tableData[i]["country"] !==
                this.tableData[i - 1]["country"]
              ) {
                this.spanArr[i * hLen + j] = {
                  rowspan: 1,
                  colspan: 1,
                };
              } else if (
                this.tableData[i][this.tableHeader[j].prop] ===
                this.tableData[i - 1][this.tableHeader[j].prop]
              ) {
                let beforeItem = this.spanArr[(i - 1) * hLen + j];
                this.spanArr[i * hLen + j] = {
                  rowspan: 1 + beforeItem.rowspan, // 合并幾列
                  colspan: 1, // 合并幾行
                };
                beforeItem.rowspan = 0;
                beforeItem.colspan = 0;
              } else {
                this.spanArr[i * hLen + j] = {
                  rowspan: 1,
                  colspan: 1,
                };
              }
            }
          }
        }
      }
      // 對數(shù)據(jù)進行倒序
      let stack = [];
      for (let i = 0; i < hLen; i++) {
        for (let j = 0; j < this.tableData.length; j++) {
          const spanItem = this.spanArr[j * hLen + i];
          if (spanItem) {
            if (spanItem.rowspan === 0) {
              stack.push(spanItem);
            }
            if (j !== 0 && spanItem.rowspan !== 0) {
              stack.push(spanItem);
              while (stack.length > 0) {
                let pop = stack.pop();
                let len = stack.length;
                this.spanArr[(j - len) * hLen + i] = pop;
              }
            }
          }
        }
      }
    },
    /**
     * 表合并規(guī)則
     */
    objectSpanMethod({ rowIndex, columnIndex }) {
      return this.spanArr[rowIndex * this.tableHeader.length + columnIndex];
    },
  },
  watch: {},
};
</script>

到此這篇關(guān)于Element 的 el-table 表格實現(xiàn)單元格合并的文章就介紹到這了,更多相關(guān)Element el-table 單元格合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Element-UI中上傳的文件前端處理

    詳解Element-UI中上傳的文件前端處理

    這篇文章主要介紹了詳解Element-UI中上傳的文件前端處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Vue2的16種傳參通信方式總結(jié)和示例講解

    Vue2的16種傳參通信方式總結(jié)和示例講解

    Vue2中路由傳參數(shù):props(父傳子),$emit與v-on(子傳父),EventBus(兄弟傳參),.sync與update:(父子雙向),v-model(父子雙向),ref?$children與$parent,$attrs與$listeners(爺孫雙向),provide與inject(多層傳參),Vuex,Vue.prototype,路由,瀏覽器緩存,window,$root,slot(父傳子)
    2024-08-08
  • Vue子組件調(diào)用父組件方法案例詳解

    Vue子組件調(diào)用父組件方法案例詳解

    這篇文章主要介紹了Vue子組件調(diào)用父組件方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • vue圖片加載與顯示默認圖片實例代碼

    vue圖片加載與顯示默認圖片實例代碼

    這篇文章主要為大家詳細介紹了vue圖片加載與顯示默認圖片的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • el-tree樹狀控件如何定位到選中的節(jié)點的位置

    el-tree樹狀控件如何定位到選中的節(jié)點的位置

    這篇文章主要介紹了el-tree樹狀控件如何定位到選中的節(jié)點的位置,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • vue3.0 CLI - 2.6 - 組件的復用入門教程

    vue3.0 CLI - 2.6 - 組件的復用入門教程

    這篇文章主要介紹了 vue3.0 CLI - 2.6 - 組件的復用,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-09-09
  • 解決vuecli3中img src 的引入問題

    解決vuecli3中img src 的引入問題

    這篇文章主要介紹了解決vuecli3中img src 的引入問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 教你用Cordova打包Vue項目的方法

    教你用Cordova打包Vue項目的方法

    這篇文章主要介紹了教你用Cordova打包Vue項目的方法,詳細的介紹了如何Vue項目打包成app,具有一定的參考價值,有興趣的可以了解一下
    2017-10-10
  • vue2里面ref的具體使用方法

    vue2里面ref的具體使用方法

    本篇文章主要介紹了vue2里面ref的具體使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Vue組件化常用方法之組件傳值與通信

    Vue組件化常用方法之組件傳值與通信

    這篇文章主要給大家介紹了關(guān)于Vue組件化常用方法之組件傳值與通信的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03

最新評論