<template>
|
<div class="personnel-evaluation">
|
<!-- <el-row class="title">
|
<el-col :span="12" style="padding-left: 20px;">人员考评
|
</el-col>
|
</el-row> -->
|
<div class="search">
|
<div class="search_thing">
|
<div class="search_label">月份:</div>
|
<div class="search_input">
|
<el-date-picker
|
size="small"
|
v-model="entity.month"
|
type="month"
|
placeholder="选择月"
|
format="yyyy-MM"
|
value-format="yyyy-MM"
|
@change="refreshTable()">
|
</el-date-picker>
|
</div>
|
</div>
|
<div class="search_thing">
|
<div class="search_label">实验室:</div>
|
<div class="search_input">
|
<el-select v-model="entity.departLims" placeholder="全部" size="small" @change="refreshTable()">
|
<el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</div>
|
</div>
|
<div class="search_thing">
|
<div class="search_label">人员名称:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="entity.name" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="padding-left: 30px;">
|
<el-button size="small" @click="refresh()">重 置</el-button>
|
<el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
|
</div>
|
</div>
|
<div class="tabs" style="margin-top: 10px;">
|
<el-radio-group v-model="tabValue" size="small" >
|
<el-radio-button label="evaluation">考评</el-radio-button>
|
<el-radio-button label="employeeMutualEvaluation">员工互评</el-radio-button>
|
<el-radio-button label="leaderRate">组长评分</el-radio-button>
|
<el-radio-button label="supervisorRate">主管打分</el-radio-button>
|
</el-radio-group>
|
<el-button type="primary" size="small" :loading="outLoading" @click="handleDown">导 出</el-button>
|
</div>
|
<div class="table">
|
<component :is="tabValue" ref="component" :entity="entity" v-if="laboratoryList.length>0"></component>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import evaluation from '../do/b3-personnel-evaluation/evaluation.vue'
|
import employeeMutualEvaluation from '../do/b3-personnel-evaluation/employee-mutual-evaluation.vue'
|
import leaderRate from '../do/b3-personnel-evaluation/leader-rate.vue'
|
import supervisorRate from '../do/b3-personnel-evaluation/supervisor-rate.vue'
|
export default {
|
components: {
|
evaluation,
|
employeeMutualEvaluation,
|
leaderRate,
|
supervisorRate
|
},
|
data(){
|
return{
|
entity:{
|
month:new Date().getFullYear()+'-'+((new Date().getMonth() + 1) < 10 ? '0'+(new Date().getMonth() + 1):(new Date().getMonth() + 1)),
|
departLims:'',
|
name:''
|
},
|
tabValue:'evaluation',
|
laboratoryList:[],
|
outLoading:false,
|
copyEntity:null
|
}
|
},
|
created(){
|
this.obtainItemParameterList()
|
},
|
methods: {
|
refreshTable(){
|
this.$refs.component.refreshTable()
|
},
|
refresh(){
|
this.entity = this.HaveJson(this.copyEntity)
|
this.$refs.component.refresh()
|
},
|
obtainItemParameterList() {
|
this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => {
|
let data = []
|
res.data.forEach(a => {
|
data.push({
|
label: a.laboratoryName,
|
value: a.laboratoryName
|
})
|
})
|
this.laboratoryList = data
|
this.entity.departLims = data[0].value
|
this.copyEntity = this.HaveJson(this.entity)
|
})
|
},
|
handleDown(){
|
let url = ''
|
let title = ''
|
if(this.tabValue=='evaluation'){
|
url = this.$api.evaluate.exportEvaluate
|
title = '考评表'
|
}else if(this.tabValue=='employeeMutualEvaluation'){
|
url = this.$api.evaluate.exportEvaluate
|
title = '考评表'
|
}else if(this.tabValue=='leaderRate'){
|
url = this.$api.evaluate.exportEvaluateLeader
|
title = '组长评分表'
|
}else if(this.tabValue=='supervisorRate'){
|
url = this.$api.evaluate.exportEvaluateCompetent
|
title = '主管评分表'
|
}
|
let entity = {...this.entity}
|
this.outLoading = true
|
this.$axios.post(url,{
|
...entity
|
},{responseType: "blob"}).then(res => {
|
this.outLoading = false
|
this.$message.success('导出成功')
|
const blob = new Blob([res],{ type: 'application/octet-stream' });
|
const url = URL.createObjectURL(blob);
|
const link = document.createElement('a');
|
link.href = url;
|
link.download = entity.departLims+'-'+entity.month+title+'.xlsx';
|
link.click();
|
})
|
},
|
}
|
}
|
</script>
|
|
<style scoped>
|
.personnel-evaluation {
|
height: 100%;
|
overflow-y: auto;
|
}
|
.title {
|
height: 60px;
|
line-height: 60px;
|
}
|
.search {
|
background-color: #fff;
|
height: 80px;
|
display: flex;
|
align-items: center;
|
margin-top: 20px;
|
}
|
|
.search_thing {
|
width: 350px;
|
display: flex;
|
align-items: center;
|
}
|
|
.search_label {
|
width: 110px;
|
|
font-size: 14px;
|
text-align: right;
|
}
|
|
.search_input {
|
width: calc(100% - 110px);
|
}
|
.tabs{
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
}
|
.table {
|
margin-top: 10px;
|
background-color: #fff;
|
width: calc(100% - 40px);
|
height: calc(100% - 60px - 80px - 10px - 42px);
|
padding: 20px;
|
}
|
</style>
|