<!--
  @description: 供应商信息列表
  @Modifier: haoFx
  @routerPath:
  @date: 2021-02-08-20:42
-->
<template>
  <div>
    <p class="page-title">
      {{ tabsActiveValue==='00'?'2':'1' }}.供应商信息列表
      <!--       <gx-button size="mini" :code="'001_006_012'" @click="handleQuerySupplier">
        供应商法人查询
      </gx-button>-->
    </p>
    <el-table
      ref="multipleTable"
      :data="tableOfferHallData"
      @selection-change="handleSelectionChange"
    >
      <el-table-column
        type="selection"
        width="50px"
        align="center"
      />
      <el-table-column
        type="index"
        label="序号"
        width="50px"
        align="center"
      />
      <el-table-column
        header-align="center"
        prop="supplierName"
        label="供应商名称"
        align="left"
        min-width="200px"
      />
      <!--      <el-table-column
        header-align="center"
        prop="partnerNo"
        label="供应商sap编码"
        align="center"
        min-width="140px"
      />-->
      <el-table-column
        header-align="center"
        prop="negRecordNumber"
        label="报价行项目数"
        align="right"
        min-width="120px"
      />
      <el-table-column
        header-align="center"
        prop="offerTotal"
        label="不含税总价（元）"
        align="right"
        min-width="140px"
      />
      <el-table-column
        header-align="center"
        prop="taxOfferTotal"
        label="含税总价（元）"
        align="right"
        min-width="140px"
      >
        <template slot-scope="scope">
          {{ scope.row.taxOfferTotal && numFilter(scope.row.taxOfferTotal) }}
        </template>
      </el-table-column>
      <!-- isShowReview 判断是否显示评标价 基准价 评审得分列 false不显示是 true显示 -->
      <template v-if="resultData.isShowReview">
        <el-table-column
          header-align="center"
          prop="evaluationPrice"
          label="评标价（元）"
          align="right"
          min-width="140px"
        />
        <el-table-column
          header-align="center"
          prop="finalScore"
          label="评审得分"
          align="right"
          min-width="140px"
        />
        <el-table-column
          header-align="center"
          prop="ranking"
          label="排名"
          align="right"
          min-width="80px"
        />
      </template>
      <el-table-column
        header-align="center"
        label="报价单号"
        width="180px"
        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-column
        header-align="center"
        label="报价明细"
        width="110px"
        align="center"
      >
        <template slot-scope="scope">
          <gx-link type="primary" size="mini" @click="viewQuotationDetails(scope.row)">
            [查看]
          </gx-link>
        </template>
      </el-table-column>
      <el-table-column
        v-if="resultData.isShowBeChosen"
        header-align="center"
        label="确认中选"
        width="100px"
        align="center"
      >
        <template slot-scope="scope">
          <el-checkbox
            v-model="scope.row.supplierRadio"
            :disabled="disabledData(scope.row )"
            @change="handleSupplierRadioChange(scope.row)"
          />
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页 -->
    <pagination :pagination-data="paginationData" @change="initData" />
    <offerSureDetailDialog ref="offerSureDetail" />
  </div>
</template>

<script>
import { querySupplierByDepartId } from '@/api/supplier/supplierBaseInfo' // 根据法人查询供应商信息
/*  公共组件 */
import offerSureDetailDialog from './offerSureDetail-dialog'
import pagination from '@comp/common/pagination/pagination' // 分页组件
/*  公共方法 */
import { paging, numFilter, cloneObject } from '@/assets/js/utils/index'
/* 公共方法*/
/*  混合开发-参数字段 */
import { ListMixin } from '@/mixins/ListMixin'
export default {
  name: 'SupplierInfoList',
  components: {
    offerSureDetailDialog,
    pagination // 分页
  },
  mixins: [ListMixin],
  props: {
    // 表格渲染数据
    tableData: {
      type: Object | Array,
      default: function() {
        return []
      }
    },
    // tab页选中状态 00 中选汇总 01 行项目报价明细
    tabsActiveValue: {
      type: String,
      default: ''
    },
    // 报价单点击事件（supplier 供应商信息）
    offerSingleClick: {
      type: Function,
      default: function(supplier) {}
    },
    // 其他辅助参数
    resultData: {
      type: Object,
      default: function() {
        return {
          isShowBeChosen: true, // 是否显示中选
          tableIsEdit: false, // 表头是否可编辑 false 可以编辑 true 不可以编辑
          isEdit: true, // 是否可编辑 false 可以编辑 true 不可以编辑
          isButton: false, // 是否隐藏 操作按钮 默认 不隐藏 false 不隐藏 true隐藏
          auditStatus: '', // 审核状态  null 未提交 00 已提交  01审核通过   02审核驳回
          isShowReview: false // 是否显示评标价 基准价 评审得分字段 布尔值 true显示 false不显示
        }
      }
    }
  },
  data() {
    return {
      tableOfferHallData: [], // 表格数据
      supplierList: [], // 已选中供应商信息
      supplierRadio: '' // 选中中选状态
    }
  },
  watch: {
    tableData: {
      handler(val, old) {
        // 如果新值和旧值相同，则不触发方法。
        if (val !== old) {
          this.initData()
        }
      },
      deep: true
    }
  },
  created() {
    this.initData()
  },
  methods: {
    numFilter, // 保留两位小数
    // 初始化
    initData() {
      const { tableData } = this.tableData
      tableData.forEach(supplier => {
        // 供应商单选框状态初始化
        supplier.supplierRadio = false
      })
      this.loadData()
    },
    // 查询供应商报价明细
    viewQuotationDetails(row) {
      this.$refs.offerSureDetail.getOfferSureDetail(row.id)
    },
    // 监听行项目禁用方法
    disabledData() {
      /*
    isEdit 采购结果审核是否可编辑 布尔值
    useStatus行项目是否释放   01 否 02 是
    isChange  01勾选  null/00 不可勾选
    采购结果编辑与不可编辑的情况:
    提交后待审核状态不可编辑
    审核通过不可编辑
    行项目释放过后不可编辑
    审核不通过可编辑
    行项目作废后可编辑
    **/
      if (!this.resultData.isEdit) {
        return true
      }
      /*  if (row.isChange !== '01') {
          return true
        }*/
    },
    // 确认中选
    handleSupplierRadioChange(row) {
      /*      this.supplierRadio = index
      this.supplierRadioRow = row
      this.$emit('supplierRadioInfo', row)*/
      this.tableOfferHallData.forEach(item => {
        // 排他,每次选择时把其他选项都清除
        if (item.id !== row.id) {
          item.supplierRadio = false
        } else {
          item.supplierRadio = true
        }
      })
      this.$forceUpdate()
      if (row.supplierRadio) {
        this.$emit('supplierRadioInfo', row)
      }
    },
    // 已勾选要打印的供应商信息
    handleSelectionChange(val) {
      this.supplierList = [...val]
    },
    // 导出时用的参数
    getExportSupplier() {
      const supplierList = this.supplierList// 取得已选中的报价供应商
      const offerIds = []// 供应商报价id
      this.supplierList.forEach(supplier => {
        offerIds.push(supplier.id)
      })
      return {
        offerIds, // 供应商报价id
        supplierList// 已选中的报价供应商
      }
    },
    // 分页
    loadData() {
      const { tableData } = this.tableData
      tableData.forEach(item => {
        if (item.isChange === '01') {
          item.supplierRadio = true
          this.$emit('supplierRadioInfo', item)
        }
      })
      this.paginationData.pageSize = 30
      this.tableOfferHallData = paging({}, cloneObject(tableData), this.paginationData)
    },
    // 供应商法人查询
    handleQuerySupplier() {
      const { tableData } = this.tableData
      const supplierIds = tableData.map(row => row.supplierId).join(',')
      querySupplierByDepartId(supplierIds).then(res => {
        this.$alert(res.data, '提示', {
          dangerouslyUseHTMLString: true,
          showClose: false
        })
      }).catch(() => {
      })
    }
  }
}
</script>

<style lang="less" scoped>

</style>
