需求

 业务有个很常用的场景是渲染一个结果列表页时,后端返回的状态码一般只能是数字
 但我们在table中渲染的时候只渲染数字显然并不能很直观的反馈给使用者,所以结合tag的type属性绑定,就能配合过滤器来实现颜色标识和文本映射,体验明显更好~

vue代码

首先vue实例中定义过滤器~

export default {
  // -1失败 0未启动 1运行中 2运行完成 3记录不存在
  filters: {
    statusFilter(status) {
      const statusMap = {
        '-1': '失败',
        '0': '未启动',
        '1': '运行中',
        '2': '运行完成',
        '3': '记录不存在'
      }
      return statusMap[status]
    },
    typeFilter(status) {
      const statusMap = {
        '-1': 'danger',
        '0': '',
        '1': 'success',
        '2': 'info',
        '3': 'warning'
      }
      return statusMap[status]
    }
  },
  }

模板代码

之后在模板里使用就好啦!

      <el-table-column
        label="状态"
        prop="status"
        width="100"
      >
        <template slot-scope="scope">
          <el-tag :type="scope.row.status | typeFilter">
            {{ scope.row.status | statusFilter }}
          </el-tag>
        </template>
      </el-table-column>