From 1043219cb007721626edcbcb77c2c6fd7c392ac1 Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期二, 05 三月 2024 16:01:44 +0800
Subject: [PATCH] feat:表格滚动
---
src/views/daoAnOffice/right/danger/dataTable.vue | 116 +++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 79 insertions(+), 37 deletions(-)
diff --git a/src/views/daoAnOffice/right/danger/dataTable.vue b/src/views/daoAnOffice/right/danger/dataTable.vue
index 1b39f3d..41c51d6 100644
--- a/src/views/daoAnOffice/right/danger/dataTable.vue
+++ b/src/views/daoAnOffice/right/danger/dataTable.vue
@@ -11,12 +11,15 @@
</div>
<div class="table-container flex-1">
<div class="table-content">
- <el-table class="data-table" ref="dataTable" :data="tableData" :highlight-current-row="false" :stripe="true"
+
+ <el-table class="data-table body-table" ref="scrollTableOne" :data="tableData" :highlight-current-row="false"
+ :stripe="true"
:header-cell-style="{ backgroundColor: 'transparent', color: '#79A5E9', borderColor: '#29466A' }"
:cell-style="{ color: '#79A5E9', borderColor: '#29466A', paddingTop: '10px', paddingBottom: '10px' }"
:row-style="{ backgroundColor: 'transparent' }">
<el-table-column prop="street" label="闀�/琛楅亾" align="center" />
<el-table-column label="鍙戠幇鏁伴噺" align="center">
+
<template #default="scope">
<div style="color: #6289E6;">
{{ scope.row.num1 }}
@@ -25,6 +28,7 @@
</el-table-column>
<el-table-column label="涓嬪彂閫氱煡涔�" align="center">
+
<template #default="scope">
<div style="color: #CFB249;">
{{ scope.row.num2 }}
@@ -32,6 +36,7 @@
</template>
</el-table-column>
<el-table-column label="澶勭疆鏁伴噺" align="center">
+
<template #default="scope">
<div style="color: #2BB06D;">
{{ scope.row.num3 }}
@@ -46,7 +51,7 @@
</template>
<script setup>
-import { ref, onMounted, onUnmounted, nextTick, inject, watch } from 'vue';
+import { ref, onUnmounted, inject, nextTick, watch, watchEffect } from 'vue';
const tableState = inject('tableState');
@@ -134,6 +139,12 @@
num2: 5,
num3: 2
},
+ {
+ street: '濂庡厜濉旇閬�',
+ num1: 12,
+ num2: 5,
+ num3: 2
+ },
];
const changeSelect = (selectItem) => {
@@ -143,45 +154,56 @@
selectItem.isActive = true;
}
+let scrollTableOne = ref("");
-// 澶勭悊琛ㄦ牸婊氬姩
-let timer = null;
-const dataTable = ref(null);
+const tableNode = ref(null);
+const scrollHeight = ref(null);
+const scrollTop = ref(null);
-// const clearScroll = () => {
-// clearInterval(timer);
-// timer = null;
-// }
+let scrollTimer = null;
-// const createScroll = () => {
-// clearScroll();
-// const table = dataTable.value.layout.table.refs;
+// 婊氬姩
+const scrollTable = () => {
+ clearScroll();
+ tableNode.value = scrollTableOne.value.$refs.bodyWrapper.getElementsByClassName(
+ "el-scrollbar__wrap"
+ )[0];
+ scrollHeight.value = tableNode.value.scrollHeight;
+ scrollTop.value = tableNode.value.scrollTop;
-// const tableWrapper = table.bodyWrapper.firstElementChild.firstElementChild;
-// console.log(tableWrapper);
-// timer = setInterval(() => {
-// tableWrapper.scrollTop += 1;
-// if (tableWrapper.clientHeight + tableWrapper.scrollTop >= tableWrapper.scrollHeight) {
-// tableWrapper.scrollTop = 0;
-// }
-// }, 100);
-// }
-// watch(tableState, (newValue) => {
-// console.log(newValue);
-// if (newValue) {
-// nextTick(() => {
-// setTimeout(() => {
-// createScroll();
-// }, 2000);
-// })
-// } else {
-// clearScroll();
-// }
-// })
+ scrollTimer = setInterval(() => {
+ scrollTableOne.value.setScrollTop(scrollTop.value++);
-// onUnmounted(() => {
-// clearScroll();
-// });
+
+ if (scrollTop.value >= scrollHeight.value - tableNode.value.offsetHeight) {
+ scrollTop.value = 0;
+ scrollTableOne.value.setScrollTop(0);
+ }
+ }, 50);
+};
+
+
+const clearScroll = (() => {
+ clearInterval(scrollTimer);
+});
+
+watch(tableState, (newVal) => {
+ if (newVal) {
+ nextTick(() => {
+ setTimeout(() => {
+ scrollTable();
+ }, 500);
+ });
+ } else {
+ clearScroll();
+ }
+})
+
+onUnmounted(() => {
+ clearScroll();
+});
+
+
</script>
<style lang="scss" scoped>
@@ -259,4 +281,24 @@
.el-table__fixed-right {
height: 100% !important;
}
-</style>
\ No newline at end of file
+
+.scroll-table {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 85%;
+ overflow: hidden;
+}
+
+// .head-table {
+// &:deep(.el-table__body-wrapper) {
+// display: none;
+// }
+// }
+
+// .body-table {
+// :deep(.el-table__header-wrapper) {
+// display: none;
+// }
+// }</style>
\ No newline at end of file
--
Gitblit v1.8.0