最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Element 的 el-table 表格實(shí)現(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: "長(zhǎng)沙",
          title: "岳麓",
          data1: 0,
          data2: 0,
          data3: 0,
          data4: 0,
          data5: 1,
        },
        {
          id: 5,
          country: "長(zhǎng)沙",
          title: "開(kāi)福",
          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 {
          // 當(dāng)前和上一次的一樣,合并所有列的相同數(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,
                };
              }
            }
          }
        }
      }
      // 對(duì)數(shù)據(jù)進(jìn)行倒序
      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 表格實(shí)現(xiàn)單元格合并的文章就介紹到這了,更多相關(guān)Element el-table 單元格合并內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中使用vux的配置詳解

    Vue中使用vux的配置詳解

    這篇文章主要為大家詳細(xì)介紹了Vue中使用vux配置的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Vue.js移動(dòng)端左滑刪除組件的實(shí)現(xiàn)代碼

    Vue.js移動(dòng)端左滑刪除組件的實(shí)現(xiàn)代碼

    本篇文章主要介紹了Vue.js移動(dòng)端左滑刪除組件的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Vue3動(dòng)態(tài)使用KeepAlive組件的實(shí)現(xiàn)步驟

    Vue3動(dòng)態(tài)使用KeepAlive組件的實(shí)現(xiàn)步驟

    在 Vue 3 項(xiàng)目中,我們有時(shí)需要根據(jù)路由的 meta 信息來(lái)動(dòng)態(tài)決定是否使用 KeepAlive 組件,以控制組件的緩存行為,所以本文給大家介紹了Vue3動(dòng)態(tài)使用KeepAlive組件的實(shí)現(xiàn)步驟,通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • vue項(xiàng)目前端微信JSAPI與外部H5支付相關(guān)實(shí)現(xiàn)過(guò)程及常見(jiàn)問(wèn)題

    vue項(xiàng)目前端微信JSAPI與外部H5支付相關(guān)實(shí)現(xiàn)過(guò)程及常見(jiàn)問(wèn)題

    這篇文章主要介紹了vue項(xiàng)目前端微信JSAPI與外部H5支付相關(guān)實(shí)現(xiàn)過(guò)程及常見(jiàn)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vuex的store中的Module用法及說(shuō)明

    Vuex的store中的Module用法及說(shuō)明

    這篇文章主要介紹了Vuex的store中的Module用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-01-01
  • 強(qiáng)制Vue重新渲染組件的5種方法小結(jié)

    強(qiáng)制Vue重新渲染組件的5種方法小結(jié)

    在開(kāi)發(fā)Vue.js應(yīng)用程序時(shí),有時(shí)我們需要強(qiáng)制重新渲染組件以確保數(shù)據(jù)和視圖同步,下面就來(lái)介紹一下強(qiáng)制Vue重新渲染組件的5種方法,感興趣的可以了解一下
    2025-06-06
  • VUE安裝使用教程詳解

    VUE安裝使用教程詳解

    這篇文章主要介紹了安裝使用VUE的教程,本文給大家提到了遇到的問(wèn)題原因分析及解決方法,需要的朋友可以參考下
    2019-06-06
  • 前端vue按1920*1080設(shè)計(jì)圖的頁(yè)面適配屏幕縮放并適配4K屏詳解

    前端vue按1920*1080設(shè)計(jì)圖的頁(yè)面適配屏幕縮放并適配4K屏詳解

    最近在做一個(gè)數(shù)據(jù)可視化的項(xiàng)目,整個(gè)項(xiàng)目全是大屏展示,期間也是遇到很多問(wèn)題,最令人頭疼的就是大屏的適配,下面這篇文章主要給大家介紹了前端vue按1920*1080設(shè)計(jì)圖的頁(yè)面適配屏幕縮放并適配4K屏的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 記一次用vue做的活動(dòng)頁(yè)的方法步驟

    記一次用vue做的活動(dòng)頁(yè)的方法步驟

    這篇文章主要介紹了記一次用vue做的活動(dòng)頁(yè)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue或react項(xiàng)目生產(chǎn)環(huán)境去掉console.log的操作

    vue或react項(xiàng)目生產(chǎn)環(huán)境去掉console.log的操作

    這篇文章主要介紹了vue或react項(xiàng)目生產(chǎn)環(huán)境去掉console.log的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09

最新評(píng)論

明水县| 油尖旺区| 安乡县| 长子县| 金乡县| 吉隆县| 鄂托克旗| 托克托县| 弥渡县| 武宣县| 崇义县| 静宁县| 宜兰县| 普安县| 崇义县| 仁化县| 阿巴嘎旗| 陇南市| 博罗县| 定结县| 运城市| 嘉荫县| 长岭县| 定结县| 红安县| 平湖市| 留坝县| 德安县| 姚安县| 安福县| 高阳县| 寻乌县| 临高县| 于田县| 鹤壁市| 沭阳县| 辽宁省| 旌德县| 龙山县| 福州市| 金湖县|