<template>
    <div class='table'>
        <div v-if="obj.recortModelDtos.length !== 0"  class="table-list commonFont">
          <div class="table-header">
            <div class="table-left">维度</div>
            <div class="table-header-flex name">名称</div>
            <div class="table-header-flex">考核标准</div>
            <div class="table-header-flex" v-if="tableInfo.result || tableAuth.showResult">结果值</div>
            <div class="table-header-flex quanzhomng" style="flex:none;">权重({{obj.weight*100}}%)</div>
            <div class="table-header-flex" style="flex:none;width:130px;"  v-if="tableInfo.score || tableAuth.showScore">上级评分</div>
            <div class="table-header-flex quanzhomng" style="flex:none;" v-if="tableInfo.score || tableAuth.showScore">得分</div>
            <div class="table-header-flex"   v-if="tableInfo.score || tableAuth.showScore">评分说明</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">
               <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="name">
                   <span> {{child.target || ''}}</span>
                </div>
                 <div>
                   <pre>
                    {{child.keyResult || ''}}
                   </pre>
                 </div>
                <div v-if="tableInfo.result || tableAuth.showResult">
                    <el-input v-if="tableInfo.result" type="textarea"   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" style="flex:none;width:130px;">
                    <!-- 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="quanzhomng" style="flex:none;"  v-if="tableInfo.score || tableAuth.showScore">
                    <span>{{child.scoreDtos[child.scoreDtos.length-1].acquireScore || '--'}}</span>
                </div>
                <div style="padding:10px;" v-if="tableInfo.score || tableAuth.showScore">
                    <el-input v-if="tableInfo.score" style="width:200px;" 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" class="table-content-right-item">
                 <div class="name">
                </div>
                 <div>
                </div>
                <div v-if="tableInfo.result || tableAuth.showResult">
                </div>
                <div class="quanzhomng"  style="flex:none;">
                </div>
                 <div style="padding:10px;flex:none;width:130px;" v-if="tableInfo.score || tableAuth.showScore">
                   {{score.scoreLevel}}
                </div>
                <div  class="quanzhomng" style="flex:none;"  v-if="tableInfo.score || tableAuth.showScore">
                  {{score.lastScore}}
                </div>
                <div style="padding:10px;" v-if="tableInfo.score || tableAuth.showScore">
                </div>
              </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: {
    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.score, this.obj))
      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 = this.obj) {
      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>
.nojixiao{
  text-align: center;
}
.listNone{
  height: 100px;
  text-align: center;
  line-height: 100px;
  border-bottom: 1px solid @borderColor;
}
.table-list{
   border: 1px solid @borderColor;
   border-bottom: none;

}
.table-header{
  display: flex;
  background: #f5f5f5;
  justify-content: space-between;
  border-bottom:  1px solid @borderColor;;
  // border: 1px solid @borderColor;
  >div{
    padding: 10px;
    border-right:  1px solid @borderColor;;
  }
  >div:last-child{
    border-right: none;
  }
  &-flex{
    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{
    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>
