<template>
  <el-table
    class="tableList"
    ref="rw_table"
    height="700"
    solt="append"
    :data="useData"
    :row-class-name="tableRowClassName"
    @cell-mouse-enter="mouseEnter"
    @cell-mouse-leave="mouseLeave"
  >
    <el-table-column
      prop="username"
      label="姓名"
    />
    </el-table-column>
    <el-table-column
      label="备注"
    >
      <template slot-scope="scope">
        <span>{{ getNote(scope.row) }}</span>
      </template>
    </el-table-column>
  </el-table>
</template>
<script>
export default {
  name: 'TableObj',
  props:{
    tableData:{
      type: Array,
      default:()=>{
        return []
      }
    }
  },
  data () {
    return {
      useData:[],
      autoPlay:false,
      timer:undefined
    }
  },
  watch:{
    tableData:{
      deep:true,
      handler(v){
        if(v&&v.length){
          this.startRolling = false
          let data = []
          for(let i in v){
            data.push(v[i])
          }
          this.useData = data
          this.autoPlay = true
          this.startMove()
        }
      }
    }
  },
  methods: {
    // 鼠标进入
    mouseEnter() {
      this.autoPlay = false
    },
    // 鼠标离开
    mouseLeave() {
      this.autoPlay = true
    },
    startMove(){
      // 拿到表格挂载后的真实DOM
      const table = this.$refs.rw_table
      if(table){
        // 拿到表格中承载数据的div元素
        const divData = table.bodyWrapper
        if(divData){
          if(this.timer){
            clearInterval(this.timer)
          }
          // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
          this.timer = setInterval(() => {
            if(this.autoPlay){
              // 元素自增距离顶部1像素
              if(divData.scrollTop>=48){
                const item = this.useData.shift();
                this.useData.push(item)
                divData.scrollTop-=48
              }
              divData.scrollTop += 1
            }
          }, 50)
        }
      }
    },
    getStatus(row){
      let status = ''
      if(row.workType){
        switch(row.workType){
          case 1:
            status = `在岗`;
            if(row.workplace){
              status +=`(${row.workplace})`
            }
            break;
      }
      return status;
    },
    getNote(row){
      let not = ''
      if(row.workType!==1&&row.handoverName){
        not = `工作交接${row.handoverName}`
        if(row.handoverPos){
          not += ` (${row.handoverPos})`
        }
      }
      return not
    },
    tableRowClassName({row}) {
      let className = ''
      if(row.workType){
        switch(row.workType){
          case 1:
            className = 'onJob';
            break;
        }
      }
      return className;
    }
  }
}
</script>

vue element ui table 自动无限滚动组件的更多相关文章

  1. Vue+element ui table 导出到excel

    需求: Vue+element UI table下的根据搜索条件导出当前所有数据 参考: https://blog.csdn.net/u010427666/article/details/792081 ...

  2. vue+element ui 的表格列使用组件

    前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...

  3. vue+element ui table组件封装,使用render渲染

    后台管理经常会用到表格,一开始封装了一个常用的功能性表格,点击这里: 后来由于需求增加,在表格中还会用到switch,select,input等多种组件,每次都要在html中增加<el-tabl ...

  4. Vue+element UI实现“回到顶部”按钮组件

    介绍 这是一个可以快速回到页面顶部的组件,当用户浏览到页面底部的时候,通过点击按钮,可快速回到页面顶部. 使用方法 由于该组件是基于element-UI进行二次封装的,所以在使用该组件时请务必安装el ...

  5. vue + element ui table表格二次封装 常用功能

    因为在做后台管理项目的时候用到了大量的表格, 且功能大多相同,因此封装了一些常用的功能, 方便多次复用. 组件封装代码: <template> <el-table :data=&qu ...

  6. Element UI table组件源码分析

    本文章从如下图所示的最基本的table入手,分析table组件源代码.本人已经对table组件原来的源码进行削减,源码点击这里下载.本文只对重要的代码片段进行讲解,推荐下载代码把项目运行起来,跟着文章 ...

  7. vue+element ui 的上传文件使用组件

    前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...

  8. vue+element ui中select组件选择失效问题原因与解决方法

    codejing 2020-07-10 09:13:31  652  收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...

  9. VUE -- 对 Element UI table中数据进行二次处理

    时间——日期 后台经常给我们返回的是 时间戳 (例如:1535620671) 这时候我们页面展现的时候需要将时间戳转换为我们要的格式 例如 (YYYY-MM-DD HH:mm:ss) 如果是在Elem ...

  10. vue + element ui 实现实现动态渲染表格

    前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...

随机推荐

  1. .NET Core项目部署到Windows系统Docker

    1.新建一个ASP.NET Core Web应用(模型-视图-控制器) 2. 项目启动Docker.Docker OS选择Windows 3.系统默认的dockerfile文件如下 #See http ...

  2. j-link "the connected j-link is defective"问题的解决

    出现这个原因是 J-link和J-link的驱动不匹配,比如J-link的固件太老,J-link驱动太新.因此要解决的话,要不就是换不同版本的J-link驱动,要不就是换J-Link或升级J-link ...

  3. 使用SpringBoot简单实现WebRTC群聊会议室(Mesh方案)

    近期需要做一个类似会议室功能,但网络上大多数是一对一通信,故记录分享希望帮助到有用的人 WebRTC一对一聊天原理 关于WebRTC建立一对一聊天的模板网上很多,可参考以下博客:springboot+ ...

  4. JZOJ 1967.【2011集训队出题】聪聪可可

    题目 [2011集训队出题]聪聪可可 思路 看看做做 阴阳 这道题 极力推荐 自从做了这道题后,这些题就变成秒切的题了 很容易想到求节点到分治中心的距离,然后 \(\bmod 3\) 那么在求根节点一 ...

  5. .net webapi+jwt demo

    一.新建.net   webapi程序 二.nuget包搜索jwt,点击安装 三.在model文件夹下建立三个主要类: public class AuthInfo    {        /// &l ...

  6. ChatGPT API使用介绍

    1.概述 随着人工智能技术的不断发展,越来越多的AI产品被应用到各个领域,其中最具代表性的莫过于人工智能语言模型.语言模型是一种可以通过学习大量语言数据来预测文本或语音的技术,其应用范围十分广泛,如智 ...

  7. 批量下载Landsat遥感影像的方法

      本文介绍在USGS网站批量下载Landsat系列遥感影像的方法.   首先,打开EarthExplorer的官网,首先完成注册与登录.   接下来,点击左侧"Search Criteri ...

  8. html(Angular) 调用本地安装exe程序

    1.写注册表 新建 .reg文件 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\creoparametric] "URL P ...

  9. c# 使用 Redis

    1.安装Redis 我是在Windows上安装redis的,Redis官网我只看到linux版本的,得使用别人提供的windows版本 菜鸟教程提供的redis下载地址:https://github. ...

  10. SQLServer 编程总结

    case的用途 case语句有四个关键字,缺一不可,分别是:case when then end,另外还有一个else.case 后面跟字段名(当在when后面出现字段名时,case里不能写出来),w ...