<!--
  @description: 评标查看
  @author: 孙新满
  @routerPath: /bidding/projectDrive/evaluation
  @date： 2020-2-24 15:15:05
  isCanOperate: true可以操作 false不可以查看只有查看权限
-->
<template>
  <div style="position:relative">
    <div class="main">
      <template v-if="tenderBase.isCanOperate">
        <!--bidPlanType 招标计划类型:00“带招标方案”，01“自建项目-->
        <!--stageType 00预审 01后审-->
        <div v-if="!showTag && tenderBase.stageType==='01' && bidPlanType==='00'" class="mb10">
          <!--（00未推送、01已推送）-->
          <el-button v-if="pushWuziLogInfo==='00'" type="primary" :loading="handlePushLoading" @click="handlePushBidEvaluationReport">
            发送评标报告
          </el-button>
        </div>
      </template>
      <div v-if="showTag" class="progress">
        还未完成评标
      </div>
      <el-tag
        v-for="(tag,index) in fileList"
        v-else
        :key="index"
        :class="{'active':active===index}"
        size="medium"
        class="evaluationTag pointer"
      >
        <!--        <a v-if="tag.extend!=='pdf'" :href="tag.downLoadFileUrl">-->
        <!--          {{ tag.title }}.{{ tag.extend }}   <i class="el-icon-download" />-->
        <!--        </a>-->
        <span @click="tagClick(tag,index)">
          {{ tag.title }}.{{ tag.extend }}
        </span>
      </el-tag>
    </div>
    <pdf v-show="pdfUrl" :pdf-url="pdfUrl" />
  </div>
</template>

<script>
/* api接口 */
import { downLoadFileUrl, readImageRoot, getFileDetail, downLoadFile } from '@api/common/uploadCenter'
import { getEvaluationFiles } from '@api/bidding/evaluation'
import { bidEvaluationReport, getPushWuziLogInfo } from '@api/huanengwuzids'
import { getPlanType } from '@api/purchasePlan/pretcloudPurchasescheme'
import { download } from '@/assets/js/utils'// 下载文件流文件
/* 组件*/
import pdf from '@comp/common/pdf/pdf.vue'// pdf组件
export default {
  name: 'EvaluationProcess',
  components: {
    pdf // pdf组件
  },
  data() {
    return {
      handlePushLoading: false, // 发送评标报告按钮loading
      tenderBase: this.$store.getters.tenderBase, // 项目信息
      active: '', // 当前索引选中样式
      readImageUrl: readImageRoot, // 预览文件
      downLoadFileUrl: downLoadFileUrl, // 下载文件
      groupId: this.$store.getters.groupId, // 项目Id 包Id 阶段Id
      pdfUrl: '',
      fileList: [],
      showTag: false, // 显示评标报表数据变量控制
      systemSource: '', // 系统来源 00:新产品 01:hn
      bidPlanType: '', // 招标计划类型:00“带招标方案”，01“自建项目
      pushWuziLogInfo: '' // （00未推送、01已推送）
    }
  },
  created() {
    // 获取系统配置
    this.getSystemDecryptMethod()
    // 初始化
    this.getFile()// 获取评审报表
  },
  methods: {
    /*
      * 预览pdf
      * */
    tagClick(tag, index) {
      this.active = index
      this.pdfUrl = ''// 初始化url
      /* 当文件是pdf时*/
      if (tag.extend === 'pdf') {
        const url = this.readImageUrl + tag.path
        this.pdfUrl = encodeURIComponent(url)
      } else {
        const params = {
          fileId: tag.fileId,
          fileType: tag.fileType
        }
        this.$nextTick(() => {
          downLoadFile(params).then((res) => {
            download(res, tag.title + '.' + tag.extend)
          })
        })
      }
    },
    /*
      * 获取评审报表
      * */
    getFile() {
      const upLoadData = {
        bizId: '', // 主键Id
        fileType: 'file'// 文件类型
      }
      // 调用获取评审报表接口getEvaluationFiles，传参为stageId，如果接口状态返回0，并且res.data里面是有数据的，就调用获取文件详情接口，pdf默认需要显示在前面
      // 如果res.data里面没数据，就return，不往下执行程序了，并且把showTag置为ture,页面显示暂无数据
      getEvaluationFiles(this.groupId.stageId).then(res => {
        if (res.header.ret === '0') {
          if (!res.data.length) {
            this.showTag = true
            return
          } else {
            this.showTag = false
            upLoadData.bizId = res.data[0]
          }
          getFileDetail(upLoadData).then(response => {
            const pdfFileList = [] // pdfList集合
            const fileList = []// 其他文件集合
            response.data.forEach(item => {
              /* 拼接下载链接*/
              item.downLoadFileUrl = this.downLoadFileUrl + '?fileId=' +
                  item.fileId + '&fileType=' +
                  item.fileType
              /* pdf文件区分-通过后缀来判断*/
              if (item.extend === 'pdf' || item.extend === 'PDF') {
                pdfFileList.push(item)
              } else {
                fileList.push(item)
              }
            })
            /* 组装数据 pdf文件在前，其他文件在后*/
            this.fileList = [...pdfFileList, ...fileList]
            // 判断是否有文件&&是pdf，如果有则初始化展示第一个
            if (this.fileList.length > 0 && (this.fileList[0].extend === 'pdf' || this.fileList[0].extend === 'PDF')) {
              this.tagClick(this.fileList[0], 0)
            }
          }).catch(() => {
          })
        }
      })
    },
    /* 系统来源 00:新产品 01:hn*/
    getSystemDecryptMethod() {
      this.$store.dispatch('getSystemSourceConfig').then(() => {
        const systemSource = this.$store.getters.systemConfigSourceVo.systemSource
        if (systemSource === '01') {
          // 获取招标计划类型
          this.getBidPlanType()
          this.getPushWuziLogInfoConfig()
        }
      }).catch(() => {
      })
    },
    // 发送评标报告
    handlePushBidEvaluationReport() {
      this.handlePushLoading = true
      bidEvaluationReport(this.groupId.stageId).then(res => {
        this.$message.success(res.header.msg)
        this.handlePushLoading = false
      }).catch(() => {
        this.handlePushLoading = false
      })
    },
    // 获取招标计划类型 00“带招标方案”，01“自建项目
    getBidPlanType() {
      getPlanType(this.groupId.packId).then(res => {
        this.bidPlanType = res.data
      })
    },
    // 获取推送物资记录 （00未推送、01已推送）
    getPushWuziLogInfoConfig() {
      const pushType = 'PUSH-PBGG'
      getPushWuziLogInfo(this.groupId.packId, pushType).then(res => {
        this.pushWuziLogInfo = res.data
      }).catch(() => {
      })
    }
  }
}
</script>

<style scoped lang="less">
  @import '~@assets/style/common/public.less';
  @active:@orange;//当前节点
  .evaluationTag{
    margin-right: 16px;
    margin-bottom: 10px;
  }
  /*样式颜色边距修改-在上面的变量修改即可*/
  //当前选择的文件
  .active {
    color: @active;
  }
  .progress{
    font-size: 16px;
    text-align: center;
    color: #027bd0;
  }
</style>
