/*
  @description:邀请函公用字典
  @Modifier:肖文龙/haoFx/张慢慢
  @routerPath:
  @date:2020-1-3 17:49
*/
import { getInvitationAllDictionariesInitInfo } from '@/api/bidding/bidInvitation'
export const newTenderInvitationInitGroupMixin = {
  data() {
    return {
      /* ==============================邀请函==============================*/
      publishMethodList: [], // 本次招标标段
      // 招标文件获取-获取标书费相关字典信息
      documentMethodList: [], // 标书金额设置
      receiveMethodList: [], // 标书获取方式
      // 资格要求获取字典信息
      qualificationTypeList: [], // 资质类型
      projectClassificationList: [], // 资格要求类型
      // 获取投标文件递交字典初始化信息
      bidFileSubmitMethodList: [], // 投标文件递交方式
      bidDocumentSubmitDetailAddress: '', // 投标文件递交方式
      // 获取开标方式字典初始化信息
      decryptionMethodList: [], // 标书解密方式
      isSubmitBidPriceList: [], // 第一阶段投标规则
      openingMethodList: [], // 开标方式
      twoBidOpeningMethodList: [], // 两步法开标顺序
      openBidDetailAddress: '', // 开标地点
      // 获取保证金字典初始化信息
      isReceiveTenderBailPriceList: [
        { typename: '开票', typecode: '01' },
        { typename: '不开票', typecode: '00' }
      ], // 是否需要开票
      bailPriceReceiveChannelList: [], // 保证金收取途径
      mediaPartnersList: [], // 指定媒体
      bailPriceMethodList: [], // 保证金设置
      bailPriceModeList: [], // 保证金收取方式
      paytypeList: [] // 支付方式
    }
  },
  created() {
  },
  methods: {
    // 获取邀请函所有初始化字典信息
    getInvitationAllDictionariesInitInfo() {
      getInvitationAllDictionariesInitInfo().then(res => {
        // 遍历key存储相应的数据
        for (const key in res.data) {
          this[key + 'List'] = res.data[key].typeList
        }
      })
    },
    /*
      * 标书获取时间
      * type start 开始时间 end结束时间
      * return 布尔值 true 通过 false 不通过
     */
    documentReceiveTimeChange(type) {
      // 标书获取开始时间
      this.formData.tenderDocumentReceiveStartTime = this.formData.tenderDocumentReceiveStartTime && this.$Moment(this.formData.tenderDocumentReceiveStartTime).format(this.momentSaveFormat)
      // 标书获取截止时间
      this.formData.tenderDocumentReceiveEndTime = this.formData.tenderDocumentReceiveEndTime && this.$Moment(this.formData.tenderDocumentReceiveEndTime).format(this.momentSaveFormat)
      const data = {
        tenderDocumentReceiveStartTime: this.formData.tenderDocumentReceiveStartTime, // 标书获取开始时间
        tenderDocumentReceiveEndTime: this.formData.tenderDocumentReceiveEndTime// 标书获取截止时间
      }
      let isTimeRule = true
      if (type === 'start') {
        // 开始时间触发
        isTimeRule = this.tenderDocumentReceiveStartTimeRule(data)// 标书获取开始时间
      } else if (type === 'end') {
        // 截止时间触发
        isTimeRule = this.tenderDocumentReceiveEndTimeRule(data)// 标书获取结束时间
      } else {
        // 点击下一步时触发
        isTimeRule = this.tenderDocumentReceiveStartTimeRule(data)// 标书获取开始时间
        if (isTimeRule) isTimeRule = this.tenderDocumentReceiveEndTimeRule(data)// 标书获取结束时间
      }
      return isTimeRule
    },
    /*
     * 接收答疑截止时间||投标截止时间-时间校验规则
     * return 布尔值 true 通过 false 不通过
     */
    acceptAnsweringQuestionsEndTimeChange(type) {
      const data = {
        acceptAnsweringQuestionsEndTime: this.formData.acceptAnsweringQuestionsEndTime, // 接收答疑截止时间
        submitEndTime: this.formData.submitEndTime// 投标截止时间
      }
      // 投标截止时间
      if (type === 'submitEndTime') {
        this.submitEndTimeRule(data)// 校验公告时间规则
      } else if (type === 'acceptAnsweringQuestionsEndTime') {
        // 接收答疑截止时间
        this.acceptAnsweringQuestionsEndTimeRule(data)// 校验公告时间规则
      } else if (type === 'next') {
        // 点击下一步时
        return this.submitEndTimeRule(data).then(() => { // 校验公告时间规则
          return this.acceptAnsweringQuestionsEndTimeRule(data)// 校验公告时间规则
        })
      }
    },
    /* 时间规则处理--设置开标时间和投标截止时间相同-*/
    initTimeRule() {
      const val = this.timeRuleInfo.submitEndTime// 投标截止时间
      if (val) {
        // isTwoBidOpening 是否两步开标 00:否 01:是
        if (this.formData.isTwoBidOpening === '00') { // 一步开标
          if (!this.formData.openBidStartTime) this.formData.openBidStartTime = val // 开标时间
          /* 清空开标的时间*/
          this.formData.technicalOpenBidStartTime = '' // 商务技术开标时间(两步开标)
          this.formData.echnicalOpenBidStartTime = '' // 经济开标时间(两步开标)
        } else if (this.formData.isTwoBidOpening === '01') { // 两步开标
          // twoBidOpeningMethod 两步开标方式(开标顺序) 00:先开商务技术后开经济 01:先开经济后开商务技术
          if (this.formData.twoBidOpeningMethod === '00') { // 先开商务
            if (!this.formData.technicalOpenBidStartTime) this.formData.technicalOpenBidStartTime = val // 商务技术开标时间
            /* 清空开标的时间*/
            this.formData.openBidStartTime = '' // 开标时间
          } else if (this.formData.twoBidOpeningMethod === '01') { // 先开经济
            if (!this.formData.echnicalOpenBidStartTime) this.formData.echnicalOpenBidStartTime = val // 经济开标时间(两步开标)
            /* 清空开标的时间*/
            this.formData.openBidStartTime = '' // 开标时间
          }
        }
      }
    },
    /*
     * 开标时间/商务技术开标时间/经济开标时间-时间校验规则
     * return 布尔值 true 通过 false 不通过
     */
    openBidStartTimeChange() {
      const data = {
        isTwoBidOpening: this.formData.isTwoBidOpening, // 开标方式 00 一步开标法 01两步开标法
        twoBidOpeningMethod: this.formData.twoBidOpeningMethod, // 两步法开标顺序 00 先开商务技术后经济 01 先经济后商务技术
        openBidStartTime: this.formData.openBidStartTime, // 开标时间
        technicalOpenBidStartTime: this.formData.technicalOpenBidStartTime, // 商务技术开标时间
        economicOpenBidStartTime: this.formData.economicOpenBidStartTime // 经济开标时间
      }
      return this.toTheBidOpeningRule(data)//  开标时间及地点-tab页-开标时间
    },
    // 获取数组相同元素
    getArrEqual(arr1, arr2) {
      const newArr = []
      for (var i = 0; i < arr2.length; i++) {
        for (var j = 0; j < arr1.length; j++) {
          if (arr1[j].packId === arr2[i].packId) {
            newArr.push(arr1[j])
          }
        }
      }
      return newArr
    },
    // 获取数组相同元素
    getNoArrEqual(arr1, arr2) {
      var newArr = arr1.concat(arr2)
      for (var i = 0; i < newArr.length; i++) {
        for (var j = i + 1; j < newArr.length; j++) {
          if (newArr[i].packId === newArr[j].packId) {
            newArr.splice(j, 1)
            j--
          }
        }
      }
      return newArr
    }
  }
}
