This commit is contained in:
xiongchengqiang 2020-12-01 17:47:44 +08:00
parent 6c0aab6d87
commit 8ba490fb4d
2 changed files with 608 additions and 501 deletions

View File

@ -1,118 +1,182 @@
<template>
<div class='table'>
<div v-if="obj.recortModelDtos.length !== 0" class="table-list">
<div class="table-header">
<div class="table-left name">维度</div>
<div class="table-content-right-item" style="flex:1;">
<div class="table-header-flex names ">名称</div>
<div class="table-header-flex pre kaohe">考核标准</div>
<div class="table-header-flex jieguo" v-if="tableInfo.result || tableAuth.showResult">结果值</div>
<div class="table-header-flex quanzhomng" style="flex:none;">权重({{Math.round((obj.weight * 100)*1000)/1000}}%)</div>
<div class="table-header-flex pingfen" v-if="tableInfo.score || tableAuth.showScore">上级评分</div>
<div class="table-header-flex defen" style="flex:none;" v-if="tableInfo.score || tableAuth.showScore">得分</div>
<div class="table-header-flex pingfen" v-if="tableInfo.score || tableAuth.showScore">评分说明</div>
</div>
</div>
<div class='table'>
<div v-if="obj.recortModelDtos.length !== 0"
class="table-list">
<div class="table-header">
<div class="table-left name">维度</div>
<div class="table-content-right-item"
style="flex:1;">
<div class="table-header-flex names ">名称</div>
<div class="table-header-flex pre kaohe">考核标准</div>
<div class="table-header-flex jieguo"
v-if="tableInfo.result || tableAuth.showResult">结果值</div>
<div class="table-header-flex quanzhomng"
style="flex:none;">权重({{Math.round((obj.weight * 100)*1000)/1000}}%)</div>
<div class="table-header-flex pingfen"
v-if="tableInfo.score || tableAuth.showScore">上级评分</div>
<div class="table-header-flex defen"
style="flex:none;"
v-if="tableInfo.score || tableAuth.showScore">得分</div>
<div class="table-header-flex pingfen"
v-if="tableInfo.score || tableAuth.showScore">评分说明</div>
</div>
</div>
<div v-for="(item,index) in ((tableInfo.score || tableAuth.showScore)?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1))" :key="index" class="table-content">
<div class="table-content-left table-left name">
<div v-for="(i,indexs) in item.name" :key="indexs">
{{i}}
</div>
<div v-for="(item,index) in ((tableInfo.score || tableAuth.showScore)?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1))"
:key="index"
class="table-content">
<div class="table-content-left table-left name">
<div v-for="(i,indexs) in item.name"
:key="indexs">
{{i}}
</div>
</div>
<div class="table-content-right">
<div v-for="(child) in item.detailDtos"
:key="child.id"
class="table-content-right-item">
<div class="names">
<span> {{child.target || ''}}</span>
</div>
<div class="table-content-right">
<div v-for="(child) in item.detailDtos" :key="child.id" class="table-content-right-item">
<div class="names">
<span> {{child.target || ''}}</span>
</div>
<div class="kaohe pre">
<pre >
<div class="kaohe pre">
<pre>
{{child.keyResult || ''}}
</pre>
</div>
<div class='pre jieguo' v-if="tableInfo.result || tableAuth.showResult">
<el-input v-if="tableInfo.result" type="textarea" :rows="12" size="mini" placeholder="请输入内容" v-model="child.checkResult" clearable></el-input>
<pre v-else>{{child.checkResult || '--'}}</pre>
</div>
<div class="quanzhomng" style="flex:none;">
{{( Math.round((child.checkWeight * 100) * 1000) / 1000 )}}%
</div>
<div v-if="tableInfo.score || tableAuth.showScore" class="pingfen" >
<!-- gradeGroupId=== 1 下拉 -->
<el-select v-if="tableInfo.score && obj.gradeGroupId===1" style="width:115px;" size="mini" v-model="child.scoreDtos[child.scoreDtos.length-1].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" style="width:115px;" size="mini" placeholder="请输入评分值" v-model="child.scoreDtos[child.scoreDtos.length-1].acquireScore" clearable></el-input>
<span v-if="!tableInfo.score">{{handleScore(child.scoreDtos[child.scoreDtos.length-1].acquireScore)}}</span>
</div>
<div class="defen" style="flex:none;" v-if="tableInfo.score || tableAuth.showScore">
<span>{{child.scoreDtos[child.scoreDtos.length-1].acquireScore || '--'}}</span>
</div>
<div class='pre pingfen' v-if="tableInfo.score || tableAuth.showScore">
<el-input v-if="tableInfo.score" style="width:200px;" :rows="12" size="mini" type="textarea" placeholder="请输入内容" v-model="child.scoreComment" clearable></el-input>
<span v-else>{{child.scoreComment || '--'}}</span>
</div>
</div>
<div class='pre jieguo'
v-if="tableInfo.result || tableAuth.showResult">
<el-input v-if="tableInfo.result"
type="textarea"
:rows="12"
size="mini"
placeholder="请输入内容"
v-model="child.checkResult"
clearable></el-input>
<pre v-else>{{child.checkResult || '--'}}</pre>
</div>
<div class="quanzhomng"
style="flex:none;">
{{( Math.round((child.checkWeight * 100) * 1000) / 1000 )}}%
</div>
<div v-if="tableInfo.score || tableAuth.showScore"
class="pingfen">
<!-- gradeGroupId=== 1 下拉 -->
<el-select v-if="tableInfo.score && obj.gradeGroupId===1"
style="width:115px;"
size="mini"
v-model="child.scoreDtos[child.scoreDtos.length-1].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"
style="width:115px;"
size="mini"
placeholder="请输入评分值"
v-model="child.scoreDtos[child.scoreDtos.length-1].acquireScore"
clearable></el-input>
<span v-if="!tableInfo.score">{{handleScore(child.scoreDtos[child.scoreDtos.length-1].acquireScore)}}</span>
</div>
<div class="defen"
style="flex:none;"
v-if="tableInfo.score || tableAuth.showScore">
<span>{{child.scoreDtos[child.scoreDtos.length-1].acquireScore || '--'}}</span>
</div>
<div class='pre pingfen'
v-if="tableInfo.score || tableAuth.showScore">
<el-input v-if="tableInfo.score"
style="width:200px;"
:rows="12"
size="mini"
type="textarea"
placeholder="请输入内容"
v-model="child.scoreComment"
clearable></el-input>
<span v-else>{{child.scoreComment || '--'}}</span>
</div>
</div>
<div v-if="item.detailDtos.length ===0 && item.name !=='总分'" class="table-content-right-item">
<div class="names">
</div>
<div class="kaohe pre">
</div>
<div class='jieguo' v-if="tableInfo.result || tableAuth.showResult">
</div>
<div class="quanzhomng " style="flex:none;">
</div>
<div class='pingfen' v-if="tableInfo.score || tableAuth.showScore">
</div>
<div v-if="item.detailDtos.length ===0 && item.name !=='总分'"
class="table-content-right-item">
<div class="names">
</div>
<div class="kaohe pre">
</div>
<div class='jieguo'
v-if="tableInfo.result || tableAuth.showResult">
</div>
<div class="quanzhomng "
style="flex:none;">
</div>
<div class='pingfen'
v-if="tableInfo.score || tableAuth.showScore">
</div>
<div class="defen" style="flex:none;" v-if="tableInfo.score || tableAuth.showScore">
</div>
<div class="defen"
style="flex:none;"
v-if="tableInfo.score || tableAuth.showScore">
</div>
<div class='pingfen' v-if="tableInfo.score || tableAuth.showScore">
</div>
</div>
<div v-if="item.name==='总分'" class="table-content-right-item">
<div class="names">
</div>
<div class="kaohe pre">
</div>
<div class='jieguo' v-if="tableInfo.result || tableAuth.showResult">
</div>
<div class="quanzhomng pingfen" style="flex:none;">
</div>
<div class="pingfen" v-if="tableInfo.score || tableAuth.showScore">
{{score.scoreLevel}}
</div>
<div class="defen" style="flex:none;" v-if="tableInfo.score || tableAuth.showScore">
{{score.lastScore}}
</div>
<div class="pingfen" v-if="tableInfo.score || tableAuth.showScore">
</div>
</div>
</div>
<div class='pingfen'
v-if="tableInfo.score || tableAuth.showScore">
</div>
</div>
<div v-if="item.name==='总分'"
class="table-content-right-item">
<div class="names">
</div>
<div class="kaohe pre">
</div>
<div class='jieguo'
v-if="tableInfo.result || tableAuth.showResult">
</div>
<div class="quanzhomng pingfen"
style="flex:none;">
</div>
<div class="pingfen"
v-if="tableInfo.score || tableAuth.showScore">
{{score.scoreLevel}}
</div>
<div class="defen"
style="flex:none;"
v-if="tableInfo.score || tableAuth.showScore">
{{score.lastScore}}
</div>
<div class="pingfen"
v-if="tableInfo.score || tableAuth.showScore">
</div>
</div>
</div>
<div v-else class='nojixiao'>
<img src="./imgs/nojixiao.png" alt="">
<div class="commonFont">
未制定绩效目标暂无数据
</div>
</div>
<div v-if="tableInfo.result || tableInfo.score" class="table-bottom">
<div class="table-bottom-content">
<el-button size='small' @click="handleCancelResult" plain>取消</el-button>
<el-button size='small' :loading='loadingZan' @click="handleSaveDetail()" plain>暂存</el-button>
<el-button size='small' :loading='loadingTi' @click="handleGetNext" type="primary" >{{tableInfo.result?'提交结果值':'提交评分'}}</el-button>
</div>
</div>
</div>
</div>
<div v-else
class='nojixiao'>
<img src="./imgs/nojixiao.png"
alt="">
<div class="commonFont">
未制定绩效目标暂无数据
</div>
</div>
<div v-if="tableInfo.result || tableInfo.score"
class="table-bottom">
<div class="table-bottom-content">
<el-button size='small'
@click="handleCancelResult"
plain>取消</el-button>
<el-button size='small'
:loading='loadingZan'
@click="handleSaveDetail()"
plain>暂存</el-button>
<el-button size='small'
:loading='loadingTi'
@click="handleGetNext"
type="primary">{{tableInfo.result?'提交结果值':'提交评分'}}</el-button>
</div>
</div>
</div>
</template>
<script>
import { apiSaveDetail, apiGet375, apiSaveapproval } from '@/api/assessment'
@ -201,8 +265,8 @@ export default {
this.$message.error(res1.msg)
return
}
const obj = {status: 1, menuName: this.tableInfo.result ? '提交了结果值' : '提交了评分'}
const params = Object.assign({}, {resultRecordId: this.$route.query.id || this.resultRecordId || ''}, obj)
const obj = { status: 1, menuName: this.tableInfo.result ? '提交了结果值' : '提交了评分' }
const params = Object.assign({}, { resultRecordId: this.$route.query.id || this.resultRecordId || '' }, obj)
let res = await apiSaveapproval(params)
this.loadingTi = false
if (res.code !== 200) {
@ -215,7 +279,7 @@ export default {
history.go(0)
},
handleCancelResult () {
this.$emit('update:tableInfo', Object.assign({}, this.tableInfo, {result: false, score: false}))
this.$emit('update:tableInfo', Object.assign({}, this.tableInfo, { result: false, score: false }))
},
async handleGrt375 () {
let res = await apiGet375()
@ -243,27 +307,27 @@ export default {
}
</script>
<style lang='less' scoped>
.pingfen{
width: 120px ;
.center();
.pingfen {
width: 120px;
.center();
}
.names{
.names {
line-height: 20px;
width: 200px !important;
flex: none !important;
.center();
}
.jieguo{
.jieguo {
width: 260px !important;
flex: none !important;
.center()
.center();
}
.name{
.name {
.center();
flex: none !important;
width: 60px !important;
}
.kaohe{
.kaohe {
width: 260px !important;
display: block;
flex: 1 1 auto;
@ -271,200 +335,198 @@ export default {
align-items: center;
// flex: none;
}
.nojixiao{
.nojixiao {
text-align: center;
}
.listNone{
.listNone {
height: 100px;
text-align: center;
line-height: 100px;
border-bottom: 1px solid @borderColor;
}
.table-list{
.table-list {
overflow: auto;
color: #52575b;
font-size: 12px;
border: 1px solid @borderColor;
border-bottom: none;
border: 1px solid @borderColor;
border-bottom: none;
}
.table-header{
.table-header {
display: flex;
// justify-content: space-between;
// border: 1px solid @borderColor;
>div{
> div {
background: #f5f5f5;
// padding: 10px;
border-bottom: 1px solid @borderColor;;
border-right: 1px solid @borderColor;;
border-bottom: 1px solid @borderColor;
border-right: 1px solid @borderColor;
}
>div:last-child{
> div:last-child {
border-right: none;
}
&-flex{
&-flex {
// flex: 1;
.center();
}
}
.table-content{
.table-content {
display: flex;
justify-content: space-between;
>div{
> div {
padding: 10px;
border-right: 1px solid @borderColor;
border-right: 1px solid @borderColor;
}
>div:last-child{
> div:last-child {
border-right: none;
padding: 0px;
padding: 0px;
}
&-left{
&-left {
border-bottom: 1px solid @borderColor;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
>div{
> div {
.center();
}
}
&-right{
flex:1;
&-right {
flex: 1;
display: flex;
flex-direction: column;
// justify-content: space-between;
// align-items: center;
>div{
flex: 1 1 auto;
flex-shrink: 0;
// height: 100%;
border-bottom: 1px solid @borderColor;;
> div {
flex: 1 1 auto;
flex-shrink: 0;
// height: 100%;
border-bottom: 1px solid @borderColor;
}
>div:last-child{
> div:last-child {
// border-bottom: none;
}
&-item:hover{
background: #f5f5f5;
&-item:hover {
background: #f5f5f5;
}
&-item{
>div{
border-right: 1px solid @borderColor;
padding: 10px;
&-item {
> div {
border-right: 1px solid @borderColor;
padding: 10px;
}
>div:last-child{
> div:last-child {
border-right: none;
}
// flex: 1;
display: flex;
>div{
// flex: 1;
// .center();
}
> div {
// flex: 1;
// .center();
}
}
}
}
.table-left{
.table-left {
width: 60px;
text-align: center;
}
.defen{
width: 50px !important;
.center();
text-align: center;
.defen {
width: 50px !important;
.center();
text-align: center;
}
.quanzhomng{
width: 86px !important;
.center();
text-align: center;
}
.table{
position: relative;
&-bottoms{
width: 100%;
height: 60px;
z-index: 1000000;
bottom: 0;
left: 0;
background:transparent;
position: fixed;
display: flex;
// align-items: center;
justify-content: center;
&-contenct{
height: 40px;
display: flex;
background: #fff;
justify-content: space-between;
border-radius: 40px;
box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12);
&-left{
line-height: 40px;
font-size: 14px;
padding: 0 16px;
i{
margin:0 6px;
font-weight: 800;
}
cursor: pointer;
color: @fontBlue;
}
&-center{
.center();
font-size: 14px;
padding: 0 10px;
}
&-right{
line-height: 40px;
font-size: 14px;
padding: 0 16px;
i{
margin:0 6px;
font-weight: 800;
}
cursor: pointer;
color: @fontBlue;
}
}
}
.quanzhomng {
width: 86px !important;
.center();
text-align: center;
}
.table-bottom {
height: 60px;
position: fixed;
padding: 0 80px;
.table {
position: relative;
&-bottoms {
width: 100%;
background: #fff;
border-top: 1px solid @borderColor;
height: 60px;
z-index: 1000000;
bottom: 0;
left: 0;
&-content{
width: 1360px;
margin: 0 auto;
height: 100%;
background: transparent;
position: fixed;
display: flex;
// align-items: center;
justify-content: center;
&-contenct {
height: 40px;
display: flex;
align-items: center;
justify-content: flex-end;
background: #fff;
justify-content: space-between;
border-radius: 40px;
box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12),
0 1px 6px 0 rgba(0, 0, 0, 0.12);
&-left {
line-height: 40px;
font-size: 14px;
padding: 0 16px;
i {
margin: 0 6px;
font-weight: 800;
}
cursor: pointer;
color: @fontBlue;
}
&-center {
.center();
font-size: 14px;
padding: 0 10px;
}
&-right {
line-height: 40px;
font-size: 14px;
padding: 0 16px;
i {
margin: 0 6px;
font-weight: 800;
}
cursor: pointer;
color: @fontBlue;
}
}
}
}
.table-bottom {
height: 60px;
position: fixed;
padding: 0 80px;
width: 100%;
background: #fff;
border-top: 1px solid @borderColor;
bottom: 0;
left: 0;
&-content {
width: 1360px;
margin: 0 auto;
height: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
}
}
table {
margin-top: 15px;
width: 100%;
border: 1px solid #e9eaec;
border-collapse: collapse;
}
th {
background-color: #f8f8f9;
}
th,
td {
padding: 5px;
border: 1px solid #e9eaec;
text-align: center;
vertical-align: top;
line-height: 30px;
}
td {
}
table{
margin-top: 15px;
width: 100%;
border:1px solid #e9eaec;
border-collapse:collapse
}
th{
background-color: #f8f8f9;
}
th,td{
padding: 5px;
border: 1px solid #e9eaec;
text-align: center;
vertical-align: top;
line-height: 30px;
}
td{
}
</style>

View File

@ -1,119 +1,166 @@
<template>
<div class='table'>
<div v-if="obj.recortModelDtos.length !== 0" class="table-list commonFont">
<div class="table-header">
<div class="title table-left weidu">维度</div>
<div class="title table-header-flex name">名称</div>
<div class="title table-header-flex kaohe">考核标准</div>
<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>
<template v-if="obj.recortModelDtos.length>0 && obj.recortModelDtos[0].detailDtos && obj.recortModelDtos[0].detailDtos.length>0">
<!-- v-if="tableAuth.editScore" -->
<div class="title table-header-flex pingfen" v-for="k in handleGetScorlList(obj.recortModelDtos[0].detailDtos[0].scoreDtos)" >
<div class="pingfen-title">上级评分 - {{k.approvalName}} ( {{( Math.round((k.weight * 100) * 1000) / 1000 )}}%)</div>
<div class="pingfen-content">
<div class="pingfen-content-ping" >评分</div>
<div class="pingfen-content-defen" >得分</div>
<div class=" pingfen-content-shuoming" >评分说明</div>
<div class='table'>
<div v-if="obj.recortModelDtos.length !== 0"
class="table-list commonFont">
<div class="table-header">
<div class="title table-left weidu">维度</div>
<div class="title table-header-flex name">名称</div>
<div class="title table-header-flex kaohe">考核标准</div>
<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>
<template v-if="obj.recortModelDtos.length>0 && obj.recortModelDtos[0].detailDtos && obj.recortModelDtos[0].detailDtos.length>0">
<!-- v-if="tableAuth.editScore" -->
<div class="title table-header-flex pingfen"
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-content">
<div class="pingfen-content-ping">评分</div>
<div class="pingfen-content-defen">得分</div>
<div class=" pingfen-content-shuoming">评分说明</div>
</div>
</div>
</template>
</div>
<div class="table-weidu"
v-for="(item,index) in ((tableInfo.score || tableAuth.showScore)?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1))"
:key="index">
<!-- ((tableInfo.score || tableAuth.showScore) && tableAuth.editScore?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1)) -->
<div class="weidu">
<div v-for="(name,indexname) in item.name"
:key="indexname">
{{name}}
</div>
</div>
<div style="flex: 1 1 auto;"
class="table-right">
<div class="table-content"
v-for="(i,index2) in item.detailDtos"
:key="index2">
<div class="name">
{{i.target}}
</div>
<div class="kaohe pre">
<pre>
{{i.keyResult}}o7
</pre>
</div>
<div class="jieguo pre"
v-if="tableInfo.result || tableAuth.showResult">
<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"
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">{{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 class="table-weidu" v-for="(item,index) in ((tableInfo.score || tableAuth.showScore)?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1))" :key="index">
<!-- ((tableInfo.score || tableAuth.showScore) && tableAuth.editScore?obj.recortModelDtos:obj.recortModelDtos.slice(0,obj.recortModelDtos.length-1)) -->
<div class="weidu">
<div v-for="(name,indexname) in item.name" :key="indexname">
{{name}}
</div>
<div class="table-content"
v-if="item.detailDtos.length===0">
<div class="name">
--
</div>
<div style="flex: 1 1 auto;" class="table-right">
<div class="table-content" v-for="i in item.detailDtos">
<div class="name">
{{i.target}}
</div>
<div class="kaohe pre">
<pre>
{{i.keyResult}}o7
</pre>
</div>
<div class="jieguo pre" v-if="tableInfo.result || tableAuth.showResult">
<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 in handleGetScorlList(i.scoreDtos)" 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">{{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 class="table-content" v-if="item.detailDtos.length===0">
<div class="name">
--
</div>
<div class="kaohe">
--
</div>
<div class="jieguo" v-if="tableInfo.result || tableAuth.showResult">
--
</div>
<div class="quanzhong">
--
</div>
<template >
<div v-for="k in (scoreListForParams)" class="pingfen table-content-pingfen">
<div class="pingfen-content-ping">
{{k.Level}}
</div>
<div class="pingfen-content-defen">
{{k.Score}}
</div>
<div class="pingfen-content-shuoming">
--
</div>
</div>
</template>
</div>
<div class="kaohe">
--
</div>
</div>
</div>
<div v-else class='nojixiao'>
<img src="./imgs/nojixiao.png" alt="">
<div class="commonFont">
未制定绩效目标暂无数据
<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">
{{k.Level}}
</div>
<div class="pingfen-content-defen">
{{k.Score}}
</div>
<div class="pingfen-content-shuoming">
--
</div>
</div>
</template>
</div>
</div>
<div v-if="tableInfo.result || tableInfo.score" class="table-bottom">
<div class="table-bottom-content">
<el-button size='small' @click="handleCancelResult" plain>取消</el-button>
<el-button size='small' :loading='loadingZan' @click="handleSaveDetail()" plain>暂存</el-button>
<el-button size='small' :loading='loadingTi' @click="handleGetNext" type="primary" >{{tableInfo.result?'提交结果值':'提交评分'}}</el-button>
</div>
</div>
</div>
</div>
<div v-else
class='nojixiao'>
<img src="./imgs/nojixiao.png"
alt="">
<div class="commonFont">
未制定绩效目标暂无数据
</div>
</div>
<div v-if="tableInfo.result || tableInfo.score"
class="table-bottom">
<div class="table-bottom-content">
<el-button size='small'
@click="handleCancelResult"
plain>取消</el-button>
<el-button size='small'
:loading='loadingZan'
@click="handleSaveDetail()"
plain>暂存</el-button>
<el-button size='small'
:loading='loadingTi'
@click="handleGetNext"
type="primary">{{tableInfo.result?'提交结果值':'提交评分'}}</el-button>
</div>
</div>
</div>
</template>
<script>
import { apiSaveDetail, apiGet375, apiSaveapproval } from '@/api/assessment'
@ -231,8 +278,8 @@ export default {
this.loadingTi = false
return
}
const obj = {status: 1, menuName: this.tableInfo.result ? '提交了结果值' : '提交了评分'}
const params = Object.assign({}, {resultRecordId: this.$route.query.id || ''}, obj)
const obj = { status: 1, menuName: this.tableInfo.result ? '提交了结果值' : '提交了评分' }
const params = Object.assign({}, { resultRecordId: this.$route.query.id || '' }, obj)
let res = await apiSaveapproval(params)
this.loadingTi = false
if (res.code !== 200) {
@ -246,7 +293,7 @@ export default {
history.go(0)
},
handleCancelResult () {
this.$emit('update:tableInfo', Object.assign({}, this.tableInfo, {result: false, score: false}))
this.$emit('update:tableInfo', Object.assign({}, this.tableInfo, { result: false, score: false }))
},
async handleGrt375 () {
let res = await apiGet375()
@ -270,131 +317,129 @@ export default {
}
</script>
<style lang='less' scoped>
.title{
.title {
background: #f5f5f5;
border-bottom: 1px solid @borderColor;
border-bottom: 1px solid @borderColor;
}
.jieguo{
padding:10px !important;
width: 260px !important;
.jieguo {
padding: 10px !important;
width: 260px !important;
.center();
}
.name{
padding:10px !important;
width: 200px ;
.name {
padding: 10px !important;
width: 200px;
.center();
}
.kaohe{
width: 300px ;
.kaohe {
width: 300px;
flex: 1 1 auto;
padding:10px !important;
padding: 10px !important;
display: block;
.center();
pre{
white-space:pre-line;
pre {
white-space: pre-line;
word-wrap: break-word;
word-break: break-all;
}
}
.weidu{
flex: none ;
width: 60px ;
.weidu {
flex: none;
width: 60px;
.center();
flex-direction: column;
padding:10px !important;
padding: 10px !important;
border-left: 1px solid @borderColor;
border-right: 1px solid @borderColor;
border-bottom: 1px solid @borderColor;
>div{
border-bottom: 1px solid @borderColor;
> div {
text-align: center;
}
// .center();
}
.quanzhong{
width: 86px !important;
.center();
.quanzhong {
width: 86px !important;
.center();
}
.pingfen{
.pingfen {
display: flex;
padding: 0 !important;
border-right: 1px solid @borderColor !important;
border-right: 1px solid @borderColor !important;
flex-direction: column;
&-title{
padding:10px 0 !important;
&-title {
padding: 10px 0 !important;
text-align: center;
border-bottom: 1px solid @borderColor;
}
&-content{
&-content {
flex: 1;
align-items: center;
display: flex;
align-items: center;
justify-content: space-between;
>div{
border-right: 1px solid @borderColor;
padding:10px 0 !important;
> div {
border-right: 1px solid @borderColor;
padding: 10px 0 !important;
.center();
}
&-ping{
width: 120px ;
&-ping {
width: 120px;
height: 100%;
}
&-defen{
&-defen {
width: 50px !important;
height: 100%;
}
&-shuoming{
width: 120px ;
&-shuoming {
width: 120px;
padding: 10px;
border-right: none !important;
flex: 1;
}
}
}
.defen{
width: 50px;
.defen {
width: 50px;
}
.shuoming{
.shuoming {
width: 200px;
}
.nojixiao{
.nojixiao {
text-align: center;
}
.listNone{
.listNone {
height: 100px;
text-align: center;
line-height: 100px;
border-bottom: 1px solid @borderColor;
}
.table-list{
padding: 0 0 10px 0;
.table-list {
padding: 0 0 10px 0;
// border: 1px solid @borderColor;
// border-bottom: none;
overflow: auto;
overflow: auto;
}
.table-weidu{
.table-weidu {
display: flex;
font-size: 12px;
}
.table-header{
.table-header {
display: flex;
font-size: 12px;
flex-shrink: 0;
// justify-content: space-between;
// border: 1px solid @borderColor;
>div{
> div {
padding: 10px;
border-right: 1px solid @borderColor;
border-top: 1px solid @borderColor;
border-right: 1px solid @borderColor;
border-top: 1px solid @borderColor;
}
>div:last-child{
> div:last-child {
border-right: none;
}
&-flex{
flex-shrink: 0;
&-flex {
flex-shrink: 0;
// flex: 1;
// .center();
}
@ -454,126 +499,126 @@ width: 50px;
// }
// }
// }
.table-left{
.table-left {
width: 60px;
text-align: center;
}
.quanzhomng{
width: 100px !important;
text-align: center;
}
.table-content:hover{
background: rgb(247, 247, 247);
}
.table-right{
.quanzhomng {
width: 100px !important;
text-align: center;
}
.table-content:hover {
background: rgb(247, 247, 247);
}
.table-right {
display: flex;
flex-direction: column;
}
.table-content{
.table-content {
flex: 1 1 auto;
display: flex;
>div{
> div {
border-right: 1px solid @borderColor;
border-bottom: 1px solid @borderColor;
padding: 10px 0;
}
&-pingfen{
&-pingfen {
display: flex;
flex-direction: row;
align-items: center;
>div{
> div {
text-align: center;
border-right: 1px solid @borderColor;
.center();
}
}
}
.table{
position: relative;
&-bottoms{
width: 100%;
height: 60px;
z-index: 1000000;
bottom: 0;
left: 0;
background:transparent;
position: fixed;
display: flex;
// align-items: center;
justify-content: center;
&-contenct{
height: 40px;
display: flex;
background: #fff;
justify-content: space-between;
border-radius: 40px;
box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12);
&-left{
line-height: 40px;
font-size: 14px;
padding: 0 16px;
i{
margin:0 6px;
font-weight: 800;
}
cursor: pointer;
color: @fontBlue;
}
&-center{
.center();
font-size: 14px;
padding: 0 10px;
}
&-right{
line-height: 40px;
font-size: 14px;
padding: 0 16px;
i{
margin:0 6px;
font-weight: 800;
}
cursor: pointer;
color: @fontBlue;
}
}
}
}
.table-bottom {
height: 60px;
position: fixed;
padding: 0 80px;
.table {
position: relative;
&-bottoms {
width: 100%;
background: #fff;
border-top: 1px solid @borderColor;
height: 60px;
z-index: 1000000;
bottom: 0;
left: 0;
&-content{
width: 1360px;
margin: 0 auto;
height: 100%;
background: transparent;
position: fixed;
display: flex;
// align-items: center;
justify-content: center;
&-contenct {
height: 40px;
display: flex;
align-items: center;
justify-content: flex-end;
background: #fff;
justify-content: space-between;
border-radius: 40px;
box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12),
0 1px 6px 0 rgba(0, 0, 0, 0.12);
&-left {
line-height: 40px;
font-size: 14px;
padding: 0 16px;
i {
margin: 0 6px;
font-weight: 800;
}
cursor: pointer;
color: @fontBlue;
}
&-center {
.center();
font-size: 14px;
padding: 0 10px;
}
&-right {
line-height: 40px;
font-size: 14px;
padding: 0 16px;
i {
margin: 0 6px;
font-weight: 800;
}
cursor: pointer;
color: @fontBlue;
}
}
}
}
.table-bottom {
height: 60px;
position: fixed;
padding: 0 80px;
width: 100%;
background: #fff;
border-top: 1px solid @borderColor;
bottom: 0;
left: 0;
&-content {
width: 1360px;
margin: 0 auto;
height: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
}
}
table {
margin-top: 15px;
width: 100%;
border: 1px solid #e9eaec;
border-collapse: collapse;
}
th {
background-color: #f8f8f9;
}
th,
td {
padding: 5px;
border: 1px solid #e9eaec;
text-align: center;
vertical-align: top;
line-height: 30px;
}
td {
}
table{
margin-top: 15px;
width: 100%;
border:1px solid #e9eaec;
border-collapse:collapse
}
th{
background-color: #f8f8f9;
}
th,td{
padding: 5px;
border: 1px solid #e9eaec;
text-align: center;
vertical-align: top;
line-height: 30px;
}
td{
}
</style>