element ui 表格表頭縱向顯示


element ui 提供了table ,根據對象數組 動態展示表格,但是實際需求中,有很多豎向展示表格的需求

效果圖:

 

原本數據

  data: [
        {
          code: "weixin",
          name: "微信",
          icon:
            "src地址",
          isActive: false,
          templateInfoList: [
            {
              code: "confirmation",
              name: "人工確認",
              isConfiged: true
            },
            {
              code: "executeSuccess",
              name: "執行成功",
              isConfiged: true
            },
            {
              code: "executeFailure",
              name: "執行失敗",
              isConfiged: true
            },
            {
              code: "beforeCronJobExecute",
              name: "定時執行前",
              isConfiged: true
            },
            {
              code: "beforeCronJobEnd",
              name: "定時結束前",
              isConfiged: true
            },
            {
              code: "cronJobFailed",
              name: "定時啟動失敗",
              isConfiged: true
            }
          ]
        },
{
          code: "weixin",
          name: "郵件",
          icon:
            "src地址",
          isActive: false,
          templateInfoList: [
            {
              code: "confirmation",
              name: "人工確認",
              isConfiged: true
            },
            {
              code: "executeSuccess",
              name: "執行成功",
              isConfiged: true
            },
            {
              code: "executeFailure",
              name: "執行失敗",
              isConfiged: true
            },
            {
              code: "beforeCronJobExecute",
              name: "定時執行前",
              isConfiged: true
            },
            {
              code: "beforeCronJobEnd",
              name: "定時結束前",
              isConfiged: true
            },
            {
              code: "cronJobFailed",
              name: "定時啟動失敗",
              isConfiged: true
            }
          ]
        },
]

 element ui table 渲染形式

 一條對象數據 為一數列渲染

 

 

 數據

 tableData: [{
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀區金沙江路 1518 弄'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀區金沙江路 1517 弄'
          }, {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀區金沙江路 1519 弄'
          }, {
            date: '2016-05-03',
            name: '王小虎',
            address: '上海市普陀區金沙江路 1516 弄'
          }]

  效果圖:

 

4條數據 每一行按照prop 把對應的對象數據得值取出來 並渲染

以我的項目為例,需要6條數據,現在是按照微信 郵件分划的 4條數據 不符合,所以需要轉化

人工確認,1,2,3,4,
執行成功,1,2,3,4,
 ...
這種類型的 6組數據 (就是每一行的數據,這里沒有標題)

將數據轉化

 created() {
  //第一行數據為標題 所以要有一個空字符串 預留位置
    this.title.push("");
    let matrixData = this.data.map(row => {
      let arr = [];

      this.title.push({
        name: row.name,
        icon: row.icon,
        isActive: row.isActive,
        isConfiged: row.isActive
      });
      for (let key in row.templateInfoList) {
        arr.push(row.templateInfoList[key]);
      }
      return arr;
    });
    console.log(this.title);
    // 加入標題拼接最終的轉化好得數據
    this.transData = matrixData[0].map((col, i) => {
      return [
        col.name,

        ...matrixData.map(row => {
          return row[i].isConfiged;
        })
      ];
    });
    console.log(this.transData);
  }

  

template 結構

  <el-table border style="margin-top: 50px;" :data="transData">
      <el-table-column align="center" v-for="(item, index) in title">
        <template slot="header" slot-scope="scope">
          <div v-if="scope.$index == 0" class="line_box">
            <span class="tit1">渠道</span>
            <div class="line"></div>
            <span class="tit2">模板</span>
          </div>
          <div v-else>
            <img :src="item.icon" alt="" />
            <el-checkbox-group v-model="item.isActive">
              <el-checkbox @change="isFlag(item)" name="type"></el-checkbox>
            </el-checkbox-group>
            <span class="text">{{ item.name }}</span>
          </div>
        </template>
        <template slot-scope="scope">
          {{ scope.row[index] }}
        </template>
      </el-table-column>
    </el-table>

  

按照這個邏輯 就實現了表頭縱向顯示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM