<!--
  @description: 新增招标计划--评委信息
  @author: sunxinman
  @routerPath: /tenderPlan/tenderPlanAdd/discussInfo
  @date: 2019-12-23 22:35:58
  说明：
  1.招标计划流程信息资格审查方式选择年度资格预审，评委会信息 显示资格审查委员会，不显示评标委员会
  2.若资格审查办法为资格后审，本页面只有显示评标委员会 则隐藏资资格审查委员会
-->
<template>
  <div>
    <!--=======================================================资格审查委员会=======================================================-->
    <template v-if="isShowZSPage">
      <el-form ref="qualificationCommitteeForm" :model="qualificationCommitteeDto" :rules="rules" :inline-message="true">
        <!--招标计划流程信息资格审查方式选择年度资格预审，评委会信息 显示资格审查委员会，不显示评标委员会-->
        <div class="page-title">
          <span v-if="isShowPage">1. </span>资格审查委员会
        </div>
        <table class="from_table">
          <tr>
            <td>
              <el-form-item label="资格审查委员会编号" />
            </td>
            <td>
              <el-input v-model="qualificationCommitteeDto.qualificationCommitteeNo" placeholder="资格审查委员会编号" />
            </td>
            <td>
              <el-form-item label="委员会类型" />
            </td>
            <td>资格审查委员会</td>
          </tr>
          <tr>
            <td>
              <el-form-item label="是否分组" />
            </td>
            <td>
              <el-radio-group v-model="qualificationCommitteeDto.isGroup">
                <el-radio label="00">
                  是
                </el-radio>
                <el-radio label="01">
                  否
                </el-radio>
              </el-radio-group>
            </td>
            <td>
              <el-form-item ref="qualificationCommitteeDtoMajorName" label="入库专业" prop="majorName" />
            </td>
            <td>
              <gx-input
                v-model="qualificationCommitteeDto.majorName"
                placeholder="请选择"
                style="width: calc(100% - 180px)"
                disabled
                gx-maxlength="varchar100"
              />
              <el-button type="primary" @click="LibraryTreeChange('00')">
                选择
              </el-button>
              <el-button @click="emptyLibraryTreeInfo('00')">
                清空
              </el-button>
            </td>
          </tr>
          <tr v-if="isShowZSGroup">
            <td>
              <el-form-item label="商务组人数" prop="businessGroupNumber" />
            </td>
            <td>
              <el-input v-model="qualificationCommitteeDto.businessGroupNumber" placeholder="商务组人数" />
            </td>
            <td>
              <el-form-item label="技术组人数" prop="techGroupNumber" />
            </td>
            <td>
              <el-input v-model="qualificationCommitteeDto.techGroupNumber" placeholder="技术组人数" />
            </td>
          </tr>
          <tr>
            <td>
              <el-form-item label="组建方式" />
            </td>
            <td>
              <el-radio-group v-model="qualificationCommitteeDto.organizeWay">
                <el-radio v-for="(item,index) in purchasesSchemeOrgWayList" :key="index" :label="item.typecode">
                  {{ item.typename }}
                </el-radio>
              </el-radio-group>
            </td>
            <template v-if="isShowZSGroup">
              <td />
              <td />
            </template>
            <template v-if="!isShowZSGroup">
              <td>
                <el-form-item label="商务、技术组人数" prop="businessTechGroupNumber" />
              </td>
              <td>
                <el-input v-model="qualificationCommitteeDto.businessTechGroupNumber" placeholder="商务、技术组人数" />
              </td>
            </template>
          </tr>
        </table>
      </el-form>
    </template>
    <!--=======================================================评标委员会=======================================================-->
    <template v-if="isShowPage">
      <el-form ref="evaluationCommitteeForm" :model="evaluationCommitteeDto" :rules="rules" :inline-message="true">
        <!--若资格审查办法为资格后审，本页面只有显示评标委员会 则隐藏资资格审查委员会-->
        <div class="page-title">
          <span v-if="isShowZSPage">2. </span>评标委员会
        </div>
        <table class="from_table">
          <tr>
            <td>
              <el-form-item label="评标委员会编号" />
            </td>
            <td>
              <el-input v-model="evaluationCommitteeDto.evaluationCommitteeNo" placeholder="评标委员会编号" />
            </td>
            <td>
              <el-form-item label="委员会类型" />
            </td>
            <td>评标委员会</td>
          </tr>
          <tr>
            <td>
              <el-form-item label="是否分组" />
            </td>
            <td>
              <el-radio-group v-model="evaluationCommitteeDto.isGroup">
                <el-radio label="00">
                  是
                </el-radio>
                <el-radio label="01">
                  否
                </el-radio>
              </el-radio-group>
            </td>
            <td>
              <el-form-item ref="evaluationCommitteeDtoMajorName" label="入库专业" prop="majorName" />
            </td>
            <td>
              <gx-input
                v-model="evaluationCommitteeDto.majorName"
                placeholder="请选择"
                style="width: calc(100% - 180px)"
                disabled
                gx-maxlength="varchar100"
              />
              <el-button type="primary" @click="LibraryTreeChange('01')">
                选择
              </el-button>
              <el-button @click="emptyLibraryTreeInfo('01')">
                清空
              </el-button>
            </td>
          </tr>
          <tr v-if="bottomGroup">
            <td>
              <el-form-item label="商务组人数" prop="businessGroupNumber" />
            </td>
            <td>
              <el-input v-model="evaluationCommitteeDto.businessGroupNumber" placeholder="商务组人数" />
            </td>
            <td>
              <el-form-item label="技术组人数" prop="techGroupNumber" />
            </td>
            <td>
              <el-input v-model="evaluationCommitteeDto.techGroupNumber" placeholder="技术组人数" />
            </td>
          </tr>
          <tr>
            <td>
              <el-form-item label="组建方式" />
            </td>
            <td>
              <el-radio-group v-model="evaluationCommitteeDto.organizeWay">
                <el-radio v-for="(item,index) in purchasesSchemeOrgWayList" :key="index" :label="item.typecode">
                  {{ item.typename }}
                </el-radio>
              </el-radio-group>
            </td>
            <template v-if="bottomGroup">
              <td />
              <td />
            </template>
            <template v-if="!bottomGroup">
              <td>
                <el-form-item label="商务、技术组人数" prop="businessTechGroupNumber" />
              </td>
              <td>
                <el-input v-model="evaluationCommitteeDto.businessTechGroupNumber" placeholder="商务、技术组人数" />
              </td>
            </template>
          </tr>
        </table>
      </el-form>
    </template>
    <!-- 保存按钮 -->
    <div class="but_footer">
      <div class="but_footer-h">
        <div class="but_footer-but">
          <el-button @click="prevForm">
            上一步
          </el-button>
          <el-button :loading="confirmLoading" @click="saveData">
            保存
          </el-button>
          <el-button
            :loading="confirmLoading"
            type="primary"
            @click="submitValidate"
          >
            提交
          </el-button>
        </div>
      </div>
    </div>
    <!--入库专业选择弹框-->
    <LibraryTreeDialog
      v-if="LibraryTreeDialogData.dialog"
      ref="LibraryTreeDialog"
      :dialog-data="LibraryTreeDialogData"
      @LibraryTreeInfo="LibraryTreeInfo"
    />
  </div>
</template>
<script>
import { checkRate } from '@/assets/js/validate'
import { savePretenderingPurchasesEvaluationCommittee, getPretenderingPurchasesEvaluationCommitteeBySchemeId } from '@/api/purchasePlan/pretcloudPurchasescheme'
import LibraryTreeDialog from '@/views/common/tools/LibraryTree-dialog'// 入库专业选择弹框
/* mixins混入公共方法*/
import { tenderPlan } from '../../mixins/tenderPlan'
export default {
  name: 'TenderPlanAdd',
  components: {
    LibraryTreeDialog // 入库专业选择弹框
  },
  mixins: [tenderPlan],
  props: {
    // 接收步骤条父页面信息
    tenderPlanData: {
      type: Object,
      default: function() {
        return {
          id: ''
        }
      }
    }
  },
  data() {
    return {
      confirmLoading: false, // 暂存Loding
      isShowZSPage: true, // 根据资格审查方式 qualificationCheckWay控制资格审查委员会是否显示资审模块
      isShowPage: true, // 根据资格审查方式 qualificationCheckWay控制资格审查委员会是否显示后审模块
      // 资格审查委员会实体
      qualificationCommitteeDto: {
        businessGroupNumber: 0, // 商务组人数
        businessTechGroupNumber: 0, // 商务、技术组人数
        committeeType: '', // 委员会类型
        createTime: '', // 创建时间
        createUser: '', // 创建人id
        qualificationCommitteeNo: '', // 资格审查委员会编号
        id: '', // 主键id
        isGroup: '00', // 是否分组,00是，01否
        major: '', // 专业选项为：00“燃煤锅炉专业”、01“燃气锅炉专业”、
        organizeWay: '00', // 组建方式，00 随机抽取，01直接指定
        schemeId: '', // 外键id
        techGroupNumber: 0, // 技术组人数
        updateTime: '', // 修改时间
        updateUser: '' // 修改人id
      },
      // 评标委员会实体
      evaluationCommitteeDto: {
        businessGroupNumber: 0, // 商务组人数
        businessSpecialtyGroup: '', // 业务专业（组）
        businessTechGroupNumber: 0, // 商务、技术组人数
        committeeType: '', // 委员会类型
        createTime: '', // 创建时间
        createUser: '', // 创建人id
        groupAttribute: '', // 组属性
        groupNumberFrom: '', // 组人数从
        groupNumberTo: '', // 组人数到
        id: '', // 主键id
        isGroup: '00', // 是否分组,00是，01否
        major: '', // 专业编码
        majorName: '', // 专业名称
        membersComposition: '', // 成员组成
        organizeWay: '00', // 组建方式，00 随机抽取，01直接指定
        evaluationCommitteeNo: '', // 评标委员会编号
        schemeId: '', // 外键id
        techGroupNumber: 0, // 技术组人数
        useStatus: '' // 使用状态 00临时,01正式,02作废
      },
      bottomGroup: true, // 根据怕评标委员会是否分组 判断是否显示商务组人数和技术组人数
      isShowZSGroup: true, // 根据资格审核委员会是否分组 判断是否显示商务组人数和技术组人数
      rules: {
        qualificationCommitteeDtoMajorName: [{ required: true, message: '请选择', trigger: 'blur' }], // 资审入库专业
        evaluationCommitteeDtoMajorName: [{ required: true, message: '请选择', trigger: 'blur' }], // 入库专业
        techGroupNumber: [{ required: true, validator: checkRate, trigger: 'blur' }], // 技术组人数
        businessGroupNumber: [{ required: true, validator: checkRate, trigger: 'blur' }], // 商务组人数
        businessTechGroupNumber: [{ required: true, validator: checkRate, trigger: 'blur' }] //  商务、技术组人数
      },
      // 入库专业-弹窗-展示/隐藏状态 true 展示/false 隐藏
      LibraryTreeDialogData: {
        type: '', // 添加类型-区分资格审查委员会或者是评标委员会
        dialog: false, // 弹窗状态
        selectCodes: []// 当前选中的专业Code
      }
    }
  },
  watch: {
    // 评标委员会--是否分组,00是，01否 控制商务组人数，技术组人数显示
    'evaluationCommitteeDto.isGroup'(newval) {
      if (newval !== '00') {
        this.bottomGroup = false
      } else {
        this.bottomGroup = true
      }
    },
    // 资格审查委员会--是否分组,00是，01否 控制商务组人数，技术组人数显示
    'qualificationCommitteeDto.isGroup'(newval) {
      if (newval !== '00') {
        this.isShowZSGroup = false
      } else {
        this.isShowZSGroup = true
      }
    }
  },
  created() {
    // 根据资审后审处理页面显示隐藏（资格审查委员会，评标委员会显示）
    this.handlePageShow()
    // 招标计划-字典信息
    this.initPurchaseSchemeWebTypeGroup()
  },
  mounted() {
    this.getPurchasesEvaluation()
  },
  methods: {
    // 根据资审后审处理页面显示隐藏
    handlePageShow() {
      // 取出招标计划信息
      const process = JSON.parse(sessionStorage.getItem('process'))
      /* 资格审查方式 qualificationCheckWay  00:单次资格预审 01:年度资格预审 02:资格后审
         若资格审查办法为资格后审，本页面只有评标委员会，一个模块 隐藏资格审查委员会信息模块
       * */
      if (process && process.qualificationCheckWay === '02') {
        this.isShowZSPage = false
        this.isShowPage = true
      }
      /*
        若资格审查办法为年度资格预审，本页面只显示资格审查委员会信息，无评标委员会
      * */
      if (process && process.qualificationCheckWay === '01') {
        this.isShowZSPage = true
        this.isShowPage = false
      }
    },
    // 根据方案id获取评标委员会
    getPurchasesEvaluation() {
      getPretenderingPurchasesEvaluationCommitteeBySchemeId(this.tenderPlanData.id).then(res => {
        const {
          pretPurchaseschemePretenderingPurchasesEvaluationCommitteeVo, // 评标委员会实体
          pretPurchaseschemePretenderingPurchasesQualificationCommitteeVo // 资审委员会实体
        } = res.data
        this.evaluationCommitteeDto = pretPurchaseschemePretenderingPurchasesEvaluationCommitteeVo || this.evaluationCommitteeDto
        this.qualificationCommitteeDto = pretPurchaseschemePretenderingPurchasesQualificationCommitteeVo || this.qualificationCommitteeDto
      })
    },
    // 上一步
    prevForm() {
      this.$emit('stepPage', 'prev')
    },
    // 提交评委会信息
    submitEvaluation(type) {
      this.evaluationCommitteeDto.useStatus = type // 评标委员会实体
      this.evaluationCommitteeDto.schemeId = this.tenderPlanData.id
      this.qualificationCommitteeDto.schemeId = this.tenderPlanData.id
      const obj = {
        pretPurchaseschemePretenderingPurchasesEvaluationCommitteeDto: this.evaluationCommitteeDto,
        pretPurchaseschemePretenderingPurchasesQualificationCommitteeDto: this.qualificationCommitteeDto
      }
      savePretenderingPurchasesEvaluationCommittee(obj).then(() => {
        if (type === '01') {
          this.$message({
            type: 'success',
            message: '提交成功'
          })
          this.$router.push('/tenderPlan/tenderPlanList')
        } else {
          this.$message({
            type: 'success',
            message: '保存成功'
          })
        }
        this.confirmLoading = false// btnLoding
      }).catch(() => {
        this.confirmLoading = false// btnLoding
      })
    },
    // 保存
    saveData() {
      this.submitEvaluation('00')
    },
    // 提交校验
    submitValidate() {
      let validate1 = null
      let validate2 = null
      // 显示资格审查委员会
      if (this.isShowZSPage) {
        validate1 = new Promise((resolve) => {
          this.$refs['qualificationCommitteeForm'].validate(valid => {
            if (valid) resolve()
          })
        })
      }
      // 显示评标委员会
      if (this.isShowPage) {
        validate2 = new Promise((resolve) => {
          this.$refs['evaluationCommitteeForm'].validate(valid => {
            if (valid) resolve()
          })
        })
      }
      Promise.all([validate1, validate2]).then(() => {
        // 校验成功
        this.confirmLoading = true // btnLoding
        this.submit()
      })
    },
    // 提交
    submit() {
      this.$confirm('是否确认提交?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        confirmButtonClass: 'confirmBtn',
        cancelButtonClass: 'cancelBtn',
        type: 'warning'
      }).then(() => {
        this.confirmLoading = true// btnLoding
        this.submitEvaluation('01')
      }).catch(() => {
        this.confirmLoading = false// btnLoding
      })
    },
    // 选择入库专业按钮
    LibraryTreeChange(type) {
      // 00 资格审查委员会=入库专业  01 评标委员会-入库专业
      this.LibraryTreeDialogData.type = type
      this.LibraryTreeDialogData.dialog = true// 打开弹窗
      this.LibraryTreeDialogData.selectCodes = this.evaluationCommitteeDto.major.split(',')// 入库专业选择状态回显
    },
    // 清空入库专业
    emptyLibraryTreeInfo(type) {
      if (type === '00') {
        this.qualificationCommitteeDto.majorName = ''
        this.qualificationCommitteeDto.major = ''
      } else {
        this.evaluationCommitteeDto.majorName = ''
        this.evaluationCommitteeDto.major = ''
      }
    },
    // 挑选入库专业信息
    LibraryTreeInfo(data, type) {
      if (type === '00') {
        this.qualificationCommitteeDto.majorName = data.labels // 入库专业
        this.qualificationCommitteeDto.major = data.keys // 入库专业id
      } else {
        this.evaluationCommitteeDto.majorName = data.labels // 入库专业
        this.evaluationCommitteeDto.major = data.keys // 入库专业id
      }
      this.$forceUpdate()
    }
  }
}
</script>
<style lang="less" scoped>
</style>
