From 2b1bfd1f5fa86378f2a86541d16d7e46963a0631 Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期二, 08 九月 2026 15:29:31 +0800
Subject: [PATCH] feat: 汇总大表日期格式/小数位复核+VBA列宽宏+DataView滚动加载+RULE_004双向与P005阈值联动

---
 traffic-audit-web/src/views/DataView.vue |   66 ++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 1 deletions(-)

diff --git a/traffic-audit-web/src/views/DataView.vue b/traffic-audit-web/src/views/DataView.vue
index 8ef5b0d..1ec3c5e 100644
--- a/traffic-audit-web/src/views/DataView.vue
+++ b/traffic-audit-web/src/views/DataView.vue
@@ -81,12 +81,14 @@
       total: 0,
       records: [],
       columns: [],
-      loading: false
+      loading: false,
+      loadingMore: false
     }
   },
   methods: {
     loadData() {
       this.loading = true
+      this.loadingMore = false
       api.get('/data/list', {
         params: {
           type: this.type,
@@ -111,6 +113,57 @@
         this.loading = false
       })
     },
+    // 婊氬姩鍒板簳閮ㄨ嚜鍔ㄨ拷鍔犱笅涓�椤碉紙淇濈暀鎵嬪姩鍒嗛〉璺抽〉鑳藉姏锛�
+    loadMore() {
+      if (this.loading || this.loadingMore) return
+      if (this.records.length >= this.total || this.total <= 0) return
+      const nextPage = this.page + 1
+      this.loadingMore = true
+      api.get('/data/list', {
+        params: {
+          type: this.type,
+          period: this.period || undefined,
+          keyword: this.keyword || undefined,
+          page: nextPage,
+          size: this.size
+        }
+      }).then(res => {
+        const d = res.data || {}
+        const addRows = d.records || []
+        if (!addRows.length) {
+          this.page = nextPage - 1
+          return
+        }
+        this.records = this.records.concat(addRows)
+        this.page = nextPage
+        if (d.total != null) this.total = d.total
+        if (d.columns && d.columns.length) this.columns = d.columns
+      }).catch(e => {
+        if (e && e._toast) return
+        this.$message.error('鍔犺浇鏇村澶辫触')
+      }).finally(() => {
+        this.loadingMore = false
+      })
+    },
+    onScroll(e) {
+      // 鏅��/鍏ㄥ睆涓嬬湡姝g殑婊氬姩瀹瑰櫒閮芥槸 el-table 鍐呴儴 body-wrapper锛堟崟鑾烽樁娈靛彲鏀跺埌锛夛紱
+      // 椤甸潰鏁翠綋婊氬姩鏃朵互 window/document 涓哄噯銆�
+      const t = e && e.target
+      let scrollTop, clientHeight, scrollHeight
+      if (t && t.nodeType === 1 && t !== document && typeof t.scrollTop === 'number' && t.scrollHeight > t.clientHeight) {
+        scrollTop = t.scrollTop
+        clientHeight = t.clientHeight
+        scrollHeight = t.scrollHeight
+      } else {
+        const se = document.scrollingElement || document.documentElement
+        scrollTop = se.scrollTop
+        clientHeight = window.innerHeight
+        scrollHeight = se.scrollHeight
+      }
+      if (scrollHeight > 0 && scrollTop + clientHeight >= scrollHeight - 80) {
+        this.loadMore()
+      }
+    },
     toggleFullscreen() {
       const el = this.$refs.tableWrap
       if (!document.fullscreenElement) {
@@ -131,6 +184,17 @@
     if (q.period) this.period = q.period
     if (q.keyword) this.keyword = q.keyword
     this.loadData()
+    window.addEventListener('scroll', this.onScroll, { passive: true })
+    if (this.$refs.tableWrap) {
+      // capture=true锛歟l-table 鍐呴儴 body-wrapper 鐨勬粴鍔ㄥ湪鎹曡幏闃舵涔熻兘鏀跺埌
+      this.$refs.tableWrap.addEventListener('scroll', this.onScroll, { passive: true, capture: true })
+    }
+  },
+  beforeDestroy() {
+    window.removeEventListener('scroll', this.onScroll)
+    if (this.$refs.tableWrap) {
+      this.$refs.tableWrap.removeEventListener('scroll', this.onScroll, { capture: true })
+    }
   }
 }
 </script>

--
Gitblit v1.9.1