<!--
  @description: 新增招标计划--招标计划基本信息
  @author: sunxinman/haofengxian
  @routerPath: /tenderPlan/tenderPlanAdd/baseInfo
  @date: 2019-12-23 22:35:58
-->
<template>
  <div>
    <!--=======================================================招标计划基本信息=======================================================-->
    <div class="mb16 page-title">
      1. 招标计划基本信息
    </div>
    <biddingPlanInfoForm
      ref="purchasesSchemeForm"
      :form-data="purchasesScheme"
    />
    <!--=======================================================流程控制信息=======================================================-->
    <div class="mb16 page-title">
      2. 流程控制信息
    </div>
    <processControlInfoForm
      ref="purchasesProcessForm"
      :form-data="purchasesProcess"
      v-on="$listeners"
    />
    <!-- 保存按钮 -->
    <div class="but_footer">
      <div class="but_footer-h">
        <div class="but_footer-but">
          <el-button :loading="confirmLoading" @click="submitForm('01')">
            保存
          </el-button>
          <el-button :loading="confirmLoading" type="primary" @click="submitForm('00')">
            下一步
          </el-button>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
/* api接口*/
import {
  savePretenderingPurchasesScheme,
  getPretenderingPurchasesSchemeById,
  getPretenderingPurchasesSerialNumber
} from '@/api/purchasePlan/pretcloudPurchasescheme'
/* 组件*/
import biddingPlanInfoForm from './biddingPlanInfoForm' // 招标计划基本信息
import processControlInfoForm from './processControlInfoForm' // 流程控制信息
export default {
  name: 'BaseInfoAdd',
  components: {
    biddingPlanInfoForm,
    processControlInfoForm
  },
  props: {
    // 接收步骤条父页面信息
    tenderPlanData: {
      type: Object,
      default: function() {
        return {
          id: ''
        }
      }
    }
  },
  data() {
    return {
      confirmLoading: false, // 暂存Loding
      // 招标方案信息实体
      purchasesScheme: {
        id: '',
        purchasLevel: '', // 采购级别
        biddingPlanType: '01', // 自建项目
        bidOpeningMethod: '00', // 开标方式
        schemeBudget: '', // 概算金额
        biddingOrganizationForm: '01', // 招标组织形式 00 自主招标 01 委托招标
        schemeDeptname: '', // 招标组织单位名称
        schemeDeptno: '', // 招标组织单位编号
        projectNo: '', // 工程项目编号
        projectName: '', // 工程项目名称
        schemeName: '',
        biddingSchemeType: '', // 招标项目类型
        purchasType: '00', // 采购类型
        schemeNature: '', // 项目性质
        schemeClass: '', // 工程分类
        biddingClassSecondLevel: '', // 招标类别二级分类
        biddingAgencyName: '', // 招标代理机构
        biddingAgencyId: '', // 招标代理机构id
        schemeNo: '', // 招标计划编号
        bidOpeningStep: '00', // 开标步制
        annualPrequalificationScreeningProject: '00', // 年度资格预审筛选项目 默认00否 01是
        bidEvaluationMethod: '00', // 评标办法
        updateUser: '',
        biddingArea: '', // 招标范围
        secondaryLevelCompanyName: '', // 所属二级公司名称
        secondaryLevelCompanyId: '', // 所属二级公司id
        grassRootsCompaniesId: '', // 基层公司id
        grassRootsCompaniesName: '' // 基层公司名称
      },
      // 招标计划流程控制信息实体
      purchasesProcess: {
        annualPrequalificationScreeningProject: '00', // 年度资格预审筛选项目 默认00否 01是
        bidEvaluationMethod: '00', // 评标办法
        bidOpeningMethod: '00', // 开标方式
        bidOpeningStep: '00', // 开标步制
        bidSubmissionMethod: '00', // 投标文件递交方式
        biddingEvaluationWay: '00', // 评标方式
        biddingMethod: '00', // 招标方式
        biddingQuotationMethod: '00', // 投标报价方式
        createUser: '', // 创建人id
        id: '', // 主键id
        prequalificationEvaluationMethod: '01', // 资格预审评审办法 默认01 有限数量制
        prequalificationEvaluationWay: '00', // 资格预审评审方式
        prequalificationOpeningMethod: '00', // 资格预审开启方式
        qualificationCheckWay: '02', // 资格审查方式 02 默认 资格后审
        quantitativeRestriction: '', // 数量限制
        schemeId: '', // 外键id
        updateUser: '',
        useStatus: '00' // 00临时,01正式
      }
    }
  },
  mounted() {
    this.getPretenderingPurchasesScheme()
  },
  methods: {
    // 根据id获取招标方案信息
    getPretenderingPurchasesScheme() {
      // 主键id存在为变更 否则为空新增
      const id = this.tenderPlanData.id ? this.tenderPlanData.id : ''
      if (id) {
        getPretenderingPurchasesSchemeById(id).then(res => {
          const { pretPurchaseschemePretenderingPurchasesSchemeVo, pretPurchaseschemePretenderingPurchasesProcessVo } = res.data
          this.purchasesScheme = pretPurchaseschemePretenderingPurchasesSchemeVo // 招标计划基本信息
          this.purchasesProcess = pretPurchaseschemePretenderingPurchasesProcessVo // 流程控制信息
          this.setProcessInfo(this.purchasesProcess) // 存储session流程信息
        })
      } else {
        // 新增是获取招标计划编号
        this.getPurchasesSerialNumber()
      }
    },
    // 获取招标计划编号
    getPurchasesSerialNumber() {
      const info = this.$store.state.user.info // 当前登录用户信息
      this.purchasesScheme.biddingAgencyName = info.companyName // 招标代理机构
      this.purchasesScheme.biddingAgencyId = info.companyId // 招标代理机构id
      getPretenderingPurchasesSerialNumber().then(res => {
        this.purchasesScheme.schemeNo = res.data
      })
    },
    // 保存调用接口方法
    saveData(type) {
      const obj = {}
      obj.pretPurchaseschemePretenderingPurchasesSchemeDto = { // 招标方案信息实体
        createUser: this.$store.getters.info.userName,
        updateUser: this.$store.getters.info.userName,
        ...this.purchasesScheme
      }
      obj.pretPurchaseschemePretenderingPurchasesProcessDto = { // 招标计划流程控制信息实体
        id: this.id,
        createUser: this.$store.getters.info.userName,
        updateUser: this.$store.getters.info.userName,
        ...this.purchasesProcess
      }
      savePretenderingPurchasesScheme(obj).then(res => {
        const { data: { id, schemeId }} = res
        this.purchasesProcess.id = id // 招标计划流程控制主键id
        this.purchasesProcess.schemeId = schemeId // 招标计划流程控制外键id
        this.purchasesScheme.id = schemeId // 招标方案信息主键id
        this.tenderPlanData.id = schemeId // 修改父组件主键id
        this.setProcessInfo(res.data) // 存储session流程信息
        if (type === '00') {
          // 下一步跳转页面
          this.$emit('stepPage', 'next')
        } else {
          this.$message({
            type: 'success',
            message: '保存成功'
          })
        }
        this.confirmLoading = false// btnLoding
      }).catch(() => {
        this.confirmLoading = false// btnLoding
      })
    },
    // 存储招标计划流程信息实体后面tab页需使用
    setProcessInfo(formData) {
      sessionStorage.setItem('process', JSON.stringify(formData))
    },
    // 下一步 00下一步 01保存
    submitForm(type) {
      if (type === '00') {
        const validate1 = this.$refs['purchasesSchemeForm'].vaildate()
        const validate2 = this.$refs['purchasesProcessForm'].vaildate()
        // 同时校验招标计划基本信息和流程控制信息
        Promise.all([validate1, validate2]).then(() => {
          // 校验成功
          this.confirmLoading = true// btnLoding
          this.saveData(type)
        })
      } else {
        if (this.purchasesScheme.schemeName) {
          this.saveData(type)
        } else {
          this.$message.warning('请填写招标名称')
        }
      }
    }
  }
}
</script>
<style lang="less" scoped>
</style>
