2020-11-02 17:19:29 +08:00

339 lines
9.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- -->
<template>
<div class="performance">
<SmallNav />
<div class="performance-content boderAndRadius">
<div class="performance-content-title">
<InfoHeader :obj="{
name:obj.currentApprovalStaffName,
departmentName:obj.departmentName
}" />
<div class="performance-content-title-right">
<UseButton :formList='formList' :tableInfo.sync='tableInfo'/>
</div>
</div>
<div class="performance-content-center">
<div
class="performance-content-center-item commonFont"
:class="{
active:i.isActive,
right:true,
left:index !==0
}"
v-for="(i,index) in formList.flowRecordList"
:key="index"
>
<el-tooltip
v-if="i.flowName !== '执行中'"
class="item"
effect="dark"
:content="(index >= (formList.flowRecordList.length-1))?i.flowName:i.flowName +' : '+i.staffName"
placement="top"
>
<div>
{{index+1}}.{{i.flowName}} <span v-if="index !== (formList.flowRecordList.length-1)">:{{i.staffName}}
<i
v-if="i.isGou && !i.isActive"
style="color:#3ba1ff;margin:0 0 0 4px;font-weight:800;"
class="el-icon-check"
></i></span>
<i
style="cursor: pointer;"
@click="handleRight(i)"
class="el-icon-video-pause"
></i>
</div>
</el-tooltip>
<el-tooltip
v-if="i.flowName === '执行中'"
class="item"
effect="dark"
placement="top"
>
<div slot="content">执行中是员工在目标确认后努力达成目标的一个过程直到管理员发起评分<br />管理员如何发起评分返回上级页面&lt;考核详情&gt;点击"开始评分"按钮发起</div>
<div>
{{index+1}}.{{i.flowName}}<i class="el-icon-warning-outline" />:{{i.staffName}} <i
v-if="i.status ===1 && !i.isActive"
style="color:#3ba1ff;margin:0 0 0 4px;font-weight:800;"
class="el-icon-check"
></i>
<i
style="cursor: pointer;"
@click="handleRight(i)"
class="el-icon-video-pause"
></i>
</div>
</el-tooltip>
</div>
</div>
<div class="performance-content-bottom">
<tables
:tableInfo.sync='tableInfo'
v-if="obj.recortModelDtos.length !==0"
:obj='obj'
/>
</div>
<div v-if="!formList.resultCommentList" class="performance-content-jilu">
<div class="performance-content-jilu-title commonFont">
记录
</div>
<div
v-for="(i,index) in formList.resultCommentList"
:key="index"
class="performance-content-jilu-item commonFont"
>
<div class="performance-content-jilu-item-time">
{{i.gmtCreate}}
</div>
<div class="performance-content-jilu-item-content">
<div class="performance-content-jilu-item-content-img">
<img
src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2346299354,1694591848&fm=26&gp=0.jpg"
alt=""
>
</div>
<div>
<span>{{i.staffName}}</span><span class="mubiao">#{{i.optDesc}}#</span>
</div>
</div>
</div>
</div>
</div>
<popup-right
v-if="right.showRight"
@cancel='handleCancel'
@submit="handleSubmit"
:footer='true'
:title="form.item.flowName"
>
<div
slot="content"
class="chooseManage"
>
<div
class='chooseManage-item'
:key="index"
v-for="(i,index) in form.item.flowDetailRespList"
>
<InfoHeader :obj="{
name:i.staffName,
departmentName:i.departName
}"/>
<div class="chooseManage-item-center">
<el-tag size="mini" type="warning">未确认</el-tag>
<!-- <el-tag>已跳过</el-tag>
<el-tag type="success">已确认</el-tag> -->
</div>
<div>
<UseButton :info='i' :formList='formList' :tableInfo.sync='tableInfo'/>
</div>
</div>
</div>
</popup-right>
</div>
</template>
<script>
import SmallNav from '@/components/kpi-layout/SmallNav'
import InfoHeader from '@/components/InfoHeader'
import PopupRight from '@/components/PopupRight'
import UseButton from './components/UseButton'
import { apiResultRecordDetail, apiResultGetDetail } from '@/api/assessment'
import tables from './components/table'
export default {
data () {
return {
right: {
showRight: false
},
form: {},
formList: {
flowRecordList: [],
resultCommentList: []
},
obj: {
recortModelDtos: []
},
tableInfo: {
result: false,
score: false
}
}
},
components: {
SmallNav,
InfoHeader,
PopupRight,
tables,
UseButton
},
computed: {},
beforeMount () { },
mounted () {
this.handleList()
this.handleGetTbale()
},
methods: {
async handleGetTbale (id = this.$route.query.id) {
let res = await apiResultGetDetail({ id })
this.obj = res.data
console.log('res: ', res)
},
handleRight (item) {
console.log('item: ', item)
this.form.item = item
this.right.showRight = true
},
handleCancel () {
this.right.showRight = false
},
handleSubmit () {
this.right.showRight = false
},
async handleList () {
// resultRecordId = == this.$route.query.id
let res = await apiResultRecordDetail({ resultRecordId: this.$route.query.id })
if (res.code !== 200) return
for (let i in res.data.flowRecordList) {
res.data.flowRecordList[i === '0' ? i : (i - 1)].isGou = true
if (res.data.flowRecordList[i].status === 0) {
res.data.flowRecordList[i === '0' ? i : (i - 1)].isActive = true
break
}
}
this.formList = res.data
}
},
watch: {}
}
</script>
<style lang='less' scoped>
.performance {
overflow: auto;
.chooseManage-item {
// padding: 24px 0;
border-bottom: 1px solid @borderColor;
display: flex;
align-items: center;
justify-content: space-between;
&-center{
min-width: 200px;
.center()
}
}
&-content {
padding: 28px;
margin: 10px 0 50px;
// height: 700px;
// overflow: auto;
&-top {
border-bottom: 1px solid @borderColor;
padding-bottom: 20px;
margin-bottom: 20px;
display: flex;
justify-content: space-between;
align-items: center;
}
&-title {
display: flex;
align-items: center;
justify-content: space-between;
}
&-center {
display: flex;
flex-wrap: wrap;
margin: 20px 0;
&-item {
text-align: center;
padding: 10px 60px;
margin: 4px 0;
font-size: 14px;
position: relative;
background: #f5f5f5;
position: relative;
}
.active {
background: @fontBlue;
color: #fff;
}
.left::before {
content: "";
width: 20px;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: url(./img/left.png) no-repeat;
background-size: 100% 100%;
}
.right::after {
content: "";
width: 20px;
height: 100%;
position: absolute;
top: 0;
right: 0;
background: url(./img/right.png) no-repeat;
background-size: 100% 100%;
}
}
&-jilu {
&-title {
padding: 20px 0 10px 0;
}
&-item {
padding: 0 0 0 10px;
&-time {
margin: 4px 0;
font-size: 14px;
position: relative;
}
&-time::before {
position: absolute;
left: -16px;
top: 0;
content: "";
bottom: 0;
margin: auto;
width: 10px;
height: 10px;
background: @fontBlue;
overflow: hidden;
border-radius: 50%;
}
&-content {
padding: 0 0 0 10px;
display: flex;
min-height: 60px;
align-items: center;
span {
font-size: 14px;
}
.mubiao {
color: @fontBlue;
margin: 0 4px;
}
&-img {
width: 30px;
height: 30px;
border-radius: 50%;
overflow: hidden;
margin-right: 10px;
img {
width: 100%;
height: 100%;
}
}
}
}
}
}
}
</style>