当前位置: 首页 > article >正文

【记录】列表自动滚动轮播功能实现

目录

  • 效果展示
  • 代码

效果展示

在这里插入图片描述

代码

<!-- 首页 -->
<template>
  <div class="page_body_item_body" @mouseenter="stopScroll" @mouseleave="scroll(false)">
    <ele-table
      class="eleTable"
      :table-options="options"
      :columns-options="columns"
      :show-fixed-control="false"
      :show-pagination="false"
    />
  </div>
</template>

<script>
import { pageVoiceAlertByJh } from '@/api/video-api.js'

export default {
  name: 'Home',
  components: {},

  data() {
    return {
      tableData: [],
      tableMaxHeight: 400,
      tableScrollTimer: null
    }
  },

  computed: {
    options() {
      return {
        data: this.tableData || [],
        maxHeight: this.tableMaxHeight
      }
    },
    columns() {
      return [
        {
          type: 'index',
          label: '序号'
        },
        {
          prop: 'xm',
          label: '警员姓名',
          'show-overflow-tooltip': true
        },
        {
          prop: 'jh',
          label: '警号',
          'show-overflow-tooltip': true
        },
        {
          prop: 'bmmc',
          label: '所在单位',
          'show-overflow-tooltip': true
        },
        {
          prop: 'zfycCount',
          label: '执法异常',
          'show-overflow-tooltip': true
        },
        {
          prop: 'sgycCount',
          label: '事故处理异常',
          'show-overflow-tooltip': true,
          minWidth: 100
        },
        {
          prop: 'sumCount',
          label: '总异常',
          'show-overflow-tooltip': true
        }
      ]
    }
  },

  created() {
    this.pageVoiceAlertByJh()
  },

  mounted() {
    this.$nextTick(() => {
      this.tableMaxHeight = this.getTableHeight()
    })
    window.addEventListener('resize', () => {
      this.tableMaxHeight = this.getTableHeight()
    })
  },

  methods: {
    pageVoiceAlertByJh() {
      pageVoiceAlertByJh({
        kssj: '2024-01-01',
        jssj: '2024-12-01'
      }).then((res) => {
        this.$common.CheckCode(res, null, () => {
          this.tableData = res.data?.rows || []

          this.$nextTick(() => {
            this.scroll(true)
          })
        })
      })
    },

	// 列表停止滚动
    stopScroll() {
      clearInterval(this.tableScrollTimer)
      this.tableScrollTimer = null
    },
	
	// 列表开始滚动
    scroll(isFetchData = false) {
      this.stopScroll()

      const body_content = document.querySelector('.el-table__body-wrapper')
      const body_content_heigh = body_content?.offsetHeight
      const body = document.querySelector('.el-table__body')
      const body_heigh = body?.offsetHeight
      isFetchData && (body_content.scrollTop = 0)

	  // 判断列表的高度是否高于列表父盒子的高度
      if (body_heigh > body_content_heigh) {
        const cha = body_heigh - body_content_heigh
        this.tableScrollTimer = setInterval(() => {
          if (body_content.scrollTop >= cha) {
            body_content.scrollTop = 0
          } else body_content.scrollTop += 1
        }, 50)
      }
    },

    // 获取 table 最大高度
    getTableHeight() {
      const tableContainer = document.querySelector('.table')
      const tableHeader = document.querySelector('.table page_body_item_header')
      const tableContainerHeight = (tableContainer && tableContainer.offsetHeight) || 0
      const tableHeaderHeight = (tableHeader && tableHeader.offsetHeight) || 0
      // return tableContainerHeight - tableHeaderHeight - 50 - 34
      return tableContainerHeight - tableHeaderHeight - 50 - 2
    }
  }
}
</script>

<style lang='scss' scoped>
</style>


http://www.kler.cn/a/460039.html

相关文章:

  • springboot集成qq邮箱服务
  • 戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?
  • 注入少量可学习的向量参数: 注入适配器IA3
  • 【CSS in Depth 2 精译_099】17.5:基于页面滚动的动画时间线设置(全新)+ 17.6:最后一点建议 + 17.7:本章小结
  • [人工智能] 结合最新技术:Transformer、CLIP与边缘计算在提高人脸识别准确率中的应用
  • 【人工智能机器学习基础篇】——深入详解深度学习之复杂网络结构:卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)等概念及原理
  • 如何恢复永久删除的PPT文件?查看数据恢复教程!
  • STM32中断详解
  • RabbitMQ基础篇之数据隔离
  • 【机器学习】机器学习的基本分类-半监督学习-半监督生成对抗网络(Semi-supervised GANs)
  • Effective C++ 条款41:了解隐式接口和编译期多态
  • mysql只恢复某个库或某个表
  • 算法环境安装GPU驱动、CUDA、cuDNN、Docker及NVIDIA Container Toolkit
  • node.js文件压缩包解析,反馈解析进度,解析后的文件字节正常
  • Ungoogled Chromium127编译指南 Linux篇 - 项目要求(二)
  • 华为,新华三,思科网络设备指令
  • 异步爬虫之aiohttp的使用
  • fetch请求代码
  • 大数据_HBase的列族属性配置
  • Kotlin 协程基础知识总结四 —— Flow
  • 基于PyQt5的UI界面开发——图像与视频的加载与显示
  • Java爬虫获取速卖通(AliExpress)商品详情
  • SpringAI从入门到熟练
  • Linux day 1203
  • 41.1 预聚合提速实战项目之需求分析和架构设计
  • C++通讯录管理系统