From 93ccd040546983c92ecdcd906df81eec67a10ad6 Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期四, 10 九月 2026 08:44:19 +0800
Subject: [PATCH] feat: 数据导入页新增清空按钮——按报表期清空数据库业务数据/审核结果/已审核标记/导入批次,支持整月重导(含功能测试报告与工作日结)

---
 traffic-audit-web/src/views/DataImport.vue |   31 ++++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/traffic-audit-web/src/views/DataImport.vue b/traffic-audit-web/src/views/DataImport.vue
index 2d77063..e496ed4 100644
--- a/traffic-audit-web/src/views/DataImport.vue
+++ b/traffic-audit-web/src/views/DataImport.vue
@@ -103,7 +103,11 @@
               <div v-show="sideOpen" class="side-content">
                 <div class="side-head">
                   <span>鏈湀瀵煎叆杩涘害锛坽{ period || '鏈�夋嫨鎶ヨ〃鏈�' }}锛�</span>
-                  <el-button type="text" icon="el-icon-refresh" @click="loadData">鍒锋柊</el-button>
+                  <span class="side-head-btns">
+                    <el-button type="text" icon="el-icon-refresh" @click="loadData">鍒锋柊</el-button>
+                    <el-button type="text" icon="el-icon-delete" style="color:#F56C6C" :loading="clearing"
+                               :disabled="!period || clearing || importing" @click="clearPeriodData">娓呯┖</el-button>
+                  </span>
                 </div>
                 <div v-if="!period" class="tip">璇峰厛鍦ㄤ笂鏂归�夋嫨鎶ヨ〃鏈�</div>
                 <div v-else class="overview-grid">
@@ -158,6 +162,7 @@
       period: (() => { const d = new Date(); return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') })(),
       cityDirLoading: false,
       importing: false,
+      clearing: false,
       sideOpen: false,
       result: '',
       error: '',
@@ -520,6 +525,28 @@
         .catch(e => { if (!e || !e._toast) this.$message.error('瀵煎叆璁板綍鍔犺浇澶辫触锛岃鍒锋柊閲嶈瘯') })
         .finally(() => { this.batchLoading = false })
     },
+    clearPeriodData() {
+      if (!this.period) { this.$message.warning('璇峰厛閫夋嫨鎶ヨ〃鏈�'); return }
+      if (this.importing) { this.$message.warning('姝e湪瀵煎叆鏁版嵁锛岃绛夊緟瀵煎叆瀹屾垚鍚庡啀娓呯┖'); return }
+      if (this.clearing) return
+      this.$confirm(
+        '灏嗘竻绌� ' + this.period + ' 鎶ヨ〃鏈熷湪鏁版嵁搴撲腑鐨勫叏閮ㄥ凡瀵煎叆鏁版嵁锛屽悓鏃跺垹闄よ鎶ヨ〃鏈熺殑瀹℃牳缁撴灉涓庡鍏ユ壒娆¤褰曪紙渚夸簬鏁存湀閲嶆柊瀵煎叆锛夈�俓n姝ゆ搷浣滀笉鍙挙閿�锛屾槸鍚︾户缁紵',
+        '娓呯┖ ' + this.period + ' 鏁版嵁',
+        { type: 'warning', confirmButtonText: '纭娓呯┖', cancelButtonText: '鍙栨秷' }
+      ).then(() => {
+        this.clearing = true
+        api.post('/import/clear', null, { params: { period: this.period }, timeout: 600000 })
+          .then(() => {
+            this.$message.success('宸叉竻绌� ' + this.period + ' 鎶ヨ〃鏈熺殑鏁版嵁锛屽彲浠ラ噸鏂板鍏�')
+            this.loadData()
+          })
+          .catch(e => {
+            if (e && e._toast) return
+            this.$message.error((e.response && e.response.data && e.response.data.message) || '娓呯┖澶辫触锛岃绋嶅悗閲嶈瘯')
+          })
+          .finally(() => { this.clearing = false })
+      }).catch(() => {})
+    },
     batchKeyToType(k) {
       if (BATCH_TYPE_MAP[k]) return BATCH_TYPE_MAP[k]
       if (k && k.indexOf('INVEST_') === 0) {
@@ -591,6 +618,8 @@
 .import-side.side-open .side-toggle-text { writing-mode: horizontal-tb; letter-spacing: normal; margin-top: 0; }
 .side-content { padding: 8px 12px 12px; max-height: calc(100vh - 220px); overflow-y: auto; overscroll-behavior: contain; }
 .side-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-weight: 600; margin-bottom: 6px; }
+.side-head-btns { display: flex; align-items: center; gap: 2px; flex-shrink: 0; }
+.side-head-btns .el-button + .el-button { margin-left: 0; }
 .import-side .overview-grid { display: block; }
 .import-side .ov-row { display: block; margin-bottom: 6px; }
 .import-side .ov-group { width: auto; }

--
Gitblit v1.9.1