优化
This commit is contained in:
parent
6224b59252
commit
a8b089968b
@ -1,545 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class='table'>
|
|
||||||
{{scoreListForParams}}
|
|
||||||
<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" >结果值</div>
|
|
||||||
<div class="title table-header-flex quanzhong" >权重({{Math.round((obj.weight * 100)*1000)/1000}}%)</div>
|
|
||||||
<template >
|
|
||||||
<!-- v-if="tableAuth.editScore" -->
|
|
||||||
<div class="title table-header-flex pingfen" v-for="k in 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>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<div class="table-weidu" v-for="(item,index) in obj.recortModelDtos" :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>
|
|
||||||
<div class="table-content" v-for="i in item.detailDtos">
|
|
||||||
<div class="name">
|
|
||||||
{{i.target}}
|
|
||||||
</div>
|
|
||||||
<div class="kaohe pre">
|
|
||||||
<pre>
|
|
||||||
{{i.keyResult}}
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
<div class="jieguo pre">
|
|
||||||
<pre>
|
|
||||||
{{i.checkResult}}
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
<div class="quanzhong">
|
|
||||||
{{( Math.round((i.checkWeight * 100) * 1000) / 1000 )}}%
|
|
||||||
</div>
|
|
||||||
<template >
|
|
||||||
<div v-for="dto in i.scoreDtos" class="pingfen table-content-pingfen">
|
|
||||||
<div class="pingfen-content-ping">
|
|
||||||
{{dto.acquireScore}}
|
|
||||||
</div>
|
|
||||||
<div class="pingfen-content-defen">
|
|
||||||
{{dto.acquireScore}}
|
|
||||||
</div>
|
|
||||||
<div class="pingfen-content-shuoming">
|
|
||||||
{{dto.scoreComment || '--'}}
|
|
||||||
</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">
|
|
||||||
--
|
|
||||||
</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">
|
|
||||||
22
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</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'
|
|
||||||
export default {
|
|
||||||
name: 'columnsTbale',
|
|
||||||
props: {
|
|
||||||
obj: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {
|
|
||||||
recortModelDtos: []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tableInfo: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {
|
|
||||||
result: false,
|
|
||||||
score: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tableAuth: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
loadingTi: false,
|
|
||||||
loadingZan: false,
|
|
||||||
input: '',
|
|
||||||
scoreList: []
|
|
||||||
// score: {
|
|
||||||
// lastScore: '',
|
|
||||||
// scoreLevel: ''
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
scoreListForParams () {
|
|
||||||
return this.obj.recortModelDtos[0].detailDtos[0].scoreDtos.map((i, index) => {
|
|
||||||
let result = 0
|
|
||||||
this.obj.recortModelDtos.map(j => {
|
|
||||||
j.detailDtos.map(k => {
|
|
||||||
let str = k.scoreDtos[index].calculate.replace(/{\w+}/g, (l) => {
|
|
||||||
l = l.replace(/{|}/g, '')
|
|
||||||
return k[l]
|
|
||||||
})
|
|
||||||
result += eval(str)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
const arr = this.scoreList.filter(i => i.minScore <= result && i.maxScore > result)
|
|
||||||
return {
|
|
||||||
Score: result.toFixed(3),
|
|
||||||
Level: arr.length > 0 ? arr[0].name : ''
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
score () {
|
|
||||||
const result = this.obj.recortModelDtos.reduce((result, i) => {
|
|
||||||
i.detailDtos.map(j => {
|
|
||||||
j.scoreDtos.map(k => {
|
|
||||||
const str = j.calculate.replace(/{\w+}/g, (i) => {
|
|
||||||
i = i.replace(/{|}/g, '')
|
|
||||||
return k[i]
|
|
||||||
})
|
|
||||||
let a = eval(str)
|
|
||||||
result += a
|
|
||||||
})
|
|
||||||
})
|
|
||||||
return result
|
|
||||||
}, 0)
|
|
||||||
const arr = this.scoreList.filter(i => i.minScore <= result && i.maxScore > result)
|
|
||||||
return {
|
|
||||||
lastScore: result.toFixed(3),
|
|
||||||
scoreLevel: arr.length > 0 ? arr[0].name : ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.handleGrt375()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
handleScore (item) {
|
|
||||||
return this.scoreList.filter(i => i.score === item).length > 0 ? this.scoreList.filter(i => i.score === item)[0].name : 0
|
|
||||||
},
|
|
||||||
async handleGetNext () {
|
|
||||||
this.loadingTi = true
|
|
||||||
let res1 = await apiSaveDetail(Object.assign({}, this.obj, this.score))
|
|
||||||
if (res1.code !== 200) {
|
|
||||||
this.$message.error(res1.msg)
|
|
||||||
this.loadingTi = false
|
|
||||||
return
|
|
||||||
}
|
|
||||||
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) {
|
|
||||||
this.$message.error(res.msg)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$message({
|
|
||||||
message: res.msg,
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
history.go(0)
|
|
||||||
},
|
|
||||||
handleCancelResult () {
|
|
||||||
this.$emit('update:tableInfo', Object.assign({}, this.tableInfo, {result: false, score: false}))
|
|
||||||
},
|
|
||||||
async handleGrt375 () {
|
|
||||||
let res = await apiGet375()
|
|
||||||
if (res.code !== 200) return
|
|
||||||
this.scoreList = res.data
|
|
||||||
},
|
|
||||||
async handleSaveDetail (params = Object.assign({}, this.obj, this.score)) {
|
|
||||||
this.loadingZan = true
|
|
||||||
let res = await apiSaveDetail(params)
|
|
||||||
this.loadingZan = false
|
|
||||||
if (res.code !== 200) {
|
|
||||||
this.$message.error(res.msg)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$message({
|
|
||||||
message: res.msg,
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang='less' scoped>
|
|
||||||
.title{
|
|
||||||
background: #f5f5f5;
|
|
||||||
border-bottom: 1px solid @borderColor;
|
|
||||||
}
|
|
||||||
.jieguo{
|
|
||||||
padding:10px !important;
|
|
||||||
width: 300px ;
|
|
||||||
.center();
|
|
||||||
}
|
|
||||||
.name{
|
|
||||||
padding:10px !important;
|
|
||||||
width: 300px ;
|
|
||||||
.center();
|
|
||||||
}
|
|
||||||
.kaohe{
|
|
||||||
width: 300px ;
|
|
||||||
padding:10px !important;
|
|
||||||
display: block;
|
|
||||||
.center();
|
|
||||||
pre{
|
|
||||||
white-space:pre-line;
|
|
||||||
word-wrap: break-word;
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.weidu{
|
|
||||||
flex: none ;
|
|
||||||
width: 60px ;
|
|
||||||
.center();
|
|
||||||
flex-direction: column;
|
|
||||||
padding:10px !important;
|
|
||||||
border-left: 1px solid @borderColor;
|
|
||||||
border-right: 1px solid @borderColor;
|
|
||||||
border-bottom: 1px solid @borderColor;
|
|
||||||
>div{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
// .center();
|
|
||||||
}
|
|
||||||
.quanzhong{
|
|
||||||
width: 130px ;
|
|
||||||
.center();
|
|
||||||
}
|
|
||||||
.pingfen{
|
|
||||||
width: 500px;
|
|
||||||
display: flex;
|
|
||||||
padding: 0 !important;
|
|
||||||
border-right: 1px solid @borderColor !important;
|
|
||||||
flex-direction: column;
|
|
||||||
&-title{
|
|
||||||
padding:10px 0 !important;
|
|
||||||
text-align: center;
|
|
||||||
border-bottom: 1px solid @borderColor;
|
|
||||||
|
|
||||||
}
|
|
||||||
&-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;
|
|
||||||
.center();
|
|
||||||
}
|
|
||||||
&-ping{
|
|
||||||
width: 180px;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
&-defen{
|
|
||||||
width: 60px;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
&-shuoming{
|
|
||||||
border-right: none !important;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.defen{
|
|
||||||
width: 50px;
|
|
||||||
}
|
|
||||||
.shuoming{
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nojixiao{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.listNone{
|
|
||||||
height: 100px;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 100px;
|
|
||||||
border-bottom: 1px solid @borderColor;
|
|
||||||
}
|
|
||||||
.table-list{
|
|
||||||
padding: 0 0 10px 0;
|
|
||||||
// border: 1px solid @borderColor;
|
|
||||||
// border-bottom: none;
|
|
||||||
overflow: auto;
|
|
||||||
|
|
||||||
}
|
|
||||||
.table-weidu{
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.table-header{
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
flex-shrink: 0;
|
|
||||||
// justify-content: space-between;
|
|
||||||
// border: 1px solid @borderColor;
|
|
||||||
>div{
|
|
||||||
padding: 10px;
|
|
||||||
border-right: 1px solid @borderColor;
|
|
||||||
border-top: 1px solid @borderColor;
|
|
||||||
}
|
|
||||||
>div:last-child{
|
|
||||||
border-right: none;
|
|
||||||
}
|
|
||||||
&-flex{
|
|
||||||
flex-shrink: 0;
|
|
||||||
// flex: 1;
|
|
||||||
// .center();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// .table-content{
|
|
||||||
// display: flex;
|
|
||||||
// justify-content: space-between;
|
|
||||||
// >div{
|
|
||||||
// padding: 10px;
|
|
||||||
// border-right: 1px solid @borderColor;
|
|
||||||
// }
|
|
||||||
// >div:last-child{
|
|
||||||
// border-right: none;
|
|
||||||
// padding: 0px;
|
|
||||||
// }
|
|
||||||
// &-left{
|
|
||||||
// border-bottom: 1px solid @borderColor;
|
|
||||||
// display: flex;
|
|
||||||
// flex-direction: column;
|
|
||||||
// align-items: center;
|
|
||||||
// justify-content: center;
|
|
||||||
// >div{
|
|
||||||
// .center();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// &-right{
|
|
||||||
// flex:1;
|
|
||||||
// display: flex;
|
|
||||||
// flex-direction: column;
|
|
||||||
// // justify-content: space-between;
|
|
||||||
// // align-items: center;
|
|
||||||
// >div{
|
|
||||||
// flex: 1;
|
|
||||||
// border-bottom: 1px solid @borderColor;;
|
|
||||||
// }
|
|
||||||
// >div:last-child{
|
|
||||||
// // border-bottom: none;
|
|
||||||
// }
|
|
||||||
// &-item:hover{
|
|
||||||
// background: #f5f5f5;
|
|
||||||
// }
|
|
||||||
// &-item{
|
|
||||||
|
|
||||||
// >div{
|
|
||||||
// border-right: 1px solid @borderColor;
|
|
||||||
// padding: 10px;
|
|
||||||
// }
|
|
||||||
// >div:last-child{
|
|
||||||
// border-right: none;
|
|
||||||
// }
|
|
||||||
// // flex: 1;
|
|
||||||
// display: flex;
|
|
||||||
// >div{
|
|
||||||
// flex: 1;
|
|
||||||
// // .center();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
.table-left{
|
|
||||||
width: 60px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.quanzhomng{
|
|
||||||
width: 100px !important;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.table-content:hover{
|
|
||||||
background: rgb(247, 247, 247);
|
|
||||||
}
|
|
||||||
.table-content{
|
|
||||||
display: flex;
|
|
||||||
height: 100%;
|
|
||||||
>div{
|
|
||||||
flex-shrink: 0;
|
|
||||||
border-right: 1px solid @borderColor;
|
|
||||||
border-bottom: 1px solid @borderColor;
|
|
||||||
padding: 10px 0;
|
|
||||||
}
|
|
||||||
&-pingfen{
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
align-items: center;
|
|
||||||
>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;
|
|
||||||
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{
|
|
||||||
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
Loading…
x
Reference in New Issue
Block a user