<!--
  @description:代理机构-项目管理--定标-中标结果公示
  @Modifier: 肖文龙
  @Modifier: hfx联调 2020/2/20-09:54
  @routerPath:/bidding/projectDrive/calibration/successfulPublicity-add
  @date: 2020/02/06 10:04
  isCanOperate: true可以操作 false不可以查看只有查看权限
-->
<template>
  <div class="main" style="margin-top:0px">
    <!--未制作标段-->
    <div class="makeTenderDocument_title">
      <p>未制作标段（包）</p>
      <div v-if="tenderBase.isCanOperate" class="fr">
        <span class="makeTenderDocument_number">已选择<span class="makeTenderDocument_orange">{{ seletunPackList.length }}</span>标段</span>
        <el-button v-if="systemSourceType==='01'" :loading="confirmLoading" type="primary" @click="makeSuccessfulPublicityClick('00')">
          制作中标结果公示
        </el-button>
        <el-button
          v-if="systemSourceType==='00'"
          :loading="confirmLoading"
          type="primary"
          @click="makeSuccessfulPublicityClick('01')"
        >
          生成中标结果公示
        </el-button>
      </div>
    </div>
    <unResultBulletinPackComp ref="unPackComp" @unPackChange="unPackChange" />
    <!--已制作标段-->
    <div>
      <div class="makeTenderDocument_title ">
        <p> 已制作标段（包）</p>
      </div>
      <hasResultBulletinPackComp ref="hasMakePack" @initData="initUnPackList" @revamped="revampedmake" />
    </div>
    <candidateDialog v-if="dialogData.visible" :dialog-data="dialogData" />
  </div>
</template>

<script>
import candidateDialog from './candidate-dialog'
/* api*/
import { saveResultBulletinPackage } from '@api/bidding/bidCalibration'
/* 组件*/
import unResultBulletinPackComp from './unResultBulletinPackComp'// 未制作候选组件
import hasResultBulletinPackComp from './hasResultBulletinPackComp'// 已制作中标结果组件
export default {
  name: 'SuccessfulPublicityAdd',
  components: {
    candidateDialog,
    unResultBulletinPackComp,
    hasResultBulletinPackComp
  },
  data() {
    return {
      dialogData: {
        visible: false
      },
      confirmLoading: false, // 控制按钮重复点击Loding
      systemSourceType: '', // 系统来源-是否使用工具制作公告
      tenderBase: this.$store.getters.tenderBase, // 项目信息
      tenderId: this.$route.query.id, // 项目Id
      seletunPackList: [], // 当前选择的标段
      // 提交信息
      formData: {
        bulletinEndTime: '', // 公示截止时间
        bulletinStartTime: '', // 公示开始时间
        packageStage: [], // 要制作的标段
        tenderId: '', // 项目id
        winBidResultBulletinId: '' // 结果公示主表id
      }
    }
  },
  created() {
    // 获取系统来源
    this.$store.dispatch('getSystemSource', 'resultBulletin').then(() => {
      // 系统来源-是否使用工具制作公告
      this.systemSourceType = this.$store.getters.systemSourceVo.systemSourceCode // 01 工具制作模式 00 平台制作模式
    }).catch(() => {
    })
  },
  methods: {
    // 调用未制作标段查询接口
    initUnPackList() {
      this.$refs.unPackComp.initData()
    },
    // 制作中标结果公示
    makeSuccessfulPublicityClick(type) {
      if (this.seletunPackList.length > 0) { // 已选标段（包）
        this.$confirm('确定制作已选标段（包）吗?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          confirmButtonClass: 'confirmBtn',
          cancelButtonClass: 'cancelBtn',
          type: 'warning'
        }).then(() => {
          this.confirmLoading = true
          this.makePack(type, '')// 制作候选人接口
        }).catch(() => {
        })
      } else {
        this.$message({
          message: '请选择要制作的标段（包）',
          type: 'warning'
        })
      }
    },
    // 修改已制作中标结果公示
    revampedmake(type, row) {
      this.$confirm('确定修改已选标段（包）吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        confirmButtonClass: 'confirmBtn',
        cancelButtonClass: 'cancelBtn',
        type: 'warning'
      }).then(() => {
        this.makePack(type, row)// 制作结果公示接口
      }).catch(() => {
      })
    },
    // 保存组装数据
    assemblyData(row) {
      const data = {
        ...this.formData,
        packageStage: [],
        tenderId: this.tenderId // 项目Id
      }
      /*
    * row 为空时是制作候选人公示
    * */
      if (!row) {
        // 已选标段
        this.seletunPackList.map(item => {
          data.packageStage.push({
            packId: item.packId, // 公告Id
            stageId: item.stageId// 阶段Id
          })
        })
      } else { // 修改
        data.winBidResultBulletinId = row.id// 结果公示Id
        data.packageStage.push({
          packId: row.packId, // 公告Id
          stageId: row.stageId// 阶段Id
        })
      }
      return data
    },
    /*
  * 制作结果公示接口
  * row 为空时是制作结果公示
  * */
    // 制作中标结果公示接口
    makePack(type, row) {
      const data = this.assemblyData(row)
      saveResultBulletinPackage(data).then(res => {
        this.dialogData.visible = true
        if (!row) {
          this.dialogData.type = '00' // 00 不显示制作工具
        }
        this.dialogData.row = res.data.winBidResultBulletinId
        if (type === '00') {
          window.open(`${res.data.openUrl}`, '_self')
        } else if (type === '01') {
          this.$router.push({
            path: '/bidding/projectDrive/calibration/makeResultBulletin-add',
            query: {
              ...this.$route.query,
              winBidResultBulletinId: res.data.winBidResultBulletinId
            }
          })
        }
        this.seletunPackList = []
        this.$refs.hasMakePack.initData(res.data.winBidResultBulletinId)// 已制作公示列表
        this.$refs.unPackComp.initData()
        this.confirmLoading = false
      }).catch(() => {
        this.confirmLoading = false
      })
    },
    // 选择未制作标段（包）
    unPackChange(val) {
      this.seletunPackList = val
    }
  }
}
</script>
<style lang="less" scoped>
  @import '~@assets/style/common/public.less';
  .makeTenderDocument_title{
    height: 50px;
    font-size: 14px;
    line-height: 49px;
    margin-bottom: 16px;
    border-bottom: 1px solid @cut-off;
    p{
      padding: 0 6px;
      font-weight: bold;
      box-sizing: border-box;
      float: left;
      border-bottom: 2px solid @hyacinthine;
    }
    .makeTenderDocument_number{
      .makeTenderDocument_orange{
        color: @orange;
        padding: 6px;
      }
      margin-right: 20px;
    }
  }
</style>
