<!--
  @description: 行项目报价信息列表组件
  @Modifier: haofengxian
  @routerPath:
  @date: 2021-2-4-13:59
-->
<template>
  <div class="mb16">
    <el-collapse v-model="activeNames">
      <el-collapse-item
        v-for="(item,index) in reviewList"
        :key="index"
        class="mb16"
        :class="item.checkbox?'collapse-item-bg':''"
        :name="index"
      >
        <template slot="title">
          <div class="detail-index">
            {{ index+1 }}
          </div>
          <div class="detail-list">
            <el-row>
              <el-col :span="6">
                物料编号：{{ item.productNo }}
              </el-col>
              <el-col :span="12">
                物料描述：
                <el-tooltip effect="dark" :content="item.purchaseDesc" placement="right-start">
                  <span class="purchaseDesc">{{ item.purchaseDesc }}</span>
                </el-tooltip>
              </el-col>
              <el-col :span="6">
                行项目号：{{ item.purchaseNo }}
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="6">
                预算单价：{{ item.unitBudget }}
              </el-col>
              <el-col :span="6">
                数量：{{ item.quantity }}
              </el-col>
              <el-col :span="6">
                历史报价：
                <gx-link :code="'001_006_011'" type="primary" @click.stop="historicalQuotation(item)">
                  查看
                </gx-link>
              </el-col>
              <el-col :span="6">
                税率：{{ filterDictText(taxRateList,item.taxRate.toString() ) }}
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="6">
                计量单位：{{ filterDictText(purchaseUnitList,item.unit ) }}
              </el-col>
              <el-col :span="6">
                采购单位：{{ item.purchaseDepartment }}
              </el-col>
              <!--              <el-col v-if="!resultData.isButton" :span="6">
                退回计划：
                <el-checkbox
                  v-model="item.checkbox"
                  :disabled="selectable(item)"
                  @change="handleSelectionChange"
                />
              </el-col>-->
            </el-row>
          </div>
        </template>
        <el-table
          :ref="'multipleTable'+index"
          :data="item.goOfferHallDetailVoList"
          style="width: 100%;margin-top: 6px;"
          height="''"
          highlight-current-row
        >
          <el-table-column
            header-align="center"
            prop="supplierName"
            label="供应商名称"
            min-width="200"
          />
          <el-table-column
            header-align="center"
            prop="taxUnitPrice"
            label="不含税单价（元）"
            align="right"
            width="180"
          />
          <el-table-column
            header-align="center"
            prop="singleTotalOfferPrice"
            label="不含税总价（元）"
            align="right"
            width="180"
          />
          <el-table-column
            header-align="center"
            prop="withoutTaxNitTotalPrice"
            label="含税总价（元）"
            width="180"
            align="right"
          />
          <el-table-column
            header-align="center"
            prop="offerRemarks"
            label="品牌/生产厂家"
            min-width="200"
          />
          <el-table-column
            header-align="center"
            label="报价单号"
            width="180"
            align="center"
          >
            <template slot-scope="scope">
              <el-link type="primary" size="mini" @click="offerSingleClick(scope.row)">
                {{ scope.row.negRecordCode }}
              </el-link>
            </template>
          </el-table-column>
        </el-table>
      </el-collapse-item>
    </el-collapse>
    <historicalQuotationDialog :dialog-data="historyDialogData" />
  </div>
</template>

<script>
/* 常用方法 */
import { mathSort, moneyFormat, filterDictText } from '@assets/js/utils'
import { procurementGroupMixins } from '../mixins/procurementGrounpMixins'
/* 组件 */
import historicalQuotationDialog from './historicalQuotation-dialog.vue' // 历史报价弹窗
export default {
  name: 'ProcurementResultTableComp',
  components: {
    historicalQuotationDialog // 历史报价弹窗
  },
  mixins: [procurementGroupMixins],
  props: {
    // 表格渲染数据
    tableData: {
      type: Object,
      default: function() {
        return []
      }
    },
    // 报价单点击事件（supplier 供应商信息）
    offerSingleClick: {
      type: Function,
      default: function(supplier) {}
    },
    // 其他辅助参数
    resultData: {
      type: Object,
      default: function() {
        return {
          tableIsEdit: false, // 表头是否可编辑 false 可以编辑 true 不可以编辑
          isEdit: true, // 是否可编辑 true 可编辑 false 不可编辑
          isButton: false, // 是否隐藏 操作按钮 默认 不隐藏 false 不隐藏 true隐藏
          auditStatus: ''// 审核状态  null 未提交 00 已提交  01审核通过   02审核驳回
        }
      }
    },
    /*
   * 选择行项目多选框事件
   * data(选择行项目id结合)
   * */
    materialsChange: {
      type: Function,
      default: function(data) {}
    }
  },
  data() {
    return {
      activeNames: [],
      // 历史报价弹窗数据
      historyDialogData: {
        dialog: false,
        productNo: '', // 行项目编号
        productName: '' // 物资名称
      },
      // 供应商列表
      supplierList: [],
      // 投标报价列表
      reviewList: [],
      selectionChangeData: '' // 退回计划选择的行项目信息
    }
  },
  mounted() {
    // 查询项目字典
    this.initWebTypeGroup()
    this.initData()
  },
  methods: {
    moneyFormat, // 千分位
    filterDictText, // 数据字典查询
    // 初始化
    initData() {
      const { tableData, tableList } = JSON.parse(JSON.stringify(this.tableData))
      tableList.forEach((reviewData) => {
        const { goOfferHallDetailVoList: supplierReviewList } = reviewData
        let offerHallDetailVoList = {}
        // 遍历供应商投标信息
        supplierReviewList.forEach(supplierReview => {
          // 遍历供应商
          tableData.forEach(supplier => {
            // 遍历供应商报价信息和供应商进行匹配
            if (supplier.id === supplierReview.offerId) {
              offerHallDetailVoList = {
                isNotChoice: supplierReview.isNotChoice, // 01 中标 00 未中标
                sureId: supplierReview.id, // 报价明细id
                ...supplier
              }
              supplierReview = Object.assign(supplierReview, offerHallDetailVoList)
            }
          })
        })
        if (reviewData.isChange === '01') {
          reviewData.checkbox = true
        }
      })
      this.reviewList = tableList// 投标报价列表
    },
    /*
        判断页面按钮单选复选框编辑方法
        reviewData 行数据
        */
    commonSubjectMatterStatus(reviewData) {
      // true可编辑
      if (reviewData.subjectMatterStatus === null || reviewData.subjectMatterStatus === '00') {
        return true
      }
      // 默认不可编辑
      return false
    },
    // 按条目自动选择最低报价
    selectLowestPrice() {
      const activeNamesArr = []
      // 遍历报价信息 冒泡排序
      this.reviewList.forEach((reviewData, reviewindex) => {
        const { goOfferHallDetailVoList } = reviewData
        // 遍历供应商投标信息
        let data = {}
        goOfferHallDetailVoList.forEach((supplierReview, index) => {
          // 释放和退回的行项目不可选中 useStatus 01 非释放非退回
          if (this.commonSubjectMatterStatus(reviewData)) {
            // 取最小值
            data = mathSort({
              type: 'min',
              arr: goOfferHallDetailVoList,
              key: 'singleTotalOfferPrice'
            })
          }
        })
        this.$refs[`multipleTable${reviewindex}`][0].setCurrentRow(data)
        activeNamesArr.push(reviewindex)
      })
      this.activeNames = activeNamesArr
    },
    // 历史报价弹窗
    historicalQuotation(row) {
      this.historyDialogData.productNo = row.productNo // 行项目编号
      this.historyDialogData.productName = row.productName // 物资名称
      this.historyDialogData.dialog = true
    },
    // 退回计划
    handleSelectionChange() {
      const data = []
      this.reviewList.filter((item) => {
        if (item.checkbox) {
          data.push(item.id)
        }
      })
      // 选择的行项目id集合
      const materialsIds = data.toString()
      this.materialsChange(materialsIds)
    },
    // 禁用已释放的行项目复选框
    selectable(row) {
      /*
        isEdit 采购结果审核是否可编辑 布尔值 true 可编辑 false 不可编辑
        useStatus行项目是否释放   01 否 02 是
        subjectMatterStatus行项目是否作废  00 是 其他值否
        采购结果编辑与不可编辑的情况:
        提交后待审核状态不可编辑
        审核通过不可编辑
        行项目释放过后不可编辑
        审核不通过可编辑
        行项目作废后可编辑
        **/
      if (!this.resultData.isEdit) {
        return true
      }
      if (row.subjectMatterStatus === '00' || row.subjectMatterStatus === null) {
        return false
      }
    }
  }
}
</script>

<style lang="less" scoped>
    /deep/ .el-collapse-item__header {
        height: auto;
        line-height: normal;
        background-color: #F5F7F9;
        padding: 5px 0;
    }

    .detail-index {
        padding: 0 5px;
        background-color: #007CCC;
        color: #fff;
        margin: 0 5px;
    }

    .detail-list {
        width: 90%;
    }

    .purchaseDesc {
        display: inline-block;
        width: 78%;
        vertical-align: sub;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    /deep/.collapse-item-bg{
      .el-collapse-item__header{
        background-color: #f6edf0!important;
      }
    }
</style>
