Newer
Older
safe_production_front / src / views / bigScreen / components / deptDangerTable.vue
dutingting on 6 Mar 3 KB 多租户、jessibucaPro组件
<!-- 单位隐患分布 -->
<script lang="ts" setup>
import type { Ref } from 'vue'
import { onMounted, ref } from 'vue'
import { getDeptDangerList } from '@/api/bs'
const tableRef: Ref<HTMLElement | any> = ref(null) // 表格实例
const tableData = ref<any[]>([]) // 定义表格list
const loading = ref(false)

// 表格表头
const columns = [
  { text: '单位', value: 'deptName', align: 'center' },
  { text: '危险点地名', value: 'placeName', align: 'center', width: '95' },
  // { text: '分类', value: 'category', align: 'center' },
  { text: '等级', value: 'grade', align: 'center', width: '60' },
]
const scroll = (tableBody: any) => {
  let isScroll = true // 滚动
  const tableDom = tableBody.getElementsByClassName('el-scrollbar__wrap')[0]

  // 鼠标放上去,停止滚动;移开,继续滚动
  tableDom.addEventListener('mouseover', () => {
    isScroll = false
  })
  tableDom.addEventListener('mouseout', () => {
    isScroll = true
  })

  setInterval(() => {
    if (isScroll) {
      tableDom.scrollTop += 2// 设置滚动速度
      if (tableDom.clientHeight + tableDom.scrollTop >= tableDom.scrollHeight - 8) {
        // console.log('表格重新轮播', tableDom.scrollTop)
        tableDom.scrollTop = 0
      } else {
        // console.log('正常轮播', tableDom.scrollTop)
        // console.log('tableDom.clientHeight + tableDom.scrollTop', tableDom.clientHeight + tableDom.scrollTop)
        // console.log('tableDom.scrollHeight', tableDom.scrollHeight)
      }
    }
  }, 100)
}

const tableRowClassName = ({ row, rowIndex }: any) => {
  if (rowIndex % 2 === 1) {
    return 'warning-row'
  }
  else {
    return 'success-row'
  }
}

// 获取单位隐患分布数据
const fetchDeptDangerList = () => {
  loading.value = true
  getDeptDangerList().then((res) => {
    tableData.value = res.data
    loading.value = false
  }).catch(() => {
    loading.value = false
  })
}

onMounted(() => {
  fetchDeptDangerList()
  scroll(tableRef.value.$refs.bodyWrapper) // 设置滚动
})
</script>

<template>
  <div v-loading="loading" class="table-bs" style="height: 100%;">
    <el-table ref="tableRef" :data="tableData" style="height: 100%;">
      <el-table-column
        v-for="column of columns"
        :key="column.value"
        :width="column.width"
        :label="column.text"
        :prop="column.value"
        :align="column.align"
      />
    </el-table>
  </div>
</template>

<style lang="scss">
  .table-bs {
  .el-loading-mask {
    background-color: rgba(30, 90, 142, 0.7); /* 更改为你想要的颜色 */
  }
  .warning-row {
    background: #000f1c !important;
    color: #ffffff !important;
    border: 0 !important;
  }

  .success-row {
    background: #041628 !important;
    color: #ffffff !important;
  }
  // 表格背景色
  .el-table {
    background-color: #03144a !important; /* 使用!important来覆盖其他样式 */
  }
  // 表头背景
  .el-table .el-table__header-wrapper th {
    background-color: rgba($color: #050b2d, $alpha: .6) !important;
    color: #c2f9fa;
    border-bottom: 0.1rem solid #289b73 !important;
    white-space: nowrap !important;
  }

  // 表中背景
  .el-table tr, .el-table__body tr:hover>td {
    background-color: transparent !important;
    color: #c2f9fa;
  }

  .el-table th.el-table__cell,
  .el-table th.el-table__cell.is-leaf {
    border: none !important;
  }

  .el-table__inner-wrapper::before {
    background-color: rgba(0, 62, 90, 0.5);
  }

  .el-table td.el-table__cell,
  .el-table th.el-table__cell.is-leaf {
    border-bottom-color: #003E5A !important;
  }
}
</style>