element el-table组件修改表格表头和某个单元格背景色

49 篇文章 0 订阅

element el-table组件修改表格表头和某个单元格背景色

在这里插入图片描述

<template>
  <div>
    <el-table
      :data="tableData"
      style="width: 100%"
      :cell-style="cellStyle"
      :header-cell-style="headerCellStyle"
    >
      <el-table-column prop="city" label="省份" align="center">
      </el-table-column>
      <el-table-column prop="address" label="核算中心" align="center">
      </el-table-column>
      <!-- 合计 -->
      <el-table-column :label="item.label" align="center" v-for="(item,index) in tableColumn" :key="index">
        <el-table-column prop="city" label="准点单数" align="center">
        </el-table-column>
        <el-table-column prop="address" label="总单数" align="center">
        </el-table-column>
        <el-table-column :prop="item.num" label="准点率" align="center">
        </el-table-column>
      </el-table-column>
      <!-- 日期1 -->
      <!-- <el-table-column label="3月1号" align="center">
        <el-table-column prop="city" label="准点单数" align="center">
        </el-table-column>
        <el-table-column prop="address" label="总单数" align="center">
        </el-table-column>
        <el-table-column prop="num1" label="准点率" align="center">
        </el-table-column>
      </el-table-column> -->
      <!-- 日期2 -->
      <!-- <el-table-column label="3月2号" align="center">
        <el-table-column prop="city" label="准点单数" align="center">
        </el-table-column>
        <el-table-column prop="address" label="总单数" align="center">
        </el-table-column>
        <el-table-column prop="num2" label="准点率" align="center">
        </el-table-column>
      </el-table-column> -->
    </el-table>
  </div>
</template>

<script>
export default {
  name: "Tables",
  components: {},
  data() {
    return {
      tableData: [
        {
          city: "普陀区",
          address: "上海市",
          num: "95.5%",
          nums: "60.8%",
          numss: "67.3%",
          numsss: "90%"
        },
        {
          city: "普陀区",
          address: "上海市",
          num: "60.3%",
          nums: "90.8%",
          numss: "67.3%",
          numsss: "70%"
        },
      ],
      tableColumn:[
        {
          label:'合计',
          num: "num",
        },
        {
          label:'3月1号',
          num: "nums",
        },
        {
          label:'3月2号',
          num: "numss",
        },
        {
          label:'3月3号',
          num: "numsss",
        }
      ]
    };
  },
  mounted() {},
  methods: {
    headerCellStyle({ row, column, rowIndex, columnIndex }) {
      // console.log(row, column, rowIndex, columnIndex);
      let rowBackground = {};
      if (
        (rowIndex == 0 && columnIndex == 2) ||
        (rowIndex == 1 && columnIndex == 2) ||
        (rowIndex == 1 && columnIndex == 1) ||
        (rowIndex == 1 && columnIndex == 0)
      ) {
        rowBackground.background = "#00f";
      }
      return rowBackground;
    },
    cellStyle({ row, column, rowIndex, columnIndex }) {
      // console.log(row, column, rowIndex, columnIndex,this.cmpp(row.num,'90%'));
      let rowBackground = {};
      if (column.label == "准点率") {
        if (this.cmpp(row[column.property], "90%")) {
          rowBackground.background = "#f00";
        } else {
          rowBackground.background = "#ff0";
        }
      }
      return rowBackground;
    },
    cmpp(a, b) {
      return Number(a.replace("%", "")) < Number(b.replace("%", ""));
    },
  },
};
</script>
<style scoped></style>

在 Vue 中,`el-table` 是 Element UI 提供的一个用于展示表格的数据组件。如果你想实现在点击某一行或某个单元格后,该单元格背景色变化,而其他单元格保持原样,你可以使用 `cell-style` 或 `row-class-name` 属性,并结合事件处理函数(如 `@click`)来实现动态样式。 这里是一个简单的例子: ```html <template> <el-table :data="tableData" @click="handleCellClick"> <el-table-column type="index"></el-table-column> <!-- 其他列... --> <el-table-column prop="colorColumn" cell-style="{ background-color: selectedColor ? '#ccc' : '' }"> <template slot-scope="scope"> <span @click="handleCellClick(scope.$index, scope.row.colorValue)">{{ scope.row.colorValue }}</span> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { colorColumn: 'value1', ... }, { colorColumn: 'value2', ... }, // 更多数据... ], selectedColor: false, selectedRow: null, }; }, methods: { handleCellClick(index, value) { this.selectedColor = !this.selectedColor; // 切换颜色状态 this.selectedRow = this.tableData[index]; // 保存选中的行 }, }, }; </script> ``` 在这个例子中: - `cell-style` 钩子接收一个对象作为参数,我们可以根据 `selectedColor` 变量决定当前单元格背景色。 - `handleCellClick` 方法会在点击单元格时被触发,将单元格的颜色状态翻转,并记住当前选中的行。 - 当用户再次点击同一单元格时,颜色会恢复到原始状态。 如果你想要其他单元格保持不变,只需要在 `handleCellClick` 中不改变 `selectedColor` 的值即可。 相关问题-- 1. 如何在 `el-table` 中设置单元格的点击事件? 2. `cell-style` 和 `row-class-name` 在这个场景下有什么区别? 3. 如何避免每次点击都影响所有单元格的样式?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值