vue-element-admin表格json数据渲染,异常数据一行显示红色

简介: vue-element-admin表格json数据渲染,异常数据一行显示红色

功能:

在json数据里面,patrolState为0 的时候,代表异常,当数据异常的时候,这一行表格的数据都标红。

步骤

1:在views底下新建一个test文件夹

里面新建一个vue文件和一个json文件

备用

2:使用

mock.json

{
    "msg": "查询成功",
    "total": 0,
    "code": 1,
    "data": [
        {
            "stationMac": "TH:23:IJ:12:DF",
            "arriveTime": "2021-07-16 12:30:00",
            "leaveTime": "2021-07-16 12:40:00",
            "patrolState": 0,
            "id": 1,
            "name": "ls",
            "deviceId": "0000001",
            "sex": 1,
            "authority": 0,
            "organId": 0,
            "organName": "A部门",
            "stationName": "2号基站",
            "address": "官大会展红心",
            "organIds": null,
            "isPagination": false,
            "page": 1,
            "rows": 1
        },
        {
            "stationMac": "TH:23:IJ:12:DF",
            "arriveTime": "2021-07-16 16:52:00",
            "leaveTime": "2021-07-16 16:52:00",
            "patrolState": 1,
            "id": 2,
            "name": "zs",
            "deviceId": "0000002",
            "sex": 1,
            "authority": 0,
            "organId": 0,
            "organName": "A部门",
            "stationName": "2号基站",
            "address": "官大会展红心",
            "organIds": null,
            "isPagination": false,
            "page": 1,
            "rows": 1
        },
        {
            "stationMac": "TH:23:IJ:12:DF",
            "arriveTime": "2021-07-16 16:58:00",
            "leaveTime": "2021-07-16 16:58:00",
            "patrolState": 0,
            "id": 3,
            "name": "zs",
            "deviceId": "0000003",
            "sex": 1,
            "authority": 0,
            "organId": 0,
            "organName": "A部门",
            "stationName": "2号基站",
            "address": "官大会展红心",
            "organIds": null,
            "isPagination": false,
            "page": 1,
            "rows": 1
        },
        {
            "stationMac": "TH:23:IJ:12:DF",
            "arriveTime": "2021-07-16 16:59:00",
            "leaveTime": "2021-07-16 16:59:00",
            "patrolState": 1,
            "id": 4,
            "name": "zs",
            "deviceId": "0000004",
            "sex": 1,
            "authority": 0,
            "organId": 0,
            "organName": "A部门",
            "stationName": "2号基站",
            "address": "官大会展红心",
            "organIds": null,
            "isPagination": false,
            "page": 1,
            "rows": 1
        },
        {
            "stationMac": "TH:23:IJ:12:DF",
            "arriveTime": "2021-07-16 16:59:00",
            "leaveTime": "2021-07-16 16:59:00",
            "patrolState": 1,
            "id": 4,
            "name": "zs",
            "deviceId": "0000004",
            "sex": 1,
            "authority": 0,
            "organId": 0,
            "organName": "A部门",
            "stationName": "2号基站",
            "address": "官大会展红心",
            "organIds": null,
            "isPagination": false,
            "page": 1,
            "rows": 1
        },
        {
            "stationMac": "TH:23:IJ:12:DF",
            "arriveTime": "2021-07-16 16:59:00",
            "leaveTime": "2021-07-16 16:59:00",
            "patrolState": 1,
            "id": 4,
            "name": "zs",
            "deviceId": "0000004",
            "sex": 1,
            "authority": 0,
            "organId": 0,
            "organName": "A部门",
            "stationName": "2号基站",
            "address": "官大会展红心",
            "organIds": null,
            "isPagination": false,
            "page": 1,
            "rows": 1
        }
    ]
}

test.vue

<template>
  <div class="app-container">
    <el-table
      :data="pvData.slice((currentPage - 1) * pagesize, currentPage * pagesize)"
      border
      fit
      highlight-current-row
     :row-class-name="tableRowClassName"
    >
      <el-table-column  prop="deviceId" label="终端编号"></el-table-column>
      <el-table-column  prop="name" label="姓名"></el-table-column>
      <el-table-column    :formatter="formatSex" prop="sex" label="性别"></el-table-column>
      <el-table-column prop="organName" label="部门"></el-table-column>
      <el-table-column prop="arriveTime" label="到达时间"></el-table-column>
      <el-table-column prop="leaveTime" label="离开时间"></el-table-column>
      <el-table-column  prop="stationName" label="基站名称"></el-table-column>
      <el-table-column prop="stationMac" label="基站MAC"></el-table-column>
      <el-table-column prop="address" label="基站地址"></el-table-column>
      <el-table-column  prop="patrolState"  :formatter="formatStatus" label="状态"></el-table-column>
    </el-table>
    <el-pagination
      style="margin: 12px 0px"
      background
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[5,10,20, 40]"
      :page-size="pagesize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="pvData.length"
    >
    </el-pagination>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 分页
      currentPage: 1, //初始页
      pagesize: 5, //    每页的数据
      pvData: [],
    };
  },
  created() {
    //查询管理表格接口
    this.getQuerycheckList();
  },
  methods: {
    // 初始页currentPage、初始每页数据数pagesize和数据data
    handleSizeChange: function (size) {
      this.pagesize = size;
      console.log(this.pagesize); //每页下拉显示数据
    },
    handleCurrentChange: function (currentPage) {
      this.currentPage = currentPage;
      console.log(this.currentPage); //点击第几页
    },
    // 表格接口定义
    getQuerycheckList() {
     this.dataLoading = true;
     import('./mock').then((res) => {      
        this.pvData = res.data;
        this.dataLoading = false;
      });
    },
    //判断巡更数据是否异常
     tableRowClassName({row}) {
      return row.patrolState == 0? 'errorStatus' : '' 
    },
     //格式化状态
    formatStatus(row, column) {
      return row.patrolState === 1 ? "正常" : "异常";
    },
     //格式化性别
    formatSex(row, column) {
      return row.sex === 1 ? "男" : "女";
    },
  },
};
</script>
<style lang="scss">
  .el-table tr.el-table__row.errorStatus{
    color: red;
  }
</style>

相关文章
|
1月前
|
JSON 前端开发 JavaScript
|
22天前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
10天前
|
JSON JavaScript 前端开发
Haskell中的数据交换:通过http-conduit发送JSON请求
Haskell中的数据交换:通过http-conduit发送JSON请求
|
9天前
|
JavaScript
vue学习(8)数据代理
vue学习(8)数据代理
22 1
|
1月前
|
JavaScript
Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
这篇文章通过一个实际的Vue项目案例,演示了如何在Vuex中实现多组件间共享数据。文章内容包括在Vuex的state中新增用户数组,创建Person.vue组件用于展示和添加用户信息,以及在Count组件中使用Person组件操作的数据。通过测试效果展示了组件间数据共享和状态更新的流程。
Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
|
27天前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
7天前
|
JavaScript
Vue组件传值异步问题--子组件拿到数据较慢
Vue组件传值异步问题--子组件拿到数据较慢
11 0
|
1月前
|
JavaScript 算法 前端开发
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
40 1
|
13天前
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
42 0
|
22天前
|
JavaScript 前端开发 UED
服务器端渲染新浪潮:用Vue.js和Nuxt.js构建高性能Web应用
【8月更文挑战第30天】在现代Web开发中,提升应用性能和SEO友好性是前端开发者面临的挑战。服务器端渲染(SSR)能加快页面加载速度并改善搜索引擎优化。Vue.js结合Nuxt.js提供了一个高效框架来创建SSR应用。通过安装`create-nuxt-app`,可以轻松创建新的Nuxt.js项目,并利用其自动路由功能简化页面管理。Nuxt.js默认采用SSR模式,并支持通过`asyncData`方法预取数据,同时提供了静态站点生成和服务器端渲染的部署选项,显著提升用户体验。
46 0