<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. 2.2.vue用法在uniapp中的使用_

    开发的H5页面可以用div,但是适应小程序的用法,得参考uniapp的组件章节,用view包裹.

  2. Consul调用no instances或Consul页面All service checks failing

    1.问题体现 Consul中Consumer调用Provider会出现No instances available for XXX 这时打开Consul控制台页面: 可以看到这里出现All servi ...

  3. Win下依据端口排查步骤

    Win下依据端口排查步骤 目录 Win下依据端口排查步骤 1 排查步骤 2 参考 今天突然发现自己电脑出现7680端口的内网连接,决定看看这个端口是做什么用的 1 排查步骤 确认7680端口连接情况与 ...

  4. python中操控excel的几个库:xlwt,xlrd,xlutils

    一.xlrd和xlwt模块介绍 xlrd模块提供在任何平台上从excel电子表格(.xls和.xlsx)中提取数据的功能,xlwt模块提供生成与Microsoft Excel 95 到2003版本兼容 ...

  5. No.2.3

    PC端网页和移动端网页的有什么不同? PC屏幕大,网页固定版心 手机屏幕小,网页宽度多数为100% 如何在电脑里面写代码边调试移动端网页效果? 谷歌模拟器 了解屏幕尺寸概念 屏幕尺寸:指的是屏幕对角线 ...

  6. CodeGym自学笔记04——什么是编译器?

    编译器 编程语言可以同时被人和编译器所理解.编译器是一个特殊的程序,它可将用编程语言编写的程序转换成一系列的机器代码. 程序员通常用编程语言来编写程序,然后运行编译器,将程序员编写的程序代码文件转换为 ...

  7. 页面导出为PDF

    一.使用环境 Vue3.Quasar.Electron 二.安装 jspdf-html2canvas npm install jspdf-html2canvas --save 安装失败可以选择cnpm ...

  8. 泛微js附件必填

    function fieldViewAttr(fieldid, viewtype) { alert('11') jQuery("#field" + fieldid).attr(&q ...

  9. 2022-04-26内部群每日三题-清辉PMP

    1.一家组织的经验教训数据库表明过去的重大项目问题是质量失败.项目经理在制定质量管理过程时决定做得更彻底.为确保质量,项目经理应该怎么做? A.根据项目的范围和需求制定质量管理计划. B.将所有质量控 ...

  10. fastlane iOS打包 安装与使用

    1.安装 fastlane sudo gem install fastlane 2.进入工程目录下 终端输入 fastlane init 接着输入3 然后control + c退出 接着编写 Fast ...