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

vue.js el-table動態(tài)單元格列合并方式

 更新時間:2024年02月28日 09:52:16   作者:Lemon今天學習了嗎  
這篇文章主要介紹了vue.js el-table動態(tài)單元格列合并方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、業(yè)務需求

一個展示列表,表格中有一部分列是根據(jù)后端接口動態(tài)展示,對于不同類型的數(shù)據(jù)展示效果不一樣。

如果接口返回數(shù)據(jù)是’類型1‘的,則正常展示,如果是’類型2‘的數(shù)據(jù),則合并當前數(shù)據(jù)的動態(tài)表格。

二、實現(xiàn)思路

1、先將普通表格實現(xiàn),不考慮合并效果;

2、在表格上對要合并的單元格類型進行區(qū)分;

3、 在表格上使用:span-method="arraySpanMethod"方法觸發(fā)表格;

4、在arraySpanMethod方法內(nèi)接收數(shù)據(jù)處理合并,確定從哪一列開始合并到哪一列合并結(jié)束;

三、代碼展示

<el-table
    ref="table"
    size="mini"
    height="100%"
    :data="tableData"
    :span-method="arraySpanMethod"
    :header-cell-style="{
      background: '#f5f7fa',
      fontWeight: 'bold',
      color: '#303133'
    }"
    border
  >
    <el-table-column
      type="index"
      header-align="center"
      align="center"
      label="序號"
      width="50"
    ></el-table-column>
    <el-table-column
      width="120"
      prop="indexShowName"
      label="名稱"
      show-overflow-tooltip
    ></el-table-column>
    <el-table-column
      width="80"
      prop="type"
      label="類型種類"
      show-overflow-tooltip
    >
      <template slot-scope="scope">
        {{ scope.row.type === '1' ? '類型1' : '類型2' }}
      </template>
    </el-table-column>
    <el-table-column
      v-for="(item, index) in tableColumns"
      :key="index"
      width="80"
      :label="item.year"
      show-overflow-tooltip
    >
      <template slot-scope="scope">
        <!-- 類型1展示name -->
        <div
          v-if="scope.row.type === '1'"
          style="text-align: center"
        >
          {{
            scope.row.uploadValueList[index]?.uploadValueName
          }}
        </div>
        <!-- 類型2展示value -->
        <div v-else>
          {{ scope.row.uploadValueList[index].uploadValue }}
        </div>
      </template>
    </el-table-column>
    <el-table-column
      width="160"
      prop="reportDate"
      label="上報時間"
      show-overflow-tooltip
    ></el-table-column>
    <el-table-column
      width="195"
      label="操作"
      header-align="center"
      align="center"
      fixed="right"
    >
      <template slot-scope="scope">
        <el-button
          size="small"
          style="color: #409eff; padding: 0"
          type="text"
          @click="detailClick(scope.row)"
          >數(shù)據(jù)明細</el-button
        >
      </template>
    </el-table-column>
  </el-table>
// --------------methods方法--------------------
 
// 右側(cè)表格
  initTable() {
    const params = {
      pageNum: this.pages.pageIndex,
      pageSize: this.pages.pageSize,
    }
    this.tableLoading = true
    //api接口調(diào)用xxx
    xxx(params)
      .then((res) => {
        if (res.code === 200) {
          const { total } = res.result
          // const { records, total } = res.result
          //后端接口數(shù)據(jù)返回形式如下:
          const records = [
            {
              indexShowName: '測試001',
              type: '1',
              reportDate: '2023-12-01 15:53:46',
              uploadValueList: [
                {
                  id: '1',
                  year: '2021年',
                  uploadValue: '0',
                  uploadValueName: '完全符合'
                },
                {
                  id: '2',
                  year: '2022年',
                  uploadValue: '0',
                  uploadValueName: '完全符合'
                },
                {
                  id: '3',
                  year: '2023年',
                  uploadValue: '0',
                  uploadValueName: '完全符合'
                },
                {
                  id: '4',
                  year: '2024年',
                  uploadValue: '0',
                  uploadValueName: '完全符合'
                }
              ]
            },
            {
              indexShowName: '測試002',
              type: '2',
              reportDate: '2023-12-01 13:45:53',
              uploadValueList: [
                {
                  id: '5',
                  year: '2021年',
                  uploadValue: '99.00'
                },
                {
                  id: '6',
                  year: '2022年',
                  uploadValue: '98.00'
                },
                {
                  id: '7',
                  year: '2023年',
                  uploadValue: '77.00'
                },
                {
                  id: '8',
                  year: '2024年',
                  uploadValue: '34.00'
                }
              ]
            }
          ]
          if (records && records.length > 0) {
            // 使用第一個元素的 uploadValueList 來創(chuàng)建列
            this.tableColumns = records[0].uploadValueList.map((item) => ({
              year: item.year, // 使用 year 作為列的標簽
              id: item.id // 用于做key
            }))
          }
          this.tableData = records
          this.pages.total = total
        } else {
          this.$message.error(res.message)
        }
      })
      .finally(() => {
        this.tableLoading = false
      })
  },
 
  // 單元格合并 {當前行row、當前列column、當前行號rowIndex、當前列號columnIndex}
  arraySpanMethod({ row, column, rowIndex, columnIndex }) {
    // 類型1,且動態(tài)數(shù)據(jù)長度>1
    if (row.type === '1' && row?.uploadValueList?.length > 1) {
      const len = row?.uploadValueList?.length
      // 合并從下標為0開始的【下標為3的第四列,動態(tài)數(shù)據(jù)長度】
      if ( columnIndex > 2 && columnIndex <= 2 + Number(len) ) {
        return {
          rowspan: 1,
          colspan: columnIndex === 3 ? len : 0
        }
      }
    }
  },
  

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue Router初始化路由信息詳解

    Vue Router初始化路由信息詳解

    這篇文章主要為大家詳細介紹了Vue Router初始化路由信息的相關(guān)知識,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2023-11-11
  • Vue3中Composition API的原理與實戰(zhàn)指南

    Vue3中Composition API的原理與實戰(zhàn)指南

    Composition API為開發(fā)者提供了一種全新的組織組件邏輯的方式,本文將深入探討Vue3中Composition API的實際應用,幫助開發(fā)者掌握這一強大工具
    2025-07-07
  • vue2實現(xiàn)可復用的輪播圖carousel組件詳解

    vue2實現(xiàn)可復用的輪播圖carousel組件詳解

    這篇文章主要為大家詳細介紹了vue2實現(xiàn)可復用的輪播圖carousel組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 基于Vue CSR的微前端實現(xiàn)方案實踐

    基于Vue CSR的微前端實現(xiàn)方案實踐

    這篇文章主要介紹了基于Vue CSR的微前端實現(xiàn)方案實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • vue長按事件和點擊事件沖突的解決

    vue長按事件和點擊事件沖突的解決

    這篇文章主要介紹了vue長按事件和點擊事件沖突的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue.js每天必學之方法與事件處理器

    Vue.js每天必學之方法與事件處理器

    Vue.js每天必學之方法與事件處理器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • vue使用localStorage保存登錄信息 適用于移動端、PC端

    vue使用localStorage保存登錄信息 適用于移動端、PC端

    這篇文章主要為大家詳細介紹了vue使用localStorage保存登錄信息 適用于移動端、PC端,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Vue3中的Refs和Ref詳情

    Vue3中的Refs和Ref詳情

    這篇文章主要介紹了Vue3中的Refs和Ref,文章圍繞Vue3中的Refs和Ref得相關(guān)資料應用舉例煩人方式展開詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 在vue中使用vue-echarts-v3的實例代碼

    在vue中使用vue-echarts-v3的實例代碼

    這篇文章主要介紹了在vue中使用vue-echarts-v3的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • vue實現(xiàn)數(shù)據(jù)控制視圖的原理解析

    vue實現(xiàn)數(shù)據(jù)控制視圖的原理解析

    這篇文章主要介紹了vue如何實現(xiàn)的數(shù)據(jù)控制視圖的相關(guān)知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01

最新評論

河东区| 焉耆| 蒲江县| 葵青区| 黄大仙区| 日土县| 西盟| 宜兰市| 兖州市| 河曲县| 永登县| 鄯善县| 自治县| 区。| 色达县| 柘城县| 鱼台县| 绥滨县| 静安区| 南川市| 巴林左旗| 乐陵市| 湟中县| 会同县| 宜兰市| 永春县| 澄城县| 天峻县| 京山县| 南开区| 桂平市| 海晏县| 杭锦后旗| 武冈市| 西充县| 荥经县| 金沙县| 阳山县| 花垣县| 沂水县| 饶平县|