|
|
|
|
|
<template>
|
|
|
|
|
|
<div class="app-container">
|
|
|
|
|
|
<div class="title">{{ vote.pingceName }}</div>
|
|
|
|
|
|
<div class="title" style="font-size: 22px">{{ vote.voteTitle }}</div>
|
|
|
|
|
|
<div class="time">时间:{{ vote.sTime }} - {{ vote.eTime }}</div>
|
|
|
|
|
|
<div class="time" v-if="vote.khitemTypeid===1 && vote.umax">评优最大值为 {{ vote.umax }}</div>
|
|
|
|
|
|
<div class="des">{{ vote.vDescription }}</div>
|
|
|
|
|
|
<el-row :gutter="10" class="tou_piao" v-if="vote.khitemTypeid===2||vote.khitemTypeid===3">
|
|
|
|
|
|
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-for="item in voteList">
|
|
|
|
|
|
<div class="tou_piao_item">
|
|
|
|
|
|
<div>
|
|
|
|
|
|
{{ item.bkhdxName }}
|
|
|
|
|
|
<el-link type="primary" @click="goPage(item)" icon="el-icon-view" v-hasPermi="['system:dept:query','kaohe:employee:query']"></el-link>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="_desc">参与评分 {{ item.voteNum!==null?item.voteNum: ''}} 人 </div>
|
|
|
|
|
|
<div class="_desc">均值:{{ item.avgScore!==null?item.avgScore: '' }} </div>
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<el-input-number v-model="item.score" :max="vote.maxNum"></el-input-number>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<el-row :gutter="10" class="tou_piao" v-if="vote.khitemTypeid===1">
|
|
|
|
|
|
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-for="item in voteList">
|
|
|
|
|
|
<div class="tou_piao_item">
|
|
|
|
|
|
<div>
|
|
|
|
|
|
{{ item.bkhdxName }}
|
|
|
|
|
|
<el-link type="primary" @click="goPage(item)" icon="el-icon-view" v-hasPermi="['system:dept:query','kaohe:employee:query']"></el-link>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="_desc">参与评分 {{ item.voteNum!==null?item.voteNum: ''}} 人 </div>
|
|
|
|
|
|
<div class="_desc">均值:{{ item.avgScore!==null?item.avgScore: '' }} </div>
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<el-radio-group v-model="item.option" size="mini">
|
|
|
|
|
|
<el-radio label="optionA">优秀</el-radio>
|
|
|
|
|
|
<el-radio label="optionB">合格</el-radio>
|
|
|
|
|
|
<el-radio label="optionC">基本合格</el-radio>
|
|
|
|
|
|
<el-radio label="optionD">不合格</el-radio>
|
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<div style="text-align: center; margin-top: 40px;">
|
|
|
|
|
|
<el-button type="primary" icon="el-icon-s-promotion" @click="VoteSubmit" v-hasPermi="['kaohe:vote_emp:edit']">提交评分</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 详情对话框 -->
|
|
|
|
|
|
<el-dialog :title="uploadFJ.title" :visible.sync="uploadFJ.open" width="800px" append-to-body>
|
|
|
|
|
|
|
|
|
|
|
|
<el-row :gutter="20" v-if="vote.bkhdxType==='0'">
|
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
|
<span>部门名称:</span><span>{{ detail.deptName }}</span>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<el-row :gutter="20" v-if="vote.bkhdxType==='1'">
|
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
|
<span>工号:</span><span>{{ detail.wordId }}</span>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
|
<span>职工姓名:</span><span>{{ detail.empName }}</span>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
|
<span>部门名称:</span><span>{{ detail.deptName }}</span>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<el-row class="mt20" :gutter="20" v-for="item in uploadFJ.docDiscripList">
|
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
|
<span>附件主题:</span><span>{{ item.title }}</span>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col class="mt5" :span="24">
|
|
|
|
|
|
<span>附件简介:</span><span>{{ item.docDiscrip }}</span>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<el-card style="margin-bottom: 10px;">
|
|
|
|
|
|
<div slot="header">
|
|
|
|
|
|
<span>附件</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div v-for="(item,index) in uploadFJ.fileList" :key="item.url" class="yy_fj_list">
|
|
|
|
|
|
<a :href="item.url" :download="item.name" target="_blank">{{ item.name }}</a>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
|
|
|
<el-button @click="uploadFJ.open = false">取 消</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import { getVote } from "@/api/kaohe/vote"
|
|
|
|
|
|
import { listVote_emp, VoteEmpSubmit } from "@/api/kaohe/vote_emp"
|
|
|
|
|
|
import { getEmployee } from "@/api/kaohe/employee";
|
|
|
|
|
|
import { getDept } from "@/api/system/dept"
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
|
name: "votepage",
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
vote: {},
|
|
|
|
|
|
loading: null,
|
|
|
|
|
|
voteList: [],
|
|
|
|
|
|
// 附件详情参数
|
|
|
|
|
|
uploadFJ: {
|
|
|
|
|
|
// 是否显示弹出层
|
|
|
|
|
|
open: false,
|
|
|
|
|
|
// 标题
|
|
|
|
|
|
title: '',
|
|
|
|
|
|
// 附件上传
|
|
|
|
|
|
fileList: [],
|
|
|
|
|
|
// 附件上传
|
|
|
|
|
|
docDiscripList: []
|
|
|
|
|
|
},
|
|
|
|
|
|
// 修改内容行
|
|
|
|
|
|
detail: {},
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
created() {
|
|
|
|
|
|
this.getVote();
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
getVote(){
|
|
|
|
|
|
this.loading = this.$loading({
|
|
|
|
|
|
lock: true,
|
|
|
|
|
|
text: 'Loading',
|
|
|
|
|
|
spinner: 'el-icon-loading',
|
|
|
|
|
|
background: 'rgba(0, 0, 0, 0.7)'
|
|
|
|
|
|
});
|
|
|
|
|
|
getVote(this.$route.query.id).then(response => {
|
|
|
|
|
|
this.vote = response.data;
|
|
|
|
|
|
this.getList();
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
/** 查询投票评测列表 */
|
|
|
|
|
|
getList() {
|
|
|
|
|
|
listVote_emp({
|
|
|
|
|
|
voteId: this.$route.query.id,
|
|
|
|
|
|
pageNum: 1,
|
|
|
|
|
|
pageSize: 10000000,
|
|
|
|
|
|
}).then(response => {
|
|
|
|
|
|
this.voteList = response.rows;
|
|
|
|
|
|
this.loading.close()
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
VoteSubmit(){
|
|
|
|
|
|
let voteEmpList = [];
|
|
|
|
|
|
let flag = true;
|
|
|
|
|
|
let bkhdxName = '';
|
|
|
|
|
|
let pyA = 0
|
|
|
|
|
|
if(this.vote.khitemTypeid===2 || this.vote.khitemTypeid===3){
|
|
|
|
|
|
this.voteList.forEach(item => {
|
|
|
|
|
|
voteEmpList.push({
|
|
|
|
|
|
id: item.id,
|
|
|
|
|
|
bkhdxName: item.bkhdxName,
|
|
|
|
|
|
score: item.score,
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
if(this.vote.khitemTypeid===1){
|
|
|
|
|
|
this.voteList.forEach(item => {
|
|
|
|
|
|
let obj = {
|
|
|
|
|
|
id: item.id,
|
|
|
|
|
|
bkhdxName: item.bkhdxName,
|
|
|
|
|
|
optionA: 0,
|
|
|
|
|
|
optionB: 0,
|
|
|
|
|
|
optionC: 0,
|
|
|
|
|
|
optionD: 0,
|
|
|
|
|
|
}
|
|
|
|
|
|
if(item.option){
|
|
|
|
|
|
obj[item.option] = 1;
|
|
|
|
|
|
}else {
|
|
|
|
|
|
flag = false;
|
|
|
|
|
|
bkhdxName += item.bkhdxName+','
|
|
|
|
|
|
}
|
|
|
|
|
|
if(item.option&&item.option==='optionA'){
|
|
|
|
|
|
pyA += 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
voteEmpList.push(obj);
|
|
|
|
|
|
});
|
|
|
|
|
|
bkhdxName=bkhdxName.slice(0, -1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(this.vote.umax && pyA>this.vote.umax){
|
|
|
|
|
|
flag = false;
|
|
|
|
|
|
this.$alert(`评优数量不能超过评优最大值!`, `提示`, {
|
|
|
|
|
|
type: 'Danger'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
if(flag){
|
|
|
|
|
|
if(new Date(this.vote.eTime) > (new Date())){
|
|
|
|
|
|
this.$confirm('是否确认提交评分?', '提示', {
|
|
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
|
|
type: 'warning'
|
|
|
|
|
|
}).then(() => {
|
|
|
|
|
|
VoteEmpSubmit({
|
|
|
|
|
|
khitemTypeid : this.vote.khitemTypeid,
|
|
|
|
|
|
voteId : this.vote.id,
|
|
|
|
|
|
userId : this.$store.state.user.id,
|
|
|
|
|
|
userName : this.$store.state.user.name,
|
|
|
|
|
|
uid : 1,
|
|
|
|
|
|
voteEmpList: voteEmpList
|
|
|
|
|
|
}).then(response => {
|
|
|
|
|
|
this.$modal.msgSuccess("提交成功");
|
|
|
|
|
|
this.$router.go(-1)
|
|
|
|
|
|
});
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
|
this.$message({
|
|
|
|
|
|
type: 'info',
|
|
|
|
|
|
message: '已取消提交操作'
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
}else {
|
|
|
|
|
|
this.$alert(`已超时,无法提交评分!`, `提示`, {
|
|
|
|
|
|
type: 'Danger'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
}else if(bkhdxName){
|
|
|
|
|
|
this.$alert(`【${ bkhdxName }】未评分,请去评分!`, `提示`, {
|
|
|
|
|
|
type: 'Danger'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// 表单重置
|
|
|
|
|
|
reset() {
|
|
|
|
|
|
this.detail = {};
|
|
|
|
|
|
this.uploadFJ = {
|
|
|
|
|
|
// 是否显示弹出层
|
|
|
|
|
|
open: false,
|
|
|
|
|
|
// 附件上传
|
|
|
|
|
|
fileList: [],
|
|
|
|
|
|
// 附件上传
|
|
|
|
|
|
docDiscripList: []
|
|
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
goPage(row){
|
|
|
|
|
|
this.reset()
|
|
|
|
|
|
// 0 组织架构
|
|
|
|
|
|
if(this.vote.bkhdxType==='0'){
|
|
|
|
|
|
this.zzjgDetail(row)
|
|
|
|
|
|
}
|
|
|
|
|
|
// 1 职工
|
|
|
|
|
|
if(this.vote.bkhdxType==='1'){
|
|
|
|
|
|
this.zgDetail(row)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// 组织架构详情
|
|
|
|
|
|
zzjgDetail(row){
|
|
|
|
|
|
getDept(row.bkhdxId).then(response => {
|
|
|
|
|
|
this.detail = response.data;
|
|
|
|
|
|
if(this.detail.docs){
|
|
|
|
|
|
let arr = this.detail.docs.split(';');
|
|
|
|
|
|
arr.forEach( item => {
|
|
|
|
|
|
let arr1 = item.split(',');
|
|
|
|
|
|
this.uploadFJ.fileList.push({
|
|
|
|
|
|
name: arr1[0],
|
|
|
|
|
|
url: arr1[1]
|
|
|
|
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
if(this.detail.docDiscrip){
|
|
|
|
|
|
this.uploadFJ.docDiscripList = JSON.parse(this.detail.docDiscrip);
|
|
|
|
|
|
}else {
|
|
|
|
|
|
this.uploadFJ.docDiscripList=[{
|
|
|
|
|
|
title:'',
|
|
|
|
|
|
docDiscrip:'',
|
|
|
|
|
|
}]
|
|
|
|
|
|
}
|
|
|
|
|
|
this.uploadFJ.open = true;
|
|
|
|
|
|
this.uploadFJ.title = '组织架构详情';
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
// 职工详情
|
|
|
|
|
|
zgDetail(row){
|
|
|
|
|
|
getEmployee(row.bkhdxId).then(response => {
|
|
|
|
|
|
this.detail = response.data;
|
|
|
|
|
|
if(this.detail.docs){
|
|
|
|
|
|
let arr = this.detail.docs.split(';');
|
|
|
|
|
|
arr.forEach( item => {
|
|
|
|
|
|
let arr1 = item.split(',');
|
|
|
|
|
|
this.uploadFJ.fileList.push({
|
|
|
|
|
|
name: arr1[0],
|
|
|
|
|
|
url: arr1[1]
|
|
|
|
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
if(this.detail.docDiscrip){
|
|
|
|
|
|
this.uploadFJ.docDiscripList = JSON.parse(this.detail.docDiscrip);
|
|
|
|
|
|
}else {
|
|
|
|
|
|
this.uploadFJ.docDiscripList=[{
|
|
|
|
|
|
title:'',
|
|
|
|
|
|
docDiscrip:'',
|
|
|
|
|
|
}]
|
|
|
|
|
|
}
|
|
|
|
|
|
this.uploadFJ.open = true;
|
|
|
|
|
|
this.uploadFJ.title = '职工详情';
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
|
.app-container{
|
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
|
padding: 30px;
|
|
|
|
|
|
|
|
|
|
|
|
.title{
|
|
|
|
|
|
font-size: 24px;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.des{
|
|
|
|
|
|
padding: 10px;
|
|
|
|
|
|
color: #666666;
|
|
|
|
|
|
}
|
|
|
|
|
|
.time{
|
|
|
|
|
|
padding: 5px;
|
|
|
|
|
|
color: #af5e5e;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.tou_piao{
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
|
|
|
|
|
|
.tou_piao_item{
|
|
|
|
|
|
border: 1px solid #eee;
|
|
|
|
|
|
padding: 10px;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
|
|
|
|
|
|
|
._desc{
|
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
color: #666666;
|
|
|
|
|
|
margin: 10px 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.el-radio{
|
|
|
|
|
|
margin-top: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__body{
|
|
|
|
|
|
padding: 20px;
|
|
|
|
|
|
|
|
|
|
|
|
.el-card{
|
|
|
|
|
|
margin-top: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.yy_fj_list {
|
|
|
|
|
|
height: 36px;
|
|
|
|
|
|
line-height: 36px;
|
|
|
|
|
|
border-bottom: 1px solid #39CCCC;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|