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