|
|
@@ -0,0 +1,276 @@
|
|
|
+<template>
|
|
|
+ <div class="educationStatistics">
|
|
|
+ <NavBar/>
|
|
|
+ <div class="statistics-container">
|
|
|
+ <org-tree v-model="orgId" @change="getOrgDataList"></org-tree>
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">
|
|
|
+ <van-cell title="开始月份" @click="showStartMonth = true" is-link arrow-direction="down"
|
|
|
+ :value="showStartSelectTimeText"/>
|
|
|
+ <van-popup v-model="showStartMonth" round position="bottom">
|
|
|
+ <van-datetime-picker
|
|
|
+ v-model="startMonth"
|
|
|
+ show-toolbar
|
|
|
+ @cancel="onCancel"
|
|
|
+ type="year-month"
|
|
|
+ @confirm="onStartMonthConfirm"
|
|
|
+ confirm-button-text="确定"
|
|
|
+ :default-index="yearSelect"
|
|
|
+ title="开始月份"
|
|
|
+ :formatter="formatter"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
+ </van-col>
|
|
|
+ <van-col span="12">
|
|
|
+ <van-cell title="结束月份" @click="showEndMonth = true" is-link arrow-direction="down"
|
|
|
+ :value="showEndSelectTimeText"/>
|
|
|
+ <van-popup v-model="showEndMonth" round position="bottom">
|
|
|
+ <van-datetime-picker
|
|
|
+ v-model="endMonth"
|
|
|
+ show-toolbar
|
|
|
+ @cancel="onCancel"
|
|
|
+ type="year-month"
|
|
|
+ :formatter="formatter"
|
|
|
+ @confirm="onEndMonthConfirm"
|
|
|
+ confirm-button-text="确定"
|
|
|
+ :default-index="yearSelect"
|
|
|
+ title="结束月份"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
+ </van-col>
|
|
|
+ </van-row>
|
|
|
+
|
|
|
+ <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 {getrehearsalList, getTableRehearsalList} from '@/api/drillTask.js'
|
|
|
+import {mapGetters} from 'vuex'
|
|
|
+import {formatDate} from '@/filters/filter'
|
|
|
+import {newDateMonth} from '@/utils/date.js'
|
|
|
+import {Toast} from 'vant'
|
|
|
+import dayjs from "dayjs";
|
|
|
+import {listReport, safeCheckSelfReport} from "views/menu/securityCheckRegister/api";
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ NavBar,
|
|
|
+ OrgTree,
|
|
|
+ dateCell,
|
|
|
+ selectCell
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ // active: '',
|
|
|
+ orgId: '',
|
|
|
+ showStatus: false, //状态显示隐藏
|
|
|
+ // yearColumns: [],
|
|
|
+ showStartMonth: false, //月份显示隐藏
|
|
|
+ showEndMonth: false, //月份显示隐藏
|
|
|
+ fieldValue: '', //状态名称
|
|
|
+ startMonth: newDateMonth(), //年份
|
|
|
+ endMonth: newDateMonth(), //年份
|
|
|
+ showStartSelectTimeText: this.getDayStr(new Date(), 'YYYY-MM'),
|
|
|
+ showEndSelectTimeText: this.getDayStr(new Date(), 'YYYY-MM'),
|
|
|
+ yearSelect: null,
|
|
|
+ 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: 'planInspectNumber', key: 'b', title: '应检数', align: 'center'},
|
|
|
+ {field: 'realityInspectNumber', key: 'c', title: '已检数', align: 'center'},
|
|
|
+ {field: 'inspectRate', key: 'd', title: '完成率', align: 'center'}
|
|
|
+ ],
|
|
|
+ dataList: []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.startMonth = new Date(newDateMonth())
|
|
|
+ this.endMonth = new Date(newDateMonth())
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.initData()
|
|
|
+ },
|
|
|
+ computed: {},
|
|
|
+ methods: {
|
|
|
+ formatter(type, val) {
|
|
|
+ if (type === 'month') {
|
|
|
+ return `${val}月`;
|
|
|
+ } else if (type === 'year') {
|
|
|
+ return `${val}年`;
|
|
|
+ }
|
|
|
+ return val;
|
|
|
+ },
|
|
|
+ getDayStr(date, format = 'YYYY-MM-DD') {
|
|
|
+ return dayjs(date).format(format);
|
|
|
+ },
|
|
|
+ initData() {
|
|
|
+ this.orgId = JSON.parse(window.sessionStorage.getItem('SET_USER_ORGID')) + ''
|
|
|
+
|
|
|
+ },
|
|
|
+ //机构搜索
|
|
|
+ getOrgDataList(val) {
|
|
|
+ this.orgId = val
|
|
|
+
|
|
|
+ this.getDataList()
|
|
|
+ },
|
|
|
+ getDataList() {
|
|
|
+ let data = {
|
|
|
+ orgId: this.orgId || '',
|
|
|
+ startTime: this.showStartSelectTimeText + '-01',
|
|
|
+ endTime: this.showEndSelectTimeText + '-01',
|
|
|
+ appSelect : 1,
|
|
|
+ }
|
|
|
+
|
|
|
+ safeCheckSelfReport(data).then(res => {
|
|
|
+ if (res.data.length > 0){
|
|
|
+ let arr=res.data;
|
|
|
+ // 将百分比字符串转换为数字
|
|
|
+ arr.forEach(item => {
|
|
|
+ item.inspectRate = parseFloat(item.inspectRate);
|
|
|
+ });
|
|
|
+
|
|
|
+ // 根据percentage字段进行降序排列
|
|
|
+ arr.sort((a, b) => b.inspectRate - a.inspectRate);
|
|
|
+ // 将排序后的数字转换回带有百分比符号的字符串
|
|
|
+ arr.forEach(item => {
|
|
|
+ item.inspectRate = `${item.inspectRate}%`;
|
|
|
+ });
|
|
|
+ // 重新赋值给dataList
|
|
|
+ this.dataList = arr;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ onCancel() {
|
|
|
+
|
|
|
+ this.showStartMonth = false
|
|
|
+ this.showEndMonth = false
|
|
|
+ },
|
|
|
+
|
|
|
+ //日期格式
|
|
|
+ formatDate(date) {
|
|
|
+ return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`
|
|
|
+ },
|
|
|
+ //日期选中触发
|
|
|
+ onStartMonthConfirm(val) {
|
|
|
+ let st = dayjs(this.startMonth).month()+1;
|
|
|
+ let ed = dayjs(val).month()+1;
|
|
|
+ console.log("123",st,ed)
|
|
|
+ if (ed < st) {
|
|
|
+ return Toast('结束月份不能小于开始月份')
|
|
|
+ }
|
|
|
+ this.showStartSelectTimeText = this.getDayStr(val, 'YYYY-MM');
|
|
|
+ this.startMonth = val;
|
|
|
+ this.showStartMonth = false;
|
|
|
+ this.showEndMonth = true;
|
|
|
+ },
|
|
|
+ //年份选中触发
|
|
|
+ onEndMonthConfirm(val) {
|
|
|
+ let st = dayjs(this.startMonth).month()+1;
|
|
|
+ let ed = dayjs(val).month()+1;
|
|
|
+ console.log("123",st,ed)
|
|
|
+ if (ed < st) {
|
|
|
+ return Toast('结束月份不能小于开始月份')
|
|
|
+ }
|
|
|
+ this.showEndSelectTimeText = this.getDayStr(val, 'YYYY-MM');
|
|
|
+ this.endMonth = val
|
|
|
+ this.showEndMonth = false
|
|
|
+ this.getDataList()
|
|
|
+ },
|
|
|
+ }
|
|
|
+}
|
|
|
+</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%;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.van-cell__value {
|
|
|
+ color: black;
|
|
|
+ text-align: left;
|
|
|
+}
|
|
|
+</style>
|