From 38a50cb176a78aa5bf5b9f550eb1aab520b402a6 Mon Sep 17 00:00:00 2001 From: ZhangXianQiang <1135831638@qq.com> Date: 星期四, 07 三月 2024 14:53:43 +0800 Subject: [PATCH] fix:图片修改 --- src/views/daoAnOffice/right/danger/dataTable.vue | 238 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 202 insertions(+), 36 deletions(-) diff --git a/src/views/daoAnOffice/right/danger/dataTable.vue b/src/views/daoAnOffice/right/danger/dataTable.vue index 99fd020..e9a1bae 100644 --- a/src/views/daoAnOffice/right/danger/dataTable.vue +++ b/src/views/daoAnOffice/right/danger/dataTable.vue @@ -4,45 +4,56 @@ <div class="top-title">瀹夊叏浜嬫晠鍒楄〃</div> <div class="table-select flex"> <div class="select-item mr-2 ml-2 cursor-pointer flex items-center" - :class="{ 'item-active': selectItem.isActive }" v-for="selectItem in tableType" :key="selectItem.id">{{ + :class="{ 'item-active': selectItem.isActive }" v-for="selectItem in tableType" :key="selectItem.id" + @click="changeSelect(selectItem)">{{ selectItem.type }}</div> </div> </div> <div class="table-container flex-1"> - <el-table class="data-table" :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 }} - </div> - </template> - </el-table-column> + <div class="table-content"> - <el-table-column label="涓嬪彂閫氱煡涔�" align="center"> - <template #default="scope"> - <div style="color: #CFB249;"> - {{ scope.row.num2 }} - </div> - </template> - </el-table-column> - <el-table-column label="澶勭疆鏁伴噺" align="center"> - <template #default="scope"> - <div style="color: #2BB06D;"> - {{ scope.row.num3 }} - </div> - </template> - </el-table-column> - </el-table> + <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 }} + </div> + </template> + </el-table-column> + + <el-table-column label="涓嬪彂閫氱煡涔�" align="center"> + + <template #default="scope"> + <div style="color: #CFB249;"> + {{ scope.row.num2 }} + </div> + </template> + </el-table-column> + <el-table-column label="澶勭疆鏁伴噺" align="center"> + + <template #default="scope"> + <div style="color: #2BB06D;"> + {{ scope.row.num3 }} + </div> + </template> + </el-table-column> + </el-table> + </div> + </div> </div> </template> <script setup> -import { ref } from 'vue'; +import { ref, onUnmounted, inject, nextTick, watch, watchEffect } from 'vue'; + +const tableState = inject('tableState'); const tableType = ref([ { id: 1, type: '鏈湀', isActive: true }, @@ -86,12 +97,145 @@ num2: 5, num3: 2 }, + { + street: '濂庡厜濉旇閬�', + num1: 12, + num2: 5, + num3: 2 + }, + { + street: '濂庡厜濉旇閬�', + num1: 12, + num2: 5, + num3: 2 + }, + { + street: '濂庡厜濉旇閬�', + num1: 12, + num2: 5, + num3: 2 + }, + { + street: '濂庡厜濉旇閬�', + num1: 12, + num2: 5, + num3: 2 + }, + { + street: '濂庡厜濉旇閬�', + num1: 12, + num2: 5, + num3: 2 + }, + { + street: '濂庡厜濉旇閬�', + num1: 12, + num2: 5, + num3: 2 + }, + { + street: '濂庡厜濉旇閬�', + num1: 12, + num2: 5, + num3: 2 + }, + { + street: '濂庡厜濉旇閬�', + num1: 12, + num2: 5, + num3: 2 + }, ]; + +const changeSelect = (selectItem) => { + tableType.value.forEach((item) => { + item.isActive = false; + }); + selectItem.isActive = true; +} + +let scrollTableOne = ref(""); + +const tableNode = ref(null); +const scrollHeight = ref(null); +const scrollTop = ref(null); +const isBind = ref(false); +let scrollTimer = null; + +// 婊氬姩 +const scrollTable = () => { + clearScroll(); + tableNode.value = scrollTableOne.value.$refs.bodyWrapper.getElementsByClassName( + "el-scrollbar__wrap" + )[0]; + scrollHeight.value = tableNode.value.scrollHeight; + scrollTop.value = tableNode.value.scrollTop; + // bindWheel(tableNode.value); + scrollTimer = setInterval(() => { + scrollTableOne.value.setScrollTop(scrollTop.value++); + if (scrollTop.value >= scrollHeight.value - tableNode.value.offsetHeight) { + scrollTop.value = 0; + scrollTableOne.value.setScrollTop(0); + } + }, 50); +}; + +const bindWheel = (dom) => { + if(isBind.value) return; + isBind.value = true; + dom.addEventListener("mousewheel", () => { + clearScroll(); + debounce(() => { + scrollTable(); + }, 300) + }) +} + + +const clearScroll = (() => { + clearInterval(scrollTimer); +}); + +// 闃叉姈鍑芥暟 +let timeout; +function debounce(func, delay) { + clearTimeout(timeout); + timeout = setTimeout(func, delay); +} + +watch(tableState, (newVal) => { + if (newVal) { + nextTick(() => { + setTimeout(() => { + scrollTable(); + }, 500); + }); + } else { + clearScroll(); + } +}) + +onUnmounted(() => { + clearScroll(); +}); + + </script> <style lang="scss" scoped> .container { height: 360px; +} + +.table-container { + position: relative; +} + +.table-content { + width: 100%; + position: absolute; + top: 0; + bottom: 0; } .table-top { @@ -109,13 +253,17 @@ font-size: 16px; color: #447ED6; margin-left: 20px; + font-family: 'PingFang SC'; + } .select-item { - padding: 0 14px; + padding: 0 16px; height: 100%; border-bottom: 2px solid RGBA(98, 137, 230, 0); color: rgba(94, 134, 194, 1); + font-family: 'PingFang SC'; + } .item-active { @@ -124,16 +272,14 @@ } .data-table { - font-size: 14px; + font-size: 16px; border: 1px solid #29466A; width: 100%; height: 100%; background: transparent; + font-family: 'PingFang SC'; + } - -.table-color1 {} - - ::v-deep .el-table__inner-wrapper::before { background-color: transparent; @@ -151,4 +297,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