| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <template>
- <div class="educationStatistics">
- <NavBar />
- <div class="statistics-container">
- <org-tree v-model="query.orgId" @change="getDataList"></org-tree>
- <div class="search-flex-box">
- <select-cell 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">
- <van-empty description="暂无数据" v-if="!dataList || dataList.length === 0" />
- <!-- <van-cell-group v-for="(v,i) in dataList" :key="i">-->
- <!-- <van-cell :title="v.orgName" >-->
- <!-- <template #extra>-->
- <!-- <div class="card-num">-->
- <!-- {{v.finishRate}}-->
- <!-- </div>-->
- <!-- </template>-->
- <!-- <template #label>-->
- <!-- <div class="flex-box">-->
- <!-- <div>应培训数:{{v.shouldFinish}}</div>-->
- <!-- <div>已培训数:{{v.finish}}</div>-->
- <!-- </div>-->
- <!-- </template>-->
- <!-- </van-cell>-->
- <!-- </van-cell-group>-->
- <ve-table
- v-else
- :border-x="true"
- :border-y="true"
- :border-around="true"
- :columns="columns"
- :fixed-header="true"
- maxHeight="calc(100vh - 240px)"
- :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 Tables from '@/components/table'
- import {dataList,planList} from './api'
- import {mapGetters} from "vuex";
- import {formatDate} from "@/filters/filter";
- export default {
- components: {
- NavBar,
- OrgTree,
- DateCell,
- SelectCell,
- Tables
- },
- data() {
- return {
- query:{
- date:null,
- orgId:null,
- planId:null,
- },
- planList:[],
- prop:{
- label:'name',
- value:'id',
- },
- loading:false,
- columns:[
- {
- field: "index",
- key: "index",
- title: "序号",
- width: 50,
- align: "center",
- fixed: "left",
- renderBodyCell: ({ row, column, rowIndex }, h) => {
- return ++rowIndex;
- },
- },
- {field:'orgName',key:'2',title:'单位名称',align: "center" },
- {field:'finish',key:'3',title:'应培训数',align: "center" },
- {field:'shouldFinish',key:'4',title:'已培训数',align: "center" },
- {field:'finishRate',key:'5',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,th,td{
- font-size: 25px!important;
- color:#666!important;
- }
- }
- </style>
- <style lang="scss" scoped>
- .educationStatistics{
- }
- .statistics-container{
- }
- .search-flex-box{
- display: flex;
- align-items: center;
- justify-content: space-between;
- >div{
- width: 50%;
- border-right: 1px solid #eaeaea ;
- }
- }
- .card-list{
- padding: 20px;
- -height: calc(100vh - 410px);
- overflow: auto;
- }
- .card-num{
- display: flex;
- align-items: center;
- font-size: 28px;
- color: #009dff;
- }
- .flex-box{
- display: flex;
- align-items: center;
- >div{
- margin-right: 40px;
- }
- }
- </style>
|