From ebc5ce2b6e4cba0708d4f5efd20fd049fcd774e6 Mon Sep 17 00:00:00 2001
From: CD配唱片 <CD配唱片>
Date: 星期四, 08 五月 2025 13:22:25 +0800
Subject: [PATCH] 优化,用节流控制表格下拉加载更多分页数据避免请求过多数据

---
 src/views/mainPlan/sheetMetalOrderManage/index.vue |    2 
 src/utils/throttle.js                              |   31 +++++++++++++++
 src/main.js                                        |   12 +++---
 src/views/basicData/processRoute/index.vue         |   32 +++++++++-------
 4 files changed, 56 insertions(+), 21 deletions(-)

diff --git a/src/main.js b/src/main.js
index 5b16285..b7f19e8 100644
--- a/src/main.js
+++ b/src/main.js
@@ -2,10 +2,10 @@
 
 import Cookies from 'js-cookie'
 
-import ElementPlus from 'element-plus'
+// import ElementPlus from 'element-plus'
 import 'element-plus/dist/index.css'
 import 'element-plus/theme-chalk/dark/css-vars.css'
-import locale from 'element-plus/es/locale/lang/zh-cn'
+// import locale from 'element-plus/es/locale/lang/zh-cn'
 
 import '@/assets/styles/index.scss' // global css
 
@@ -82,10 +82,10 @@
 directive(app)
 
 // 浣跨敤element-plus 骞朵笖璁剧疆鍏ㄥ眬鐨勫ぇ灏�
-app.use(ElementPlus, {
-  // 鏀寔 large銆乨efault銆乻mall
-  size: Cookies.get('size') || 'default'
-})
+// app.use(ElementPlus, {
+//   // 鏀寔 large銆乨efault銆乻mall
+//   size: Cookies.get('size') || 'default'
+// })
 app.use(VxeUIAll)
 app.use(VxeUITable)
 app.use(i18n)
diff --git a/src/utils/throttle.js b/src/utils/throttle.js
new file mode 100644
index 0000000..530320a
--- /dev/null
+++ b/src/utils/throttle.js
@@ -0,0 +1,31 @@
+export function throttle(func, delay) {
+    let lastTime = 0;
+    
+    return function(...args) {
+      const now = Date.now();
+      
+      if (now - lastTime >= delay) {
+        func.apply(this, args);
+        lastTime = now;
+      }
+    }
+  }
+  
+export function debounceThrottle(func, wait, immediate) {
+  let timeout,
+    previous = 0;
+  return function (...args) {
+    const now = Date.now();
+    const later = () => {
+      timeout = null;
+      if (!immediate) func.apply(this, args);
+    };
+    const callNow = immediate && !timeout;
+    clearTimeout(timeout);
+    if (now - previous > wait) {
+      previous = now;
+      if (callNow) func.apply(this, args);
+    }
+    timeout = setTimeout(later, wait);
+  };
+}
diff --git a/src/views/basicData/processRoute/index.vue b/src/views/basicData/processRoute/index.vue
index 684cec3..ecc1327 100644
--- a/src/views/basicData/processRoute/index.vue
+++ b/src/views/basicData/processRoute/index.vue
@@ -203,6 +203,7 @@
   processRouteTempList,
   confirmProcessRoute,
 } from "@/api/basicData/processRoute";
+import { throttle } from "@/utils/throttle";
 import HxlhTable from "@/components/HxlhTable";
 import { getToken } from "@/utils/auth";
 import { ref } from "vue";
@@ -427,18 +428,17 @@
       daterangeIntegrationDay.value[1];
   }
 
-   const response = await listProcessRoute(queryParams.value)
-    // processRouteList.value = response.rows;
-    if(processRouteList.value.length < queryParams.value.pageSize){
-      hasMore.value = false;
-      processRouteList.value = response.rows
-    }else{
-      processRouteList.value = [...processRouteList.value,...response.rows];
-    }
-    
-    // total.value = response.total;
-    loading.value = false;
-  
+  const response = await listProcessRoute(queryParams.value);
+  // processRouteList.value = response.rows;
+  if (processRouteList.value.length < queryParams.value.pageSize) {
+    hasMore.value = false;
+    processRouteList.value = response.rows;
+  } else {
+    processRouteList.value = [...processRouteList.value, ...response.rows];
+  }
+
+  // total.value = response.total;
+  loading.value = false;
 }
 // async function loadData() {
 //   try {
@@ -453,9 +453,13 @@
 //     console.error('Error fetching data:', error);
 //   }
 // }
-function handleAutoLoadMore(){
-  getList();
+const throttledScroll = throttle(() => {
   queryParams.value.pageNum++;
+  getList();
+  console.log("1111")
+}, 200);
+function handleAutoLoadMore() {
+  throttledScroll()
 }
 // 鍙栨秷鎸夐挳
 function cancel() {
diff --git a/src/views/mainPlan/sheetMetalOrderManage/index.vue b/src/views/mainPlan/sheetMetalOrderManage/index.vue
index e2efa66..9279751 100644
--- a/src/views/mainPlan/sheetMetalOrderManage/index.vue
+++ b/src/views/mainPlan/sheetMetalOrderManage/index.vue
@@ -224,7 +224,7 @@
 const shopList = ref([]);
 const allShopList = ref([]);
 const processList = ref([]);
-const height = ref(document.documentElement.clientHeight - 220 + "px;");
+const height = ref(document.documentElement.clientHeight - 270 + "px;");
 // 琛ㄦ牸閰嶇疆-鍒楄〃
 const columns = ref([]);
 // 鍒嗛〉灞炴��

--
Gitblit v1.9.3