|
@@ -0,0 +1,476 @@
|
|
|
+<template>
|
|
|
+ <div class="startFrom">
|
|
|
+ <el-dialog title="考评详情" v-model="dialogVisible" :fullscreen="true" :close-on-click-modal="false">
|
|
|
+ <div class="startDetail">
|
|
|
+ <p class="starttitleSty">单据信息:</p>
|
|
|
+ <el-row class="danjuMsg">
|
|
|
+ <el-col :span="6">
|
|
|
+ <div class="danjuMsg_data">
|
|
|
+ <span class="data_tit">业务编号:</span>
|
|
|
+ <span>{{receiptMsg.code}}</span>
|
|
|
+ </div>
|
|
|
+ <div class="danjuMsg_data">
|
|
|
+ <span class="data_tit">创建日期:</span>
|
|
|
+ <span>{{receiptMsg.createDate}}</span>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <div class="danjuMsg_data">
|
|
|
+ <span class="data_tit">业务简述:</span>
|
|
|
+ <span>{{receiptMsg.des}}</span>
|
|
|
+ </div>
|
|
|
+ <div class="danjuMsg_data">
|
|
|
+ <span class="data_tit">业务类别:</span>
|
|
|
+ <span>{{receiptMsg.type}}</span>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <div class="danjuMsg_data">
|
|
|
+ <span class="data_tit">流程状态:</span>
|
|
|
+ <span>{{receiptMsg.stage}}</span>
|
|
|
+ </div>
|
|
|
+ <div class="danjuMsg_data">
|
|
|
+ <span class="data_tit">年度:</span>
|
|
|
+ <span>{{receiptMsg.year}}</span>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <div class="danjuMsg_data">
|
|
|
+ <span class="data_tit">创建人:</span>
|
|
|
+ <span>{{receiptMsg.createName}}</span>
|
|
|
+ </div>
|
|
|
+ <div class="danjuMsg_data">
|
|
|
+ <span class="data_tit">单据状态:</span>
|
|
|
+ <span>{{receiptMsg.recStage}}</span>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <div class="monthQuarterYear">
|
|
|
+ <el-tabs v-model="activeName" class="tableMain" @tab-click="handleClick">
|
|
|
+ <el-tab-pane label="考评指标项内容" name="first">
|
|
|
+ <el-table :data="quantifiedList" style="width: 100%" ref="benchmark" :border="true" >
|
|
|
+ <el-table-column type="index" label="排名" align="center"></el-table-column>
|
|
|
+ <el-table-column label="考评单位" prop="organization_name" width="200" sortable>
|
|
|
+ <template #default="scope">
|
|
|
+ <el-tooltip class="box-item" effect="customized" :content="scope.row.organization_name"
|
|
|
+ placement="right">
|
|
|
+ <span class="tooltipCC">{{scope.row.organization_name}}</span>
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="综合得分" prop="score_total" sortable />
|
|
|
+ <el-table-column v-for="(it, index) in benchmarkingIndicatorHeader" :key="index" :label="it.name" align="center">
|
|
|
+ <el-table-column sortable :sort-method="(a,b)=>sortMethods(a,b,iv.code)"
|
|
|
+ v-for="(iv, index) in it.children" :key="index" :label="iv.key" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <span
|
|
|
+ style="font-weight: bold"
|
|
|
+ :style="scope.row[iv.code+'_flag'] === '1'?'color:#3B7AD1': scope.row[iv.code+'_flag'] === '-1'?'color:#F65177':'color:#666666'">{{scope.row[iv.code]}}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="考评评价指标内容" name="second">
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <div class="tableSeach">
|
|
|
+ <div class="seachType" v-for="item in titleMsgArr" :key="item.isName"
|
|
|
+ :class="item.showClick? 'seachTypeCha':''" @click="changType(item)">
|
|
|
+ <img :src="item.img" alt="" v-if="!item.showClick">
|
|
|
+ <img :src="item.clickImg" alt="" v-else>
|
|
|
+ <p :style="item.showClick? 'color: #3B7AD1' : ''">{{item.isName}}</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="dialogVisible = false">取 消</el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ <import-dailog ref="importPage" @successImport="successImport"></import-dailog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import importDailog from '../importPage/importDailog.vue'
|
|
|
+import {apiGetOrgEvalInfoList,apiGetbinsectionList} from '../../api/api'
|
|
|
+import ExcelJS from 'exceljs'
|
|
|
+import fileSave from 'file-saver'
|
|
|
+
|
|
|
+import huoDef from '../../assets/benchmarkImg/huoDef.png'
|
|
|
+import shuiDef from '../../assets/benchmarkImg/shuiDef.png'
|
|
|
+import xinDef from '../../assets/benchmarkImg/xinDef.png'
|
|
|
+import meiDef from '../../assets/benchmarkImg/meiDef.png'
|
|
|
+import guoDef from '../../assets/benchmarkImg/guoDef.png'
|
|
|
+import zongDef from '../../assets/benchmarkImg/zongDef.png'
|
|
|
+
|
|
|
+import huoCha from '../../assets/benchmarkImg/huoCha.png'
|
|
|
+import shuiCha from '../../assets/benchmarkImg/shuiCha.png'
|
|
|
+import xinCha from '../../assets/benchmarkImg/xinCha.png'
|
|
|
+import meiCha from '../../assets/benchmarkImg/meiCha.png'
|
|
|
+import guoCha from '../../assets/benchmarkImg/guoCha.png'
|
|
|
+import zongCha from '../../assets/benchmarkImg/zongCha.png'
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ importDailog
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dialogVisible: false,
|
|
|
+ activeName: 'first',
|
|
|
+ quantifiedList: [],
|
|
|
+ nonQuantifiedList: [],
|
|
|
+ receiptMsg: {
|
|
|
+ code: '',
|
|
|
+ des: '',
|
|
|
+ stage: '',
|
|
|
+ createName: '',
|
|
|
+ createDate: '',
|
|
|
+ type: '',
|
|
|
+ year: '',
|
|
|
+ recStage: ''
|
|
|
+ },
|
|
|
+ rowMsg: {},
|
|
|
+ moduleData: [],
|
|
|
+ titleMsgArr: []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.titleMsgArr = [
|
|
|
+ {
|
|
|
+ isClass: 'huoDef',
|
|
|
+ isClassC: 'huoCha',
|
|
|
+ isName: '火电',
|
|
|
+ isNameEn: 'HD',
|
|
|
+ img: huoDef,
|
|
|
+ clickImg: huoCha,
|
|
|
+ showClick: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ isClass: 'shuiDef',
|
|
|
+ isClassC: 'shuiCha',
|
|
|
+ isName: '水电',
|
|
|
+ isNameEn: 'SD',
|
|
|
+ img: shuiDef,
|
|
|
+ clickImg: shuiCha,
|
|
|
+ showClick: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ isClass: 'xinDef',
|
|
|
+ isClassC: 'xinCha',
|
|
|
+ isName: '新能源',
|
|
|
+ isNameEn: 'XNYFG',
|
|
|
+ img: xinDef,
|
|
|
+ clickImg: xinCha,
|
|
|
+ showClick: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ isClass: 'meiDef',
|
|
|
+ isClassC: 'meiCha',
|
|
|
+ isName: '煤电一体化',
|
|
|
+ isNameEn: 'MDYTH',
|
|
|
+ img: meiDef,
|
|
|
+ clickImg: meiCha,
|
|
|
+ showClick: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ isClass: 'guoDef',
|
|
|
+ isClassC: 'guoCha',
|
|
|
+ isName: '国际业务',
|
|
|
+ isNameEn: 'GJYW',
|
|
|
+ img: guoDef,
|
|
|
+ clickImg: guoCha,
|
|
|
+ showClick: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ isClass: 'zongDef',
|
|
|
+ isClassC: 'zongCha',
|
|
|
+ isName: '综合支持',
|
|
|
+ isNameEn: 'ZHZC',
|
|
|
+ img: zongDef,
|
|
|
+ clickImg: zongCha,
|
|
|
+ showClick: false
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ init(row) {
|
|
|
+ this.dialogVisible = true
|
|
|
+ this.activeName = 'first'
|
|
|
+ this.receiptMsg = {
|
|
|
+ code: row.organizationEvaluationCode,
|
|
|
+ des: row.des,
|
|
|
+ stage: row.stage,
|
|
|
+ createName: row.createName,
|
|
|
+ createDate: row.createTime,
|
|
|
+ type: row.checkCycle === 'YDKP'?'月度考评':row.checkCycle === 'JDKP'?'季度考评':'年度考评',
|
|
|
+ year: row.year,
|
|
|
+ recStage: '有效'
|
|
|
+ }
|
|
|
+ this.getDetails(row.id, '是')
|
|
|
+ this.getModelData()
|
|
|
+ this.rowMsg = row
|
|
|
+ },
|
|
|
+ // 获取业务属性
|
|
|
+ getModelData() {
|
|
|
+ let that = this
|
|
|
+ apiGetbinsectionList().then(datas =>{
|
|
|
+ if (datas && datas.data) {
|
|
|
+ that.moduleData = datas.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //获取详情
|
|
|
+ getDetails(id, isevl) {
|
|
|
+ let that = this
|
|
|
+ let params = {
|
|
|
+ organizationEvaluationId: id,
|
|
|
+ isQuantified: isevl
|
|
|
+ }
|
|
|
+ apiGetOrgEvalInfoList(params).then(datas =>{
|
|
|
+ if (datas && datas.data) {
|
|
|
+ if (isevl === '是') {
|
|
|
+ that.quantifiedList = datas.data
|
|
|
+ that.pageLeft.total = datas.data.length
|
|
|
+ } else {
|
|
|
+ that.nonQuantifiedList = datas.data
|
|
|
+ that.pageRight.total = datas.data.length
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleImport() {
|
|
|
+ this.$refs.importPage.upload.title = "单位信息导入"
|
|
|
+ this.$refs.importPage.upload.open = true
|
|
|
+ this.$refs.importPage.upload.url = '/organization-evaluation-info/import'
|
|
|
+ },
|
|
|
+ successImport(val) {
|
|
|
+ this.getDetails(this.rowMsg.id)
|
|
|
+ },
|
|
|
+ handleExport() {
|
|
|
+ let data = [] //接口返回数据
|
|
|
+ const workbook = new ExcelJS.Workbook()
|
|
|
+ const worksheet = workbook.addWorksheet('Sheet1')
|
|
|
+ //根据数据自己调整
|
|
|
+ let colums = []
|
|
|
+ colums = [
|
|
|
+ { header: 'ID', key: 'id', width: 26, hidden: true },
|
|
|
+ { header: '单位名称', key: 'organizationShortName', width: 26 },
|
|
|
+ { header: '指标分类', key: 'typeName', width: 18 },
|
|
|
+ { header: '业务阶段', key: 'stageName', width: 18 },
|
|
|
+ { header: '业务属性', key: 'sectionName', width: 18 },
|
|
|
+ { header: '指标名称', key: 'childName', width: 18 },
|
|
|
+ { header: '填报部门', key: 'deptName', width: 26 },
|
|
|
+ { header: '指标项', key: 'optionName', width: 26 },
|
|
|
+ ]
|
|
|
+ if (this.activeName === 'first') {
|
|
|
+ colums.push(
|
|
|
+ { header: '值', key: 'quantifiedValue', width: 18 },
|
|
|
+ { header: '单位', key: 'unit', width: 18 },
|
|
|
+ { header: '审核状态', key: 'state', width: 18 }
|
|
|
+ )
|
|
|
+ this.quantifiedList.forEach(item =>{
|
|
|
+ if (item.updateMark) {
|
|
|
+ data.push(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ colums.push(
|
|
|
+ { header: '值', key: 'nonQuantifiedValue', width: 18 },
|
|
|
+ { header: '审核状态', key: 'state', width: 18 }
|
|
|
+ )
|
|
|
+ this.nonQuantifiedList.forEach(item =>{
|
|
|
+ if (item.updateMark) {
|
|
|
+ data.push(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ worksheet.columns = colums
|
|
|
+ worksheet.getRow(1).font = {
|
|
|
+ size: 12,
|
|
|
+ bold: true
|
|
|
+ }
|
|
|
+ worksheet.addRows(data)
|
|
|
+
|
|
|
+ workbook.xlsx.writeBuffer().then(buffer => {
|
|
|
+ //这里为type
|
|
|
+ const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' })
|
|
|
+ fileSave(blob, `数据导出.xlsx`)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less">
|
|
|
+.startFrom{
|
|
|
+ .el-overlay{
|
|
|
+ .el-dialog{
|
|
|
+ // margin-top: 7vh;
|
|
|
+ .el-dialog__body{
|
|
|
+ padding: 0 20px !important;
|
|
|
+ .startDetail{
|
|
|
+ .starttitleSty{
|
|
|
+ font-size: 18px;
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #3B7AD1;
|
|
|
+ // line-height: 12px;
|
|
|
+ margin: 20px 0 20px 10px;
|
|
|
+ }
|
|
|
+ .danjuMsg{
|
|
|
+ border: 1px solid #D6DBEA;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 10px;
|
|
|
+ // margin-bottom: 20px;
|
|
|
+ .danjuMsg_data{
|
|
|
+ padding: 5px 0 10px 0;
|
|
|
+ .data_tit{
|
|
|
+ margin-right: 10px;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
+ color: #8991B0;
|
|
|
+ }
|
|
|
+ .data_tit_wd{
|
|
|
+ display: inline-block;
|
|
|
+ width: 90px;
|
|
|
+ }
|
|
|
+ .el-form-item--small{
|
|
|
+ .el-input{
|
|
|
+ height: 25px;
|
|
|
+ width: 160px;
|
|
|
+ }
|
|
|
+ margin-bottom: 0;
|
|
|
+ .el-input-number{
|
|
|
+ height: 25px;
|
|
|
+ .el-input-number__decrease, .el-input-number__increase{
|
|
|
+ right: -39px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-select, .el-input{
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ .monthQuarterYear{
|
|
|
+ display: flex;
|
|
|
+ width: 100%;
|
|
|
+ margin-top: 20px;
|
|
|
+ .tableMain{
|
|
|
+ width: calc(100% - 100px);
|
|
|
+ .el-table {
|
|
|
+ .el-table__header-wrapper{
|
|
|
+ .el-table__header{
|
|
|
+ .el-table__cell {
|
|
|
+ border-bottom: none !important;
|
|
|
+ }
|
|
|
+ thead{
|
|
|
+ tr{
|
|
|
+ th{
|
|
|
+ .cell{
|
|
|
+ line-height: 16px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-table__body-wrapper {
|
|
|
+ height: 58vh !important;
|
|
|
+ .el-scrollbar{
|
|
|
+ .is-horizontal{
|
|
|
+ .el-scrollbar__thumb{
|
|
|
+ width: 100% !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-table__body{
|
|
|
+ tr{
|
|
|
+ td{
|
|
|
+ padding: 0;
|
|
|
+ .cell{
|
|
|
+ background: #F6F7FA;
|
|
|
+ line-height: 47px;
|
|
|
+ height: 47px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ td:hover {
|
|
|
+ line-height: 45px;
|
|
|
+ height: 45px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-table--border .el-table__cell{
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+ .el-table thead.is-group th.el-table__cell{
|
|
|
+ background: transparent;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tooltipCC {
|
|
|
+ width: 180px;
|
|
|
+ display: inline-block;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-pagination {
|
|
|
+ margin-top: 20px;
|
|
|
+ text-align: end;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .tableSeach{
|
|
|
+ width: 81px;
|
|
|
+ height: 100%;
|
|
|
+ margin-left: 10px;
|
|
|
+ margin-top: 37px;
|
|
|
+ border: 1px solid #D6DBEA;
|
|
|
+ padding: 5px 0;
|
|
|
+ border-radius: 5px;
|
|
|
+ .seachType{
|
|
|
+ width: 78px;
|
|
|
+ height: 78px;
|
|
|
+ cursor: pointer;
|
|
|
+ border-left: 3px solid transparent;
|
|
|
+ img{
|
|
|
+ margin-top: 17px;
|
|
|
+ margin-left: 27px;
|
|
|
+ }
|
|
|
+ p{
|
|
|
+ text-align: center;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .seachTypeCha{
|
|
|
+ background: #E6EBF5;
|
|
|
+ cursor: pointer;
|
|
|
+ border-left: 3px solid #3B7AD1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-dialog__footer{
|
|
|
+ .dialog-footer{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ .el-button{
|
|
|
+ width: 180px !important;
|
|
|
+ height: 40px !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+</style>
|