From 259db33b22095891f436b9ed5a81a21496b11c4c Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期一, 12 十月 2026 23:41:55 +0800
Subject: [PATCH] feat(汇总大表): 缺数清单加导出前弹窗并在生成件附《数据缺失清单》页(待验收)
---
traffic-audit-web/src/views/ReportExport.vue | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 55 insertions(+), 1 deletions(-)
diff --git a/traffic-audit-web/src/views/ReportExport.vue b/traffic-audit-web/src/views/ReportExport.vue
index bb53610..d689d3c 100644
--- a/traffic-audit-web/src/views/ReportExport.vue
+++ b/traffic-audit-web/src/views/ReportExport.vue
@@ -190,6 +190,25 @@
<el-button size="small" v-else type="primary" @click="closeTask">鍏抽棴</el-button>
</span>
</el-dialog>
+ <!-- 姹囨�诲ぇ琛ㄥ鍑哄墠缂烘暟娓呭崟寮圭獥锛�2026-10-12 鐢ㄦ埛瑕佹眰锛氱己鏁版憜鍒板彴闈笂锛� -->
+ <el-dialog title="鐢熸垚鍓嶆彁绀� - 鏁版嵁缂哄け娓呭崟" :visible.sync="missDialogVisible" width="720px" top="6vh">
+ <div class="miss-body">
+ <p class="miss-lead">鎶ヨ〃鏈� <b>{{ missDialogPeriod }}</b>锛氫互涓嬫暟鎹湰娆$敓鎴愪細缂哄け/寮傚父锛岀敓鎴愪欢鏈熬涔熶細闄勩�婃暟鎹己澶辨竻鍗曘�嬮〉銆�</p>
+ <template v-if="missDialogMissing.length">
+ <div class="miss-sec">涓�銆佺己鏁版竻鍗曪紙璇ユ湁鐨勬暟娌℃湁锛夈��鍏� {{ missDialogMissing.length }} 鏉�</div>
+ <ul class="miss-list"><li v-for="(t, i) in missDialogMissing" :key="'m' + i">{{ t }}</li></ul>
+ </template>
+ <template v-if="missDialogCheck.length">
+ <div class="miss-sec">浜屻�佹暟鎹綋妫�锛堟暟鍊间笉鍚堢悊锛夈��鍏� {{ missDialogCheck.length }} 鏉�</div>
+ <ul class="miss-list"><li v-for="(t, i) in missDialogCheck" :key="'c' + i">{{ t }}</li></ul>
+ </template>
+ <p class="miss-tip">缂烘暟澶氫负婧愭暟鎹皻鏈鍏ワ紝瀵煎叆鍚庨噸鏂扮敓鎴愬嵆鍙紱浣撴椤硅鏍稿婧愭枃浠躲��</p>
+ </div>
+ <span slot="footer">
+ <el-button size="small" @click="missDialogVisible = false">鍙栨秷</el-button>
+ <el-button size="small" type="primary" @click="confirmMissDialog">浠嶈鐢熸垚</el-button>
+ </span>
+ </el-dialog>
</el-main>
</el-container>
</el-container>
@@ -228,6 +247,12 @@
taskFileName: '',
taskFileSize: 0,
taskKey: 'summaryWorkbook',
+ // 瀵煎嚭鍓嶇己鏁版竻鍗曞脊绐楋紙2026-10-12锛夛細缂烘暟/浣撴鎽嗗埌鍙伴潰涓婏紝纭鍚庡啀鐢熸垚
+ missDialogVisible: false,
+ missDialogPeriod: '',
+ missDialogMissing: [],
+ missDialogCheck: [],
+ missDialogRefresh: false,
modules: [
{
key: 'summary', title: '姹囨�诲ぇ琛�', items: [
@@ -626,6 +651,28 @@
})
.catch(err => this.failWith(err))
},
+ // 瀵煎嚭鍓嶇己鏁版鏌ワ細璋冨彧璇绘帴鍙f妸缂烘暟/浣撴缁撴灉鎽嗗埌鐢ㄦ埛闈㈠墠锛岀‘璁ゅ悗鍐嶈蛋寮傛鐢熸垚浠诲姟
+ generateSummaryWorkbook(refresh) {
+ if (!this.period) { this.$message.warning('璇峰厛閫夋嫨鍛ㄦ湡鍜屾湀浠�'); return }
+ const params = { period: this.period }
+ Promise.all([
+ api.get('/report/summaryWorkbook/missing', { params, timeout: 60000 }).catch(() => null),
+ api.get('/report/summaryWorkbook/freightCheck', { params, timeout: 60000 }).catch(() => null)
+ ]).then(res => {
+ const miss = (res[0] && res[0].code === 200 && res[0].data) || []
+ const chk = (res[1] && res[1].code === 200 && res[1].data) || []
+ if (!miss.length && !chk.length) { this.startSummaryTask(refresh); return }
+ this.missDialogPeriod = this.period
+ this.missDialogMissing = miss
+ this.missDialogCheck = chk
+ this.missDialogRefresh = refresh
+ this.missDialogVisible = true
+ })
+ },
+ confirmMissDialog() {
+ this.missDialogVisible = false
+ this.startSummaryTask(this.missDialogRefresh)
+ },
restartTask() { this.startSummaryTask(true) },
closeTask() { this.taskVisible = false; this.stopTaskPolling(); this.loading = '' },
// 鐢熸垚涓敹璧峰脊绐楋細浠诲姟缁х画鍦ㄥ悗鍙版墽琛岋紝瀹屾垚鍚庝粛浼氳嚜鍔ㄤ笅杞斤紙涓庡師鏉ュ悓姝ュ鍑虹殑銆岀偣瀹屽嵆涓嬭浇銆嶄竴鑷达級
@@ -643,7 +690,7 @@
const doExport = () => {
if (items.length === 1) {
// 姹囨�诲ぇ琛ㄧ敓鎴愪竴娆$害 10~20 绉掞紝璧板紓姝ヤ换鍔★紙杩涘害寮圭獥锛夛紝閬垮厤鐐瑰嚮鍚庨暱鏃堕棿鏃犲搷搴�
- if (items[0].key === 'summaryWorkbook') { this.startSummaryTask(false); return }
+ if (items[0].key === 'summaryWorkbook') { this.generateSummaryWorkbook(false); return }
api.get('/report/export/' + items[0].key, { params, responseType: 'blob', timeout: 120000 })
.then(res => { this.downloadBlob(res, this.fileNameOf(items[0])); this.$message.success('鎶ヨ〃瀵煎嚭鎴愬姛'); this.loading = '' })
.catch(err => this.failWith(err))
@@ -794,6 +841,13 @@
.task-meta { margin: 2px 0; font-size: 12px; color:#909399; line-height: 1.6; }
.task-error { margin: 8px 0 0; font-size: 13px; color:#F56C6C; word-break: break-all; }
.task-done { margin: 8px 0 0; font-size: 13px; color:#67C23A; line-height: 1.6; }
+/* 瀵煎嚭鍓嶇己鏁版竻鍗曞脊绐� */
+.miss-body { max-height: 62vh; overflow-y: auto; }
+.miss-lead { font-size: 13px; color: #303133; margin: 0 0 10px; line-height: 1.7; }
+.miss-sec { font-size: 13px; font-weight: 600; color: #F56C6C; margin: 10px 0 4px; }
+.miss-list { margin: 0; padding-left: 20px; font-size: 13px; color: #303133; line-height: 1.7; }
+.miss-list li { margin: 2px 0; }
+.miss-tip { font-size: 12px; color: #909399; margin: 10px 0 0; }
</style>
<style>
--
Gitblit v1.9.1