| | |
| | | <template> |
| | | <div id="warp"> |
| | | <div> |
| | | <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect" |
| | | style="margin-bottom: 10px"> |
| | | <el-menu-item index="0">省厅月度</el-menu-item> |
| | | <el-menu-item index="2">省厅季度</el-menu-item> |
| | | <el-menu-item index="1">区县月度</el-menu-item> |
| | | <el-menu-item index="3">区县季度</el-menu-item> |
| | | </el-menu> |
| | | </div> |
| | | <div style="display: flex;position: relative"> |
| | | <div style="width: 100%"> |
| | | <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect" |
| | | style="margin-bottom: 10px"> |
| | | <el-menu-item index="0">省厅月度</el-menu-item> |
| | | <el-menu-item index="2">省厅季度</el-menu-item> |
| | | <el-menu-item index="1">区县月度</el-menu-item> |
| | | <el-menu-item index="3">区县季度</el-menu-item> |
| | | </el-menu> |
| | | </div> |
| | | <!-- 导出按钮 --> |
| | | <div style="position: absolute;top:10px; right: 5px;z-index: 2" v-hasPermi="['check:result:export']"> |
| | | <el-popover |
| | | placement="left" |
| | | width="300px" |
| | | trigger="click"> |
| | | <span style="font-weight: bold;font-size: 16px">导出</span> |
| | | |
| | | <el-form ref="exportForm" :model="exportForm" :rules="exportRules" label-width="100px"> |
| | | <el-form-item label="考核时间" prop="quarter" required> |
| | | <el-date-picker |
| | | :clearable="false" |
| | | v-model="exportForm.quarter" |
| | | type="monthrange" |
| | | format="yyyy-MM" |
| | | value-format="yyyy-MM" |
| | | unlink-panels |
| | | range-separator="至" |
| | | start-placeholder="开始月份" |
| | | end-placeholder="结束月份" |
| | | :picker-options="pickerOptions"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="区县" prop="deptIds"> |
| | | <el-select v-model="exportForm.deptIds" multiple clearable> |
| | | <el-option v-for="dept in areaList" |
| | | :value="dept.id" |
| | | :key="dept.value" |
| | | :label="dept.value"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="考核标签" prop="examineTags"> |
| | | <el-checkbox-group v-model="exportForm.examineTags"> |
| | | <el-checkbox |
| | | v-for="item in tagOptions" |
| | | :key="item.value" |
| | | :label="item.value" |
| | | >{{ item.label }} |
| | | </el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="计算平均值" prop="average"> |
| | | <el-switch |
| | | v-model="exportForm.average" |
| | | > |
| | | </el-switch> |
| | | </el-form-item> |
| | | <el-button type="primary" size="small" style="width: 400px" @click="handleExport">导出</el-button> |
| | | </el-form> |
| | | <el-button slot="reference" type="primary" size="mini" plain>导出</el-button> |
| | | </el-popover> |
| | | </div> |
| | | </div> |
| | | <div class="data-chart-container"> |
| | | <el-card class="data-card" :body-style="{ height: '100%' }"> |
| | | <div class="card-content"> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="bottom-publish"> |
| | | <el-button v-hasPermi="['check:score:publish']" size="medium" :type="isAnyUnpublished(city) ? 'success' : 'danger'" @click="publish(city)"> |
| | | <el-button v-hasPermi="['check:score:publish']" size="medium" |
| | | :type="isAnyUnpublished(city) ? 'success' : 'danger'" @click="publish(city)"> |
| | | {{ isAnyUnpublished(city) ? '发布' : '取消' }} |
| | | </el-button> |
| | | <el-button size="medium" @click="jumpDetail(index)" type="primary">详情</el-button> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { areaSelect } from '@/api/system/dept'; |
| | | import { listScore, getScore, delScore, addScore, updateScore, publishScore } from "@/api/platform/check-score"; |
| | | import {areaSelect} from '@/api/system/dept'; |
| | | import {listScore, getScore, delScore, addScore, updateScore, publishScore} from "@/api/platform/check-score"; |
| | | import * as echarts from 'echarts'; |
| | | |
| | | let observer = null; |
| | | let chart = null; |
| | | export default { |
| | | name: 'index', |
| | | data() { |
| | | return { |
| | | tagOptions: [ |
| | | {value: 0, label: '省厅'}, |
| | | {value: 1, label: '区县'} |
| | | ], |
| | | pickerOptions: { |
| | | shortcuts: [{ |
| | | text: '第一季度', |
| | | onClick(picker) { |
| | | picker.$emit('pick', [new Date(new Date().getFullYear() + "-01"), new Date(new Date().getFullYear() + "-03")]); |
| | | } |
| | | }, |
| | | { |
| | | text: '第二季度', |
| | | onClick(picker) { |
| | | picker.$emit('pick', [new Date(new Date().getFullYear() + "-04"), new Date(new Date().getFullYear() + "-06")]); |
| | | } |
| | | }, |
| | | { |
| | | text: '第三季度', |
| | | onClick(picker) { |
| | | picker.$emit('pick', [new Date(new Date().getFullYear() + "-07"), new Date(new Date().getFullYear() + "-09")]) |
| | | } |
| | | }, |
| | | { |
| | | text: '第四季度', |
| | | onClick(picker) { |
| | | picker.$emit('pick', [new Date(new Date().getFullYear() + "-10"), new Date(new Date().getFullYear() + "-12")]) |
| | | } |
| | | }] |
| | | }, |
| | | province: { |
| | | id: [], |
| | | publish: null, |
| | | }, |
| | | // 导出表单验证 |
| | | exportRules: { |
| | | quarter: [ |
| | | { type: 'array', required: true, message: '请选择时间', trigger: 'change' } |
| | | ], |
| | | }, |
| | | checkScoreList: [], |
| | | areaList: [], |
| | | activeIndex: '0', |
| | | date: '', |
| | | company: '', |
| | | // 导出 |
| | | exportForm: { |
| | | quarter: [], |
| | | deptIds: [], |
| | | examineTags: [], |
| | | examineCategories: [], |
| | | average: null, |
| | | }, |
| | | // 查询参数 |
| | | queryParams: { |
| | | examineTag: null, |
| | |
| | | tooltip: {}, |
| | | xAxis: { |
| | | type: 'category', |
| | | axisLabel: { |
| | | }, |
| | | axisLabel: {}, |
| | | data: this.dataList.name |
| | | }, |
| | | yAxis: { |
| | |
| | | tooltip: {}, |
| | | xAxis: { |
| | | type: 'category', |
| | | axisLabel: { |
| | | }, |
| | | axisLabel: {}, |
| | | data: nameArray |
| | | |
| | | }, |
| | |
| | | }, |
| | | filterData(mapData, tag) { |
| | | if (!mapData) return; |
| | | if(!Array.isArray(mapData)) return; |
| | | if (!Array.isArray(mapData)) return; |
| | | const tempArray = []; |
| | | mapData.forEach((item) => { |
| | | if(item.data.length) { |
| | | if (item.data.length) { |
| | | let flag = false; |
| | | item.data.forEach((examine) => { |
| | | if(examine.examineCategory === tag) { |
| | | if (examine.examineCategory === tag) { |
| | | flag = true |
| | | tempArray.push(examine.score); |
| | | } |
| | | }) |
| | | if(!flag){ |
| | | if (!flag) { |
| | | tempArray.push(0); |
| | | } |
| | | } |
| | |
| | | // 错误处理逻辑 |
| | | }); |
| | | }, |
| | | // clickItem(value) { |
| | | // value === this.exportForm.examineTag ? this.exportForm.examineTag = null : this.exportForm.examineTag = value |
| | | // }, |
| | | /** 导出按钮操作 */ |
| | | handleExport() { |
| | | this.$refs['exportForm'].validate((valid) => { |
| | | if (valid) { |
| | | this.download( |
| | | "/check/score/export", |
| | | { |
| | | ...this.exportForm, |
| | | }, |
| | | `考核指标_${new Date().getTime()}.xlsx` |
| | | ); |
| | | } |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |