阅行客电子档案
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

<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>