feat(报表): 新增灵枢年度报表页面及路由配置

添加灵枢年度报表下载功能页面,包含年份选择器和报表下载功能
在路由配置中新增灵枢年度报表页面路由
This commit is contained in:
2026-03-03 16:02:30 +08:00
parent 537d5993bd
commit 5138937dd4
2 changed files with 101 additions and 4 deletions

View File

@@ -0,0 +1,98 @@
<template>
<div class="mod-config">
<el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="downloadReport()"
>
<el-form-item label="年份选择">
<el-date-picker
v-model="selectedYear"
type="year"
format="yyyy"
value-format="yyyy"
:picker-options="pickerOptions"
placeholder="选择年份"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
size="small"
@click="downloadReport"
:disabled="!selectedYear"
>
下载报表
</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
dataForm: {},
selectedYear: new Date().getFullYear().toString(),
pickerOptions: {
disabledDate(time) {
// 禁用今年以后的年份
return time.getFullYear() > new Date().getFullYear()
}
}
};
},
methods: {
downloadReport() {
if (!this.selectedYear) {
this.$message.warning('请选择年份');
return;
}
const filename = `灵枢年度报表_${this.selectedYear}年.xlsx`;
this.$message({
message: '请耐心等待...',
type: 'info',
duration: 3000,
showClose: true
});
this.$http({
url: this.$http.adornUrl('/master/statistics/getLSYearStatistics'),
method: 'post',
data: this.$http.adornData({
year: this.selectedYear
}),
responseType: 'blob'
}).then(res => {
const blob = new Blob([res.data], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
});
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = filename;
link.click();
window.URL.revokeObjectURL(link.href);
this.$message({
message: '灵枢年度报表文件下载完成,请注意查看!',
type: 'success',
duration: 3000,
showClose: true
});
});
}
}
};
</script>
<style scoped>
.mod-config {
padding: 20px;
}
.el-form {
margin-bottom: 20px;
}
</style>