<template>
|
<el-container direction="vertical">
|
<app-header title="交通统计报表审核系统 - 报表生成"></app-header>
|
<el-container>
|
<el-aside width="200px">
|
<el-menu router default-active="/report">
|
<el-menu-item index="/dashboard">工作台</el-menu-item>
|
<el-menu-item index="/import">数据导入</el-menu-item>
|
<el-menu-item index="/data">数据查看</el-menu-item>
|
<el-menu-item index="/explain">企业解释</el-menu-item>
|
<el-menu-item index="/audit">审核结果</el-menu-item>
|
<el-menu-item index="/report">报表生成</el-menu-item>
|
<el-menu-item index="/rules">规则管理</el-menu-item>
|
<el-menu-item index="/users">用户管理</el-menu-item>
|
</el-menu>
|
</el-aside>
|
<el-main>
|
<div class="page-scroll">
|
<h3>生成统计报表</h3>
|
<el-card style="max-width:640px">
|
<el-form label-width="100px">
|
<el-form-item label="报表期">
|
<el-date-picker v-model="period" type="month" placeholder="选择月份" value-format="yyyy-MM" style="width:100%"></el-date-picker>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" @click="exportReport('cityDetail')" :loading="loading === 'cityDetail'">生成_货运量分市州明细</el-button>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" @click="exportReport('freightRank')" :loading="loading === 'freightRank'">生成_货运量排名</el-button>
|
<el-button type="primary" @click="exportReport('turnoverRank')" :loading="loading === 'turnoverRank'">生成_周转量排名</el-button>
|
</el-form-item>
|
</el-form>
|
</el-card>
|
<el-alert
|
title="提示:报表由系统根据已导入数据自动计算生成。货运量:合计来自模板_货运量周转量(左半1-N月)、规上来自H203-2月报、规下=合计-规上;周转量来自规上规下拆分表。"
|
type="info" style="margin-top:15px" :closable="false"></el-alert>
|
</div>
|
</el-main>
|
</el-container>
|
</el-container>
|
</template>
|
<script>
|
import AppHeader from '@/components/AppHeader.vue'
|
import api from '@/api'
|
export default {
|
components: { AppHeader },
|
name: 'ReportExport',
|
data() {
|
return { period: '', loading: '' }
|
},
|
methods: {
|
exportReport(type) {
|
if (!this.period) { this.$message.warning('请选择报表期'); return }
|
this.loading = type
|
const token = localStorage.getItem('token') || ''
|
api.get('/report/export/' + type, { params: { period: this.period }, responseType: 'blob' })
|
.then(res => {
|
const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
|
const url = window.URL.createObjectURL(blob)
|
const a = document.createElement('a')
|
a.href = url
|
a.download = this.fileName(type)
|
document.body.appendChild(a)
|
a.click()
|
window.URL.revokeObjectURL(url)
|
this.$message.success('报表生成成功')
|
})
|
.catch(() => { this.$message.error('报表生成失败,请确认已导入对应数据') })
|
.finally(() => { this.loading = '' })
|
},
|
fileName(type) {
|
const map = {
|
cityDetail: '生成_货运量分市州明细.xlsx',
|
freightRank: '生成_货运量排名.xlsx',
|
turnoverRank: '生成_周转量排名.xlsx'
|
}
|
return map[type] || 'report.xlsx'
|
}
|
}
|
}
|
</script>
|
<style scoped>
|
</style>
|