<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" >结果值</div>
            <div class="title table-header-flex quanzhong" >权重({{obj.weight*100}}%)</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 ((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" :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>
              </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.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: 300px;
  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: 100px;
      height: 100%;
    }
    &-defen{
      width: 40px;
      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{
   margin: 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>
