You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.4 KiB
181 lines
5.4 KiB
<template>
|
|
<div class="app-container row-container">
|
|
<div class="connection-header collect-header" style="padding: 0; border-top: none; height: auto; margin-bottom: 20px;">
|
|
<div class="head-search" style="margin-bottom: 0;">
|
|
<el-select
|
|
v-model="fondsIds"
|
|
multiple
|
|
collapse-tags
|
|
placeholder="请选择所属全宗"
|
|
style="width: 320px;"
|
|
>
|
|
<el-option
|
|
v-for="item in fondsOptions"
|
|
:key="item.id"
|
|
:label="item.fondsName"
|
|
:value="item.id"
|
|
/>
|
|
</el-select>
|
|
<el-select
|
|
v-model="years"
|
|
multiple
|
|
collapse-tags
|
|
placeholder="请选择年份"
|
|
style="width: 150px;"
|
|
>
|
|
<el-option
|
|
v-for="item in yearsOptions"
|
|
:key="item.id"
|
|
:label="item.name"
|
|
:value="item.id"
|
|
/>
|
|
</el-select>
|
|
<el-button class="filter-item filter-search" size="mini" type="success" icon="el-icon-search" @click="getTotalStatistics">查询</el-button>
|
|
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery">重置</el-button>
|
|
</div>
|
|
<el-button size="mini" @click="doExport()">
|
|
<i class="iconfont icon-daochu" />
|
|
导出
|
|
</el-button>
|
|
</div>
|
|
|
|
<el-table v-loading="loading" class="archives-table" :data="allData" :summary-method="getSummaries" show-summary style="width: 100%;">
|
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
|
<el-table-column prop="categoryName" label="档案门类(国标分类)" align="center" />
|
|
<el-table-column prop="archivesCount" label="案卷数(卷)" align="center" />
|
|
<el-table-column prop="singleCount" label="卷内件数(件)" align="center" />
|
|
<el-table-column prop="fileCount" label="电子原文数量(份)" align="center" />
|
|
<el-table-column prop="fileSize" label="电子档案存储容量(GB)" align="center" />
|
|
</el-table>
|
|
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { FetchFondsAll } from '@/api/system/fonds'
|
|
import { FetchTotalStatistics, FetchArchivedAllYear } from '@/api/statistics/statistics'
|
|
import qs from 'qs'
|
|
import { exportFile } from '@/utils/index'
|
|
import { mapGetters } from 'vuex'
|
|
|
|
export default {
|
|
name: 'DataStatistics',
|
|
data() {
|
|
return {
|
|
allData: [],
|
|
fondsOptions: [],
|
|
fondsIds: [],
|
|
yearsOptions: [],
|
|
years: [],
|
|
loading: false
|
|
}
|
|
},
|
|
computed: {
|
|
...mapGetters([
|
|
'baseApi'
|
|
])
|
|
},
|
|
mounted() {
|
|
this.getFondsDatas()
|
|
this.getArchivedAllYearDatas()
|
|
this.getTotalStatistics()
|
|
},
|
|
methods: {
|
|
getSummaries(param) {
|
|
const { columns, data } = param
|
|
const sums = []
|
|
columns.forEach((column, index) => {
|
|
if (index === 1) {
|
|
sums[index] = '合计(全库总量)'
|
|
return
|
|
}
|
|
const values = data.map(item => Number(item[column.property]))
|
|
if (!values.every(value => isNaN(value))) {
|
|
if (column.property === 'fileSize') {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
return prev + curr
|
|
}, 0).toFixed(3)
|
|
} else {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
return prev + curr
|
|
}, 0)
|
|
}
|
|
} else {
|
|
sums[index] = '-'
|
|
}
|
|
})
|
|
return sums
|
|
},
|
|
resetQuery() {
|
|
this.fondsIds = []
|
|
this.years = []
|
|
this.getTotalStatistics()
|
|
},
|
|
getFondsDatas() {
|
|
FetchFondsAll().then(res => {
|
|
this.fondsOptions = res
|
|
// 默认全选所有档案库
|
|
// this.fondsIds = res.map(item => item.id)
|
|
// this.checkAndQuery()
|
|
})
|
|
},
|
|
getArchivedAllYearDatas() {
|
|
FetchArchivedAllYear().then(res => {
|
|
this.yearsOptions = res.map(item => ({
|
|
id: item,
|
|
name: item
|
|
}))
|
|
// 默认全选所有年份
|
|
// this.years = res.map(item => item)
|
|
// this.checkAndQuery()
|
|
})
|
|
},
|
|
checkAndQuery() {
|
|
// 当两个数据都加载完成后才执行查询
|
|
if (this.fondsOptions.length > 0 && this.yearsOptions.length > 0) {
|
|
this.getTotalStatistics()
|
|
}
|
|
},
|
|
getTotalStatistics() {
|
|
this.loading = true
|
|
FetchTotalStatistics({
|
|
fondsIds: this.fondsIds,
|
|
years: this.years
|
|
}).then(res => {
|
|
this.allData = res
|
|
this.loading = false
|
|
})
|
|
},
|
|
doExport() {
|
|
this.$confirm('此操作将导出当前统计数据' + '<span>你是否还要继续?</span>', '提示', {
|
|
confirmButtonText: '继续',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
dangerouslyUseHTMLString: true
|
|
}).then(() => {
|
|
exportFile(this.baseApi + '/api/control/exportBusinessFlow?' + qs.stringify({}, { indices: false }))
|
|
}).catch(() => {
|
|
console.log('取消')
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.app-container {
|
|
height: calc(100vh - 140px);
|
|
.head-search{
|
|
.el-select,
|
|
.el-button{
|
|
margin-right: 10px;
|
|
}
|
|
}
|
|
::v-deep .el-table__footer{
|
|
font-size: 14px;
|
|
}
|
|
::v-deep .el-table__empty-block{
|
|
border-bottom: 1px solid #e4e7ed;
|
|
}
|
|
}
|
|
</style>
|