<template>
  <div id="content-container" :class="{'expand-right': expandRight}">
    <!--Page Title-->
    <div id="page-title">
      <h1 class="page-header text-overflow">季度评价打分</h1>
    </div>
    <!--End page title-->

    <!--Breadcrumb-->
    <!--<ol class="breadcrumb">-->
    <!--<li><a href="#">Home</a></li>-->
    <!--<li><a href="#">Layouts</a></li>-->
    <!--<li class="active">Demo</li>-->
    <!--</ol>-->
    <!--End breadcrumb-->

    <!--Page content-->
    <div class="page-content">
      <div class="panel">
        <div class="panel-body">
          <el-form :model="formModel" label-width="100px" ref="formName">
            <el-form-item label="季度">
              <el-input
                class="form-input"
                placeholder="请输入内容"
                v-model="formModel.quarter"
                :disabled="true"
              >
              </el-input>
            </el-form-item>
            <el-form-item label="指标名称">
              <el-input
                class="form-input"
                placeholder="请输入内容"
                v-model="formModel.indexName"
                :disabled="true"
              >
              </el-input>
            </el-form-item>
            <el-form-item label="A档">
              <el-input
                class="form-input"
                placeholder="请输入内容"
                v-model="formModel.levelA"
                :disabled="true"
              >
              </el-input>
            </el-form-item>
            <el-form-item label="B档">
              <el-input
                class="form-input"
                placeholder="请输入内容"
                v-model="formModel.levelB"
                :disabled="true"
              >
              </el-input>
            </el-form-item>
            <el-form-item label="C档">
              <el-input
                class="form-input"
                placeholder="请输入内容"
                v-model="formModel.levelC"
                :disabled="true"
              >
              </el-input>
            </el-form-item>
            <el-form-item label="D档">
              <el-input
                class="form-input"
                placeholder="请输入内容"
                v-model="formModel.levelD"
                :disabled="true"
              >
              </el-input>
            </el-form-item>
            <el-form-item label="指标完成情况">
              <el-input
                class="form-input"
                placeholder="请输入内容"
                v-model="formModel.execution"
              >
              </el-input>
            </el-form-item>
            <el-form-item label="自评定级">
              <el-input
                class="form-input"
                placeholder="请输入内容"
                v-model="formModel.selfEvaluation"
              >
              </el-input>
            </el-form-item>
            <el-form-item label="所项目管理员打分">
              <el-input
                class="form-input"
                placeholder="项目管理员才能打分"
                v-model="formModel.adminScoring"
                :disabled=isAdmin
              >
              </el-input>
            </el-form-item>
            <el-form-item>
              <div style="float: right">
                <el-button @click="cancel()" type="default">取消</el-button>
                <el-button @click="save('formName')" type="primary" :disabled="!isSave">保存</el-button>
              </div>
            </el-form-item>
          </el-form>
        </div>
      </div>
    </div>
    <!--End Page content-->
  </div>
</template>

<script>
import DataForm from '../../../components/form/DataForm.vue'
import DataTable from '../../../components/DataTable.vue'
import Api from '../../../server/index'
import app from '../../../assets/js/common/app.js'
import {baseUrl} from '../../../config/env.js'
import verifyButton from '../../../components/verifyButton.vue'
import FlowRecordTable from '../../../components/FlowRecordTable.vue'
import {getItem} from '../../../config/mUtils'

export default {
  beforeRouteEnter (to, from, next) {
    next(function (vm) {
      global.getMenuIndex(vm)
    })
  },
  data () {
    return {
      isAdmin: true,
      adminScoring: '',
      selfEvaluation: '',
      week: '',
      ext: {},
      thisWeek: '',
      nextWeek: '',
      userId: '',
      workload: '',
      projectName: '',
      money: '',
      projectNo: '',
      expandRight: false,
      app: app,
      reimburseId: '',
      actionUrl: `${baseUrl}/api/common/file-upload`,     // 上传路径
      baseUrl: baseUrl,
      formModel: {
        userInfoId: '',
        witness: '',
        deptId: '',
        reimburseCategory: '',   // 报销种类
        reason: '',         // 报销事由
        selectBudgetCategoryId: [],   // 预算种类
        reimburseDetail: [
          {
            time: '',
            money: '',
            moneyDetail: '',
            total: 0,
            hasBill: '',     // 是否有发票
            fileList: [],     // 文件列表
          }
        ],  // 报销详情
        activie: 0
      },
      formWitnessData: [],   // 证明人数据源
      orgOptions: [],
      userInfoOption: [],
      reimburseCategoryData: app.reimbursement,    // 报销种类
      budgetCategory: [],    // 预算种类层级
      reimburseIndex: 0,   // 点击哪个报销明细做个标记
      // 审批相关
      rewriteAgreeVerify: false, //是否要重写同意审批事件
      rewriteRejectVerify: false, //是否要重写驳回审批事件
      rewriteDestroyVerify: false, //是否要重写作废审批事件
      flowId: '',
      taskId: '',
      checkOrVerify: false, //标识是查看详情还是审批
      isSave: true,
      isEdit: false,
      canEditReimburseCategory: false, //标识是否能改报销分类
      canEditBudgetCategory: false, //标识是否能改预算类别
      isVerify: false,
      isNotVerifyReady: false,     // 是否未审核
      pageNo: 1,
      pageSize: 10,
      tableTotalPage: 1,
    }
  },
  created () {
    this.taskId = this.$route.params.taskId
    this.reimburseId = this.$route.params.id
    this.pid = this.$route.params.pid
    // if (this.$route.name === 'ExpenseClaimApplyEdit') {
    //   this.isEdit = true
    //   this.flowId = this.$route.params.id
    //   console.log('路由ID为', this.$route.params.id)
    //   this.checkOrVerify = true
    // } else if (this.$route.name === 'ExpenseClaimApplyVerify') {
    //   this.isVerify = true
    //   this.flowId = this.$route.params.verifyId
    //   this.checkOrVerify = false
    //   this.isNotVerifyReady = this.$route.query.isNotVerifyReady === 'Y'
    // } else if (this.$route.name === 'ExpenseClaimApplyArchive') {
    //   this.flowId = this.$route.params.id
    //   this.checkOrVerify = true
    // } else {
    //   this.flowId = this.$route.params.id
    //   this.checkOrVerify = true
    // }
    this.init()
    this.getBudgetCategory()
  },
  methods: {
    init () {
      this.userId = getItem('userId')
      this.reimburseId = this.$route.params.id
      this.pid = this.$route.params.pid
      this.getQuartely()
    },
    getQuartely: function () {
      let param = {
        pageNoUtil: {
          pageNo: this.pageNo,
          pageSize: this.pageSize,
          t: {
            id: this.reimburseId
          }
        }
      }
      Api.ProjectManagements.getIndicators(param.pageNoUtil).then(result => {
        console.log('result', result)
        if (result.status === 0) {
          let data = result.data.ls[0]
          this.formModel = data
          this.ext = data.ext
          this.formModel.execution = data.ext.execution
          this.formModel.selfEvaluation = data.ext.selfEvaluation
          this.formModel.adminScoring = data.ext.adminScoring
          if (data.ext.projectAdmin == this.userId) {
            this.isAdmin = false
          }
        }
      })
    },
    //判断是否能修改报销分类和预算类别（财务专员在审批中能修改）
    judgeEditAuth (canEdit) {
      if (this.isNotVerifyReady === true) {
        if (this.$route.name === 'ExpenseClaimApplyVerify') {
          this.canEditBudgetCategory = canEdit
          this.rewriteAgreeVerify = canEdit
          this.rewriteRejectVerify = canEdit
          this.rewriteDestroyVerify = canEdit
          if (this.formModel.reimburseCategory !== 'medical') {
            this.canEditReimburseCategory = canEdit
            //其他类型的报销不能改为医疗保险
            let destData = []
            this.reimburseCategoryData.forEach((category, index) => {
              destData.push(
                {
                  label: category.label,
                  model: category.model,
                  disabled: category.model === 'medical',
                }
              )
            })
            this.reimburseCategoryData = destData
          }
          this.isEdit = false
        } else {
          this.isEdit = canEdit
        }
      }
    },
    getBudgetCategory () {
      Api.Common.getBudgetCategory().then(result => {
        if (result.status === 0) {
          this.budgetCategory = this.assembleOrgData(result.data)
        } else {
          this.$message.error(`${result.msg}`)
        }
      })
    },
    //请求所有人员
    getAllPeople () {
      // Api.PersonnelManagement.personListNew(1, 10000).then((result) => {
      //   if (result.status === 0) {
      //     for (let i = 0; i < result.data.ls.length; i++) {
      //       let people = result.data.ls[i]
      //       this.formWitnessData.push({
      //         model: people.id,
      //         label: people.personName,
      //         disabled: people.id === this.formModel.userInfoId
      //       })
      //     }
      //   } else {
      //     this.$message.error(`${result.msg}`)
      //   }
      // })
      let params = {
        path: {
          id: 0
        }
      }
      Api.Administration.getPeers(params).then((result) => {
        console.log('查询所有')
        console.log('查询所有人员的方法')
        if (result.status === 0) {
          // this.formModel.deptId=this.assembleOrgData(result.data)
          this.orgOptions = this.assembleOrgData(result.data)
          // this.formModel.userId=this.assembleOrgData(result.data)
          // this.userInfoOption=this.assembleOrgData(result.data)
          console.log('deptId', this.formModel.deptId)
          console.log('orgOptions', this.orgOptions)
          console.log('userId', this.formModel.userId)
          console.log('userInfoOption', this.userInfoOption)
          //执行部门所有下拉数据
          // this.formPermissionsData = this.assembleOrgData(result.data)
          //任务执行人下拉回显
          // this.formProjectManagerData = this.assembleOrgData(result.data)
          // this.formPeopleData = this.assembleOrgData(result.data)
          // this.formProjectAdmin = this.assembleOrgData(result.data)
          // this.formMainLeader = this.assembleOrgData(result.data)
          // this.formBranchLeader = this.assembleOrgData(result.data)
        } else {
          this.$message.error(result.msg)
        }
      })
    },
    //递归组装部门级联选择器数据源
    assembleOrgData (source) {
      let dest = []
      for (let i = 0; i < source.length; i++) {
        let org = {
          value: source[i].id,
          parentId: source[i].parentId,
          label: source[i].name,
          depth: source[i].depth
        }
        if (source[i].childList && source[i].childList.length > 0) {
          org['children'] = this.assembleOrgData(source[i].childList)
        }
        dest.push(org)
      }
      return dest
    },
    addFile () {
      this.formModel.reimburseDetail.push({
        time: '',
        money: '',
        moneyDetail: '',
        hasBill: '',     // 是否有发票
        fileList: []     // 文件列表
      })
    },
    deleteFile (index) {
      if (this.formModel.reimburseDetail.length === 1) {
        this.$message.warning('报销明细不能为空！')
        return false
      }
      this.formModel.reimburseDetail.splice(index, 1)
    },
    // 上传附件
    handleFileRemove (file, fileList) {
      console.log(fileList)
      setTimeout(() => {
        this.formModel.reimburseDetail[this.reimburseIndex].fileList = []

        for (let i = 0; i < fileList.length; i++) {
          this.formModel.reimburseDetail[this.reimburseIndex].fileList.push({
            name: fileList[i].name,
            url: fileList[i].url
          })
        }
      }, 10)
    },
    handleFileSuccess (res, file, fileList) {
      if (res.status === 0) {
        this.formModel.reimburseDetail[this.reimburseIndex].fileList.push({
          name: file.name,
          url: file.response.data.url
        })
      } else {
        this.$message.error(`${res.msg}`)
      }
      console.log(this.formModel.reimburseDetail[this.reimburseIndex].fileList)
    },
    reimburseClick (index) {
      this.reimburseIndex = index
      console.log(index)
    },
    //重写同意审批按钮事件
    agreeFlowVerify (comment) {
      this.save('formName', 'commit', comment)
    },
    //重写驳回审批按钮事件
    rejectFlowVerify (comment) {
      this.save('formName', 'back', comment)
    },
    //重写作废审批按钮事件
    destroyFlowVerify (comment) {
      this.save('formName', 'end', comment)
    },
    cancel () {
      this.$router.go(-1)
    },
    save (formName) {
      console.log('formName', formName)
      this.$refs[formName].validate((valid) => {
        if (valid) {
          let ext = this.ext
          ext.execution = this.formModel.execution,
            ext.selfEvaluation = this.formModel.selfEvaluation,
            ext.adminScoring = this.formModel.adminScoring
          console.log('ext', ext)
          let param = {
            pageNoUtil: {
              t: {
                id: this.reimburseId,
                ext: ext
              }
            }
          }
          this.isSave = false
          Api.ProjectManagements.updateQuarterly(param.pageNoUtil).then(result => {
            this.isSave = true
            if (result.status === 0) {
              this.$message.success(result.data)
              this.$router.push(
                {name: 'quarterlyAssessmentDetail', params: {id: this.pid}})
            } else {
              this.$message.error(result.data)
            }
          })
        } else {
          console.log('error submit!!')
          return false
        }
      })
    },
    moneyChange () {
      let total = 0
      for (let i = 0; i < this.formModel.reimburseDetail.length; i++) {
        if (this.formModel.reimburseDetail[i].money === '' || !this.formModel.reimburseDetail[i].money) {
          total += 0
        } else {
          total += Number(this.formModel.reimburseDetail[i].money)
        }
      }
      this.formModel.total = total.toFixed(2)
    }
  },
  components: {
    DataTable, DataForm, verifyButton, FlowRecordTable
  }
}
</script>

<style scoped lang="less" rel="stylesheet/less">
.expand-right {
  @media (min-width: 768px) {
    padding-left: 0 !important;
  }
}

.page-content {
  padding: 15px;
}

</style>
