From 603853a1290e7d71297c9ce5b64181a090adab87 Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期二, 08 九月 2026 17:44:50 +0800
Subject: [PATCH] docs: 09-08 工作日结补记下班前状态(最新代码已重启就绪,明日待办8月填值/9月整链/临时文件清理)
---
traffic-audit-web/src/views/ReportExport.vue | 49 ++++++++++++++++++++++++++++---------------------
1 files changed, 28 insertions(+), 21 deletions(-)
diff --git a/traffic-audit-web/src/views/ReportExport.vue b/traffic-audit-web/src/views/ReportExport.vue
index ca276fb..3bac892 100644
--- a/traffic-audit-web/src/views/ReportExport.vue
+++ b/traffic-audit-web/src/views/ReportExport.vue
@@ -3,7 +3,7 @@
<app-header title="浜ら�氱粺璁℃姤琛ㄥ鏍哥郴缁� - 鎶ヨ〃鐢熸垚"></app-header>
<el-container>
<el-aside width="200px">
- <el-menu router :default-active="activeMenu">
+ <el-menu ref="sideMenu" router :default-active="$route.path" @select="onMenuSelect">
<el-menu-item index="/dashboard">宸ヤ綔鍙�</el-menu-item>
<el-menu-item index="/import">鏁版嵁瀵煎叆</el-menu-item>
<el-menu-item index="/data">鏁版嵁鏌ョ湅</el-menu-item>
@@ -25,12 +25,12 @@
</div>
</div>
- <!-- 绗簩琛岋細鎶ヨ〃绫诲瀷 Tab锛堣揣杩� / 鏃呭 / 鎶曡祫 / 鑳借�� / 鍩庡競瀹㈣繍锛� -->
- <el-tabs v-model="activeKey" class="module-tabs">
- <el-tab-pane v-for="m in modules" :key="m.key" :name="m.key">
- <span slot="label">{{ m.title }}<el-tag v-if="m.tag" size="mini" :type="m.tagType || 'info'" style="margin-left:6px">{{ m.tag }}</el-tag></span>
- </el-tab-pane>
- </el-tabs>
+ <!-- 绗簩琛岋細鎶ヨ〃绫诲瀷鍒囨崲锛堣揣杩� / 鏃呭 / 鎶曡祫 / 鑳借�� / 鍩庡競瀹㈣繍锛夛紱el-radio-group 鏇夸唬 el-tabs锛岃閬� el-tabs 甯冨眬鏃犻檺寰幆锛堜笌 /import 淇涓�鑷达級 -->
+ <el-radio-group v-model="activeKey" class="module-tabs">
+ <el-radio-button v-for="m in modules" :key="m.key" :label="m.key">
+ {{ m.title }}<el-tag v-if="m.tag" size="mini" :type="m.tagType || 'info'" style="margin-left:6px">{{ m.tag }}</el-tag>
+ </el-radio-button>
+ </el-radio-group>
<!-- 绗笁琛岋細鏌ヨ鏉′欢鍖猴紙鍛ㄦ湡 + 鏈堜唤 + 鏌ヨ锛� -->
<section class="query-panel">
@@ -115,8 +115,9 @@
<table class="preview-summary" v-if="it.summary && it.summary.length">
<tbody>
<tr v-for="(s, i) in it.summary" :key="i">
- <td>{{ s.name }}</td>
+ <td>{{ s.label }}</td>
<td><span v-if="s.value === null || s.value === ''" class="cell-empty">锛堢┖锛�</span>{{ fmtVal(s.value) }}</td>
+ <td style="white-space:nowrap;color:#909399">{{ s.unit || '' }}</td>
</tr>
</tbody>
</table>
@@ -154,7 +155,6 @@
data() {
return {
loading: '',
- activeMenu: '/report',
activeKey: '',
updatedAt: '',
// 鏌ヨ鏉′欢锛歝ycle 鍛ㄦ湡锛坢onth 鏈堟姤 / quarter 瀛f姤 / year 骞存姤锛夛紝period 鎶ヨ〃鏈燂紙鏈堜唤 yyyy-MM 鎴栧勾浠� yyyy锛�
@@ -171,6 +171,11 @@
noteDraft: '',
modules: [
{
+ key: 'summary', title: '姹囨�诲ぇ琛�', items: [
+ { key: 'summaryWorkbook', label: '閬撹矾杩愯緭閲忔眹鎬昏〃锛堟暣鏈級', fileName: '鐢熸垚_閬撹矾杩愯緭閲忔眹鎬昏〃.xlsx', status: null, statusNote: '' }
+ ], checked: []
+ },
+ {
key: 'freight', title: '璐ц繍鎶ヨ〃', items: [
{ key: 'cityDetail', label: '璐ц繍閲忓垎甯傚窞鏄庣粏', fileName: '鐢熸垚_璐ц繍閲忓垎甯傚窞鏄庣粏.xlsx', status: null, statusNote: '' },
{ key: 'freightRank', label: '璐ц繍閲忔帓鍚�', fileName: '鐢熸垚_璐ц繍閲忔帓鍚�.xlsx', status: null, statusNote: '' },
@@ -185,13 +190,14 @@
{ key: 'passengerMidAnalysis', label: '涓彛寰勫垎鏋�', fileName: '鐢熸垚_鍏矾鏃呭涓彛寰勫垎鏋�.xlsx', status: null, statusNote: '' }
], checked: []
}, {
- key: 'cityPassenger', title: '鍩庡競瀹㈣繍鎶ヨ〃', tag: '鍏氦/鍑虹/杞ㄩ亾杞浮/姹囨��', tagType: 'success', items: [
+ key: 'cityPassenger', title: '鍩庡競瀹㈣繍鎶ヨ〃', items: [
{ key: 'cityBusDetail', label: '鍩庡競鍏氦瀹㈣繍閲忓垎甯傚窞鏄庣粏', fileName: '鐢熸垚_鍩庡競鍏氦瀹㈣繍閲忓垎甯傚窞鏄庣粏.xlsx', status: null, statusNote: '' },
{ key: 'cityTaxiDetail', label: '宸℃父鍑虹瀹㈣繍閲忓垎甯傚窞鏄庣粏', fileName: '鐢熸垚_宸℃父鍑虹瀹㈣繍閲忓垎甯傚窞鏄庣粏.xlsx', status: null, statusNote: '' },
{ key: 'cityRailFerryDetail', label: '杞ㄩ亾杞浮瀹㈣繍閲忓垎甯傚窞鏄庣粏', fileName: '鐢熸垚_杞ㄩ亾杞浮瀹㈣繍閲忓垎甯傚窞鏄庣粏.xlsx', status: null, statusNote: '' },
{ key: 'cityPassengerCitySum', label: '鍩庡競瀹㈣繍瀹㈣繍閲忓垎甯傚窞绱', fileName: '鐢熸垚_鍩庡競瀹㈣繍瀹㈣繍閲忓垎甯傚窞绱.xlsx', status: null, statusNote: '' },
{ key: 'cityPassengerDetailSum', label: '鍩庡競瀹㈣繍鍚勫競宸炴槑缁嗚〃', fileName: '鐢熸垚_鍩庡競瀹㈣繍鍚勫競宸炴槑缁嗚〃.xlsx', status: null, statusNote: '' },
- { key: 'cityPassengerSummary', label: '鍩庡競瀹㈣繍姹囨��', fileName: '鐢熸垚_鍩庡競瀹㈣繍姹囨��.xlsx', status: null, statusNote: '' }
+ { key: 'cityPassengerSummary', label: '鍩庡競瀹㈣繍姹囨��', fileName: '鐢熸垚_鍩庡競瀹㈣繍姹囨��.xlsx', status: null, statusNote: '' },
+ { key: 'wycSplit', label: '缃戠害杞﹀杩愰噺鎷嗗垎琛�', fileName: '鐢熸垚_缃戠害杞﹀杩愰噺鎷嗗垎琛�.xlsx', status: null, statusNote: '' }
], checked: []
},
{
@@ -211,10 +217,10 @@
}
},
computed: {
- username() { return localStorage.getItem('username') || '' },
- realName() { return localStorage.getItem('realName') || '' },
+ username() { return sessionStorage.getItem('username') || '' },
+ realName() { return sessionStorage.getItem('realName') || '' },
myModules() {
- const s = localStorage.getItem('modules')
+ const s = sessionStorage.getItem('modules')
if (!s) return []
return s.split(',').filter(Boolean)
},
@@ -236,7 +242,7 @@
// 鎶ヨ〃鏈熶笅鎷夊垎缁勶細骞存姤鎸夊勾浠斤紱鏈堟姤/瀛f姤鎸夊勾鍒嗙粍鍒� 1-12 鏈堬紙鑳借�楀彧鍒楀搴︽湯鏈堬級
periodGroups() {
const year = new Date().getFullYear()
- const years = [year - 1, year, year + 1]
+ const years = [year, year - 1, year + 1]
if (this.cycle === 'year') {
return [{ label: '閫夋嫨骞翠唤', options: years.map(y => ({ label: y + '骞�', value: String(y) })) }]
}
@@ -264,7 +270,7 @@
return m ? m.title : key
},
logout() {
- localStorage.removeItem('token'); localStorage.removeItem('username'); localStorage.removeItem('realName'); localStorage.removeItem('modules')
+ sessionStorage.removeItem('token'); sessionStorage.removeItem('username'); sessionStorage.removeItem('realName'); sessionStorage.removeItem('modules')
this.$router.push('/login')
},
// ==================== 鏌ヨ鏉′欢涓庣姸鎬佸埛鏂� ====================
@@ -304,7 +310,7 @@
const m = this.curModule
if (!m || !this.period) return
const params = Object.assign(this.buildParams(), { types: m.items.map(i => i.key).join(',') })
- api.get('/report/ready', { params })
+ api.get('/report/ready', { params, timeout: 60000 })
.then(res => {
const list = (res && res.data && res.data.items) || []
list.forEach(r => {
@@ -349,7 +355,7 @@
if (!items.length) { this.$message.warning('璇烽�夋嫨瑕侀瑙堢殑鎶ヨ〃'); return }
this.loading = 'preview-' + m.key
const params = Object.assign(this.buildParams(), { types: items.map(i => i.key).join(',') })
- api.get('/report/preview', { params })
+ api.get('/report/preview', { params, timeout: 60000 })
.then(res => {
const list = (res && res.data && res.data.items) || []
this.previewItems = list.map(it => {
@@ -387,18 +393,18 @@
const params = this.buildParams()
const doExport = () => {
if (items.length === 1) {
- api.get('/report/export/' + items[0].key, { params, responseType: 'blob' })
+ api.get('/report/export/' + items[0].key, { params, responseType: 'blob', timeout: 120000 })
.then(res => { this.downloadBlob(res, items[0].fileName); this.$message.success('鎶ヨ〃瀵煎嚭鎴愬姛'); this.loading = '' })
.catch(err => this.failWith(err))
return
}
const zipParams = Object.assign({}, params, { types: items.map(i => i.key).join(',') })
- api.get('/report/export/selected', { params: zipParams, responseType: 'blob' })
+ api.get('/report/export/selected', { params: zipParams, responseType: 'blob', timeout: 120000 })
.then(res => { this.downloadBlob(res, '鐢熸垚_鎵�閫夋姤琛╛' + this.period + '.zip'); this.$message.success('宸插鍑� ' + items.length + ' 寮犳姤琛紙zip锛�'); this.loading = '' })
.catch(err => this.failWith(err))
}
const readyParams = Object.assign({}, params, { types: items.map(i => i.key).join(',') })
- api.get('/report/ready', { params: readyParams })
+ api.get('/report/ready', { params: readyParams, timeout: 60000 })
.then(rd => {
const list = (rd && rd.data && rd.data.items) || []
const missing = list.filter(i => !i.ready)
@@ -420,6 +426,7 @@
.catch(() => doExport())
},
failWith(err) {
+ if (err && err._toast) { this.loading = ''; return }
let msg = ''
const d = err && err.response && err.response.data
if (d && typeof d === 'object' && d.message) msg = d.message
--
Gitblit v1.9.1