Element-ui table中tag显示不同颜色

效果图

 

 

组件template中:
<el-table-column :label="$t('epmlang.epmInfo.sPMStatus')" class-name="status-col" width="100">
        <template slot-scope="scope">
          <el-tag :type="scope.row.sPMStatus | statusFilter">
            {{ scope.row.sPMStatus }}
          </el-tag>
        </template>
      </el-table-column>

js

 filters: {
    // el-tag类型转换
    statusFilter(status) {
      const statusMap = {
        PM: 'info',
        IDEL: 'danger',
        BUYOFF: 'success'
      }
      console.log(statusMap[status])
      return statusMap[status]
    }
  },

 

 

button demo

filters 使用

 

 

 

<!DOCTYPE html>
<html>

<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <!-- vue -->
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <!-- element引入样式 -->
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <!-- element引入组件库 -->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <!--Axios-->
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

</head>

<body>
  <div id="App">
    <el-button type="primary" @click.prevent.stop="but1">
      button
    </el-button>
    
      <el-table :data="tableData" style="width: 100%"  :row-class-name="tableRowClassName">
      
      <el-table-column label="日期" align="center" >
        <template slot-scope="{row}">{{ row.date }} </template>
      </el-table-column>
<!--       <el-table-column label="姓名" align="center" >
        <template slot-scope="{row}">{{ row.name }} </template>
      </el-table-column> -->
      
      <el-table-column label="姓名" align="center" >
        <template slot-scope="{row}" >
        <!--row.name 传进来  ,走过滤的逻辑 -->
          <el-button :type="row.name | statusFilter"  circle> </el-button>
        </template>
      </el-table-column>
      <el-table-column label="姓名" align="center" >
        <template slot-scope="{row}" >
        <!--row.name 传进来  ,走过滤的逻辑 -->
          <el-button :type="row.a | statusFilter"  circle> </el-button>
        </template>    
      </el-table-column>
      <el-table-column label="姓名" align="center" >
        <template slot-scope="{row}" >
        <!--row.name 传进来  ,走过滤的逻辑 -->
          <el-button :type="row.b | statusFilter"  circle> </el-button>
        </template>
      </el-table-column>
      <el-table-column label="地址" align="center" >
        <template slot-scope="{row}">{{ row.address }} </template>
      </el-table-column>
    

    
  </div>
</body>
<style>
  .el-table .warning-row {
    background: oldlace;
  }

  .el-table .success-row {
    background: #f0f9eb;
  }
  
.el-button:hover {
    background: #126c9e !important;
    color: white !important;
    font-weight: bold;
    border-color: #01a8f9 !important;
  }

}
</style>
<script>
  var vm = new Vue({
    el: "#App",
    filters: {
    // button type 过滤
    statusFilter(status) {
      const statusMap = {
        王: 'warning',
        小: '',
        虎: 'success',
        的: 'danger'
      }
      return statusMap[status]
    }
  },
    data: {
      flag: '',
      visible: false,
      tableData: [{
          date: '2016-05-02',
          name: '',
          a: '',
          b: '',
          address: '上海市普陀区金沙江路 1518 弄',
        }, {
          date: '2016-05-04',
          name: '',
          a: '',
          b: '',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-01',
          name: '',
          a: '',
          b: '',
          address: '上海市普陀区金沙江路 1518 弄',
        }, {
          date: '2016-05-03',
          name: '',
          a: '',
          b: '',
          address: '上海市普陀区金沙江路 1518 弄'
        }]
    },
    created() {
    },
    methods: {
    // 行颜色,没用
      tableRowClassName({row, rowIndex}) {
        if (rowIndex === 1) {
          return 'warning-row';
        } else if (rowIndex === 3) {
          return 'success-row';
        }
        return '';
      }
//
    }
  })
</script>

</html>

 

posted @ 2021-12-22 11:14  浅绿色i  阅读(1927)  评论(0编辑  收藏  举报