| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- <template>
- <div class="educationStatistics">
- <NavBar />
- <div class="statistics-container">
- <org-tree v-model="query.orgId" @change="getDataList"></org-tree>
- <div class="search-flex">
- <select-cell
- class="van-hairline--right"
- title="教育计划名称"
- v-model="query.planId"
- :dataList="planList"
- :prop="prop"
- @change="getDataList"
- />
- <date-cell title="统计月份" v-model="query.date" date-type="year-month" @change="getDataList" />
- </div>
- <div class="card-list">
- <empty v-if="!dataList || dataList.length === 0" />
- <ve-table
- v-else
- maxHeight="calc(100vh - 252px)"
- fixedHeader
- borderX
- borderY
- borderAround
- :columns="columns"
- :table-data="dataList"
- />
- </div>
- </div>
- </div>
- </template>
- <script>
- import NavBar from '@/components/NavBar'
- import OrgTree from '@/components/orgTree'
- import dateCell from '@/components/dateCell'
- import selectCell from '@/components/selectCell'
- import { dataList, planList } from './api'
- import { mapGetters } from 'vuex'
- import { formatDate } from '@/filters/filter'
- export default {
- components: {
- NavBar,
- OrgTree,
- dateCell,
- selectCell
- },
- data() {
- return {
- query: {
- date: `${formatDate(new Date(),'YYYY-MM')}`,
- orgId: null,
- planId: null
- },
- planList: [],
- prop: {
- label: 'name',
- value: 'id'
- },
- loading: false,
- columns: [
- {
- field: 'index',
- key: 'index',
- title: '序号',
- width: 50,
- align: 'center',
- renderBodyCell: ({ row, column, rowIndex }, h) => {
- return ++rowIndex
- }
- },
- { field: 'orgName', key: 'a', title: '单位名称', align: 'center' },
- { field: 'shouldFinish', key: 'b', title: '应完成数', align: 'center' },
- { field: 'finish', key: 'c', title: '已完成数', align: 'center' },
- { field: 'finishRate', key: 'd', title: '完成率', align: 'center' }
- ],
- dataList: []
- }
- },
- mounted() {
- this.initData()
- },
- computed: {
- ...mapGetters(['orgId'])
- },
- methods: {
- initData() {
- this.query.orgId = this.orgId
- this.getPlanList()
- },
- getPlanList() {
- planList(this.query.orgId).then(res => {
- this.planList = res.data
- if (res.data.length === 0) return this.$toast('暂无教育计划')
- this.query.planId = res.data[0].id
- this.query.date = formatDate(new Date(), 'YYYY-MM')
- this.getDataList()
- })
- },
- getDataList() {
- let data = {
- ...this.query
- }
- data.date = this.query.date && `${this.query.date}-01`
- if (!this.query.orgId) return this.$toast('请选择机构')
- dataList(data).then(res => {
- this.dataList = res.data
- })
- }
- }
- }
- </script>
- <style lang="scss">
- .van-cell-group {
- margin-bottom: 20px;
- }
- .van-cell-group:last-child {
- margin-bottom: 0;
- }
- .vue-table-root {
- tr,
- td,
- th {
- font-size: 25px !important;
- color: #666 !important;
- }
- }
- </style>
- <style lang="scss" scoped>
- .educationStatistics {
- }
- .statistics-container {
- }
- .card-list {
- padding: 20px;
- height: calc(100vh - 420px);
- overflow: hidden;
- }
- .card-num {
- display: flex;
- align-items: center;
- font-size: 28px;
- color: #009dff;
- }
- .flex-box {
- display: flex;
- align-items: center;
- > div {
- margin-right: 40px;
- }
- }
- .search-flex {
- display: flex;
- align-items: center;
- justify-content: space-between;
- > div {
- width: 50%;
- }
- }
- </style>
|