This commit is contained in:
zhujida 2020-12-22 18:16:31 +08:00
parent 41c1e31718
commit 7ed758d90a

View File

@ -1,20 +1,26 @@
<template> <template>
<div class='table'> <div class='table'>
<div v-if="obj.recortModelDtos.length !== 0" <div
class="table-list commonFont"> v-if="obj.recortModelDtos.length !== 0"
class="table-list commonFont"
>
<div class="table-header"> <div class="table-header">
<div class="title table-left weidu">维度</div> <div class="title table-left weidu">维度</div>
<div class="title table-header-flex name">名称</div> <div class="title table-header-flex name">名称</div>
<div class="title table-header-flex jindu">任务</div> <div class="title table-header-flex jindu">任务</div>
<div class="title table-header-flex kaohe">考核标准</div> <div class="title table-header-flex kaohe">考核标准</div>
<div class="title table-header-flex jieguo" <div
v-if="tableInfo.result || tableAuth.showResult">结果值</div> class="title table-header-flex jieguo"
v-if="tableInfo.result || tableAuth.showResult"
>结果值</div>
<div class="title table-header-flex quanzhong">权重({{Math.round((obj.weight * 100)*1000)/1000}}%)</div> <div class="title table-header-flex quanzhong">权重({{Math.round((obj.weight * 100)*1000)/1000}}%)</div>
<template v-if="obj.recortModelDtos.length>0 && obj.recortModelDtos[0].detailDtos && obj.recortModelDtos[0].detailDtos.length>0"> <template v-if="obj.recortModelDtos.length>0 && obj.recortModelDtos[0].detailDtos && obj.recortModelDtos[0].detailDtos.length>0">
<!-- v-if="tableAuth.editScore" --> <!-- v-if="tableAuth.editScore" -->
<div class="title table-header-flex pingfen" <div
v-for="(k,index1) in handleGetScorlList(obj.recortModelDtos[0].detailDtos[0].scoreDtos)" class="title table-header-flex pingfen"
:key="index1"> v-for="(k,index1) in handleGetScorlList(obj.recortModelDtos[0].detailDtos[0].scoreDtos)"
:key="index1"
>
<div class="pingfen-title">上级评分 - {{k.approvalName}} ( {{( Math.round((k.weight * 100) * 1000) / 1000 )}}%)</div> <div class="pingfen-title">上级评分 - {{k.approvalName}} ( {{( Math.round((k.weight * 100) * 1000) / 1000 )}}%)</div>
<div class="pingfen-content"> <div class="pingfen-content">
<div class="pingfen-content-ping">评分</div> <div class="pingfen-content-ping">评分</div>
@ -23,185 +29,247 @@
</div> </div>
</div> </div>
</template> </template>
<div class="title table-header-flex kaohejieguo" v-if="auth.showAllScore">考核结果</div> <div
<div class="title table-header-flex jixiaodengji" v-if="auth.showAllScore">绩效等级</div> class="title table-header-flex kaohejieguo"
v-if="auth.showAllScore"
>考核结果</div>
<div
class="title table-header-flex jixiaodengji"
v-if="auth.showAllScore"
>绩效等级</div>
</div> </div>
<div class="tableRight"> <div class="tableRight">
<div style="flex:1 0 auto;"> <div style="flex:1 0 auto;">
<div class="table-weidu" <div
v-for="(item,index) in ((tableInfo.score || tableAuth.showScore)?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1))" class="table-weidu"
:key="index"> v-for="(item,index) in ((tableInfo.score || tableAuth.showScore)?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1))"
<!-- ((tableInfo.score || tableAuth.showScore) && tableAuth.editScore?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1)) --> :key="index"
<div class="weidu"> >
<div v-for="(name,indexname) in item.name" <!-- ((tableInfo.score || tableAuth.showScore) && tableAuth.editScore?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1)) -->
:key="indexname"> <div class="weidu">
{{name}} <div
</div> v-for="(name,indexname) in item.name"
</div> :key="indexname"
<div style="flex: 1 1 auto;" >
class="table-right"> {{name}}
<div class="table-content" </div>
v-for="(i,index2) in item.detailDtos"
:key="index2">
<div class="name pre"
>
<pre>{{i.target}}</pre>
</div> </div>
<div class="jindu"> <div
<el-progress v-if='i.taskDtos.length !== 0' type="circle" style="flex: 1 1 auto;"
:width='50' class="table-right"
:stroke-width='4' >
:percentage="Math.round((i.processRate * 100) * 1000) / 1000 "></el-progress> <div
<el-button v-if='i.taskDtos.length !== 0' type="text" class="table-content"
@click="handleLookProcess(i.id)" v-for="(i,index2) in item.detailDtos"
size="mini"> :key="index2"
查看任务({{i.taskDtos.length || 0}}) >
</el-button> <div class="name pre">
<el-button v-if='i.taskDtos.length === 0' type="text" <pre>{{i.target}}</pre>
@click="handleLookProcess(i.id)" </div>
size="mini"> <div class="jindu">
暂无任务<br/>去添加 <el-progress
</el-button> v-if='i.taskDtos.length !== 0'
type="circle"
:width='50'
:stroke-width='4'
:percentage="Math.round((i.processRate * 100) * 1000) / 1000 "
></el-progress>
<el-button
v-if='i.taskDtos.length !== 0'
type="text"
@click="handleLookProcess(i.id)"
size="mini"
>
查看任务({{i.taskDtos.length || 0}})
</el-button>
<el-button
v-if='i.taskDtos.length === 0'
type="text"
@click="handleLookProcess(i.id)"
size="mini"
>
暂无任务<br />去添加
</el-button>
</div> </div>
<div class="kaohe pre" style="justify-content: flex-start;"> <div
<pre> class="kaohe pre"
style="justify-content: flex-start;"
>
<pre>
{{i.keyResult}} {{i.keyResult}}
</pre> </pre>
</div> </div>
<div class="jieguo pre" <div
v-if="tableInfo.result || tableAuth.showResult"> class="jieguo pre"
<el-input v-if="tableInfo.result" v-if="tableInfo.result || tableAuth.showResult"
type="textarea" >
:rows="12" <el-input
v-if="tableInfo.result"
type="textarea"
:rows="12"
size="mini"
placeholder="请输入内容"
v-model="i.checkResult"
clearable
></el-input>
<pre v-else>{{i.checkResult || '--'}}</pre>
</div>
<div class="quanzhong">
{{( Math.round((i.checkWeight * 100) * 1000) / 1000 )}}%
</div>
<template>
<div
v-for="(dto,index3) in handleGetScorlList(i.scoreDtos)"
:key="index3"
class="pingfen table-content-pingfen"
>
<div class="pingfen-content-ping">
<el-select
v-if="tableInfo.score && obj.gradeGroupId===1 && dto.approvalId ===userInfo.userId"
style="width:115px;"
size="mini" size="mini"
v-model="dto.acquireScore"
>
<el-option
v-for="item in scoreList"
:key="item.id"
:label="item.name"
:value="item.score"
>
</el-option>
</el-select>
<el-input
v-if="tableInfo.score && obj.gradeGroupId===2 && dto.approvalId ===userInfo.userId"
style="width:115px;"
size="mini"
placeholder="请输入评分值"
v-model="dto.acquireScore"
clearable
></el-input>
<span v-if="!tableInfo.score || dto.approvalId !== userInfo.userId">{{handleScore(dto.acquireScore)}}</span>
</div>
<div class="pingfen-content-defen">
{{dto.acquireScore}}
</div>
<div class="pingfen-content-shuoming">
<el-input
v-if="tableInfo.score && dto.approvalId ===userInfo.userId"
style="width:200px;"
:rows="4"
size="mini"
type="textarea"
placeholder="请输入内容" placeholder="请输入内容"
v-model="i.checkResult" v-model="dto.scoreComment"
clearable></el-input> clearable
<pre v-else>{{i.checkResult || '--'}}</pre> ></el-input>
</div> <span v-else>{{dto.scoreComment || '--'}}</span>
<div class="quanzhong"> </div>
{{( Math.round((i.checkWeight * 100) * 1000) / 1000 )}}% </div>
</div> </template>
<template>
<div v-for="(dto,index3) in handleGetScorlList(i.scoreDtos)"
:key="index3"
class="pingfen table-content-pingfen">
<div class="pingfen-content-ping">
<el-select v-if="tableInfo.score && obj.gradeGroupId===1 && dto.approvalId ===userInfo.userId"
style="width:115px;"
size="mini"
v-model="dto.acquireScore">
<el-option v-for="item in scoreList"
:key="item.id"
:label="item.name"
:value="item.score">
</el-option>
</el-select>
<el-input v-if="tableInfo.score && obj.gradeGroupId===2 && dto.approvalId ===userInfo.userId"
style="width:115px;"
size="mini"
placeholder="请输入评分值"
v-model="dto.acquireScore"
clearable></el-input>
<span v-if="!tableInfo.score || dto.approvalId !== userInfo.userId">{{handleScore(dto.acquireScore)}}</span>
</div>
<div class="pingfen-content-defen">
{{dto.acquireScore}}
</div>
<div class="pingfen-content-shuoming">
<el-input v-if="tableInfo.score && dto.approvalId ===userInfo.userId"
style="width:200px;"
:rows="4"
size="mini"
type="textarea"
placeholder="请输入内容"
v-model="dto.scoreComment"
clearable></el-input>
<span v-else>{{dto.scoreComment || '--'}}</span>
</div>
</div>
</template>
</div> </div>
<div class="table-content" <div
v-if="item.detailDtos.length===0"> class="table-content"
<div class="name"> v-if="item.detailDtos.length===0"
-- >
</div> <div class="name">
<div class="jindu">
暂无任务
</div>
<div class="kaohe">
--
</div>
<div class="jieguo"
v-if="tableInfo.result || tableAuth.showResult">
--
</div>
<div class="quanzhong">
--
</div>
<template>
<div v-for="(k,index4) in (scoreListForParams)"
:key="index4"
class="pingfen table-content-pingfen">
<div class="pingfen-content-ping">
{{handleGetDengJi(k.ScoreSimple)}}
</div>
<div class="pingfen-content-defen">
{{k.ScoreSimple}}
</div>
<div class="pingfen-content-shuoming">
-- --
</div> </div>
</div> <div class="jindu">
</template> 暂无任务
</div>
<div class="kaohe">
--
</div>
<div
class="jieguo"
v-if="tableInfo.result || tableAuth.showResult"
>
--
</div>
<div class="quanzhong">
--
</div>
<template>
<div
v-for="(k,index4) in (scoreListForParams)"
:key="index4"
class="pingfen table-content-pingfen"
>
<div class="pingfen-content-ping">
{{handleGetDengJi(k.ScoreSimple)}}
</div>
<div class="pingfen-content-defen">
{{k.ScoreSimple}}
</div>
<div class="pingfen-content-shuoming">
--
</div>
</div>
</template>
</div>
</div>
</div> </div>
</div> </div>
</div> <div
</div> v-if="auth.showAllScore"
<div v-if="auth.showAllScore" style='display:flex;'> style='display:flex;'
>
<div class="item kaohejieguo"> <div class="item kaohejieguo">
{{handleGetAllScore(scoreListForParams).score}} {{handleGetAllScore(scoreListForParams).score}}
</div> </div>
<div class="item jixiaodengji"> <div class="item jixiaodengji">
{{handleGetAllScore(scoreListForParams).a}} {{handleGetAllScore(scoreListForParams).a}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div v-else <div
class='nojixiao'> v-else
<img src="./imgs/nojixiao.png" class='nojixiao'
alt=""> >
<img
src="./imgs/nojixiao.png"
alt=""
>
<div class="commonFont"> <div class="commonFont">
未制定绩效目标暂无数据 未制定绩效目标暂无数据
</div> </div>
</div> </div>
<div v-if="tableInfo.result || tableInfo.score" <div
class="table-bottom"> v-if="tableInfo.result || tableInfo.score"
class="table-bottom"
>
<div class="table-bottom-content"> <div class="table-bottom-content">
<el-button size='small' <el-button
@click="handleCancelResult" size='small'
plain>取消</el-button> @click="handleCancelResult"
<el-button size='small' plain
:loading='loadingZan' >取消</el-button>
@click="handleSaveDetail()" <el-button
plain>暂存</el-button> size='small'
<el-button size='small' :loading='loadingZan'
:loading='loadingTi' @click="handleSaveDetail()"
@click="handleGetNext" plain
type="primary">{{tableInfo.result?'提交结果值':'提交评分'}}</el-button> >暂存</el-button>
<el-button
size='small'
:loading='loadingTi'
@click="handleGetNext"
type="primary"
>{{tableInfo.result?'提交结果值':'提交评分'}}</el-button>
</div> </div>
</div> </div>
<!-- <div v-if="scoreListForParams.length>0" <!-- <div v-if="scoreListForParams.length>0"
class="commonFont" class="commonFont"
style="font-size:12px;margin:10px 0;">{{handleGetAllScore(scoreListForParams)}}</div> --> style="font-size:12px;margin:10px 0;">{{handleGetAllScore(scoreListForParams)}}</div> -->
<process v-if="!_.isEmpty(taskInfo)" <process
:taskObj='taskInfo' v-if="!_.isEmpty(taskInfo)"
:drawer.sync='drawer' /> :taskObj='taskInfo'
:drawer.sync='drawer'
/>
</div> </div>
</template> </template>
<script> <script>
@ -358,9 +426,10 @@ export default {
return this.scoreList.filter(i => i.score === item).length > 0 ? this.scoreList.filter(i => i.score === item)[0].name : 0 return this.scoreList.filter(i => i.score === item).length > 0 ? this.scoreList.filter(i => i.score === item)[0].name : 0
}, },
async handleGetNext () { async handleGetNext () {
console.log(this.obj)
this.loadingTi = true this.loadingTi = true
const obj = { status: 1, menuName: this.tableInfo.result ? '提交了结果值' : '提交了评分' } const obj = { status: 1, menuName: this.tableInfo.result ? '提交了结果值' : '提交了评分' }
const params = Object.assign({}, { resultRecordId: this.$route.query.id || '' }, obj) const params = Object.assign({}, { resultRecordId: this.obj.id || '' }, obj)
if (!this.tableInfo.result) { if (!this.tableInfo.result) {
let isScore = true let isScore = true
this.obj.recortModelDtos.map(i => { this.obj.recortModelDtos.map(i => {
@ -410,7 +479,7 @@ export default {
if (res.code !== 200) return if (res.code !== 200) return
this.scoreList = res.data this.scoreList = res.data
}, },
async handleSaveDetail (params = Object.assign({}, this.obj, this.score, {save: 1})) { async handleSaveDetail (params = Object.assign({}, this.obj, this.score, { save: 1 })) {
this.loadingZan = true this.loadingZan = true
let res = await apiSaveDetail(params) let res = await apiSaveDetail(params)
this.loadingZan = false this.loadingZan = false
@ -427,21 +496,21 @@ export default {
} }
</script> </script>
<style lang='less' scoped> <style lang='less' scoped>
.item{ .item {
border-right: 1px solid @borderColor; border-right: 1px solid @borderColor;
border-bottom: 1px solid @borderColor; border-bottom: 1px solid @borderColor;
} }
.tableRight{ .tableRight {
display: flex; display: flex;
} }
.kaohejieguo{ .kaohejieguo {
width: 100px; width: 100px;
.center(); .center();
font-size:10px; font-size: 10px;
} }
.jixiaodengji{ .jixiaodengji {
width: 100px; width: 100px;
font-size:10px; font-size: 10px;
.center(); .center();
} }
.title { .title {