<!--
  @description: 查询招标结果（进度）信息
  @Modifier: haofengxian
  @routerPath: /statisticalAnalysis/bidServiceFeeList
  @date: 2020-7-14-16:30
-->
<template>
  <table-crud
    :menu="true"
    :search-form="searchForm"
    search-label-width="110px"
    @on-load="loadData"
  >
    <template v-slot:header>
      中标服务费统计信息
    </template>
    <template v-slot:search="search">
      <!--部门-->
      <el-form-item ref="tenderDepart" label="部门" prop="tenderDepart">
        <el-input
          v-model.trim="searchForm.tenderDepart"
          placeholder="部门"
          style="width:220px"
          @keyup.enter.native="search.onSearch"
        />
      </el-form-item>
      <!--项目经理-->
      <el-form-item ref="tenderManager" label="项目经理" prop="tenderManager">
        <el-input
          v-model.trim="searchForm.tenderManager"
          placeholder="项目经理"
          style="width:220px"
          @keyup.enter.native="search.onSearch"
        />
      </el-form-item>
      <el-form-item ref="packNo" label="标段（包）编号" prop="packNo">
        <el-input
          v-model.trim="searchForm.packNo"
          style="width:220px"
          placeholder="标段（包）编号"
          @keyup.enter.native="search.onSearch"
        />
      </el-form-item>
      <!-- 企业性质 -->
      <el-form-item label="企业性质">
        <el-select v-model="searchForm.isPriEnterprise" placeholder="请选择" style="width:228px">
          <el-option
            v-for="(item,index) in isPriEnterpriseList"
            :key="index"
            :label="item.typename"
            :value="item.typecode"
          />
        </el-select>
      </el-form-item>
      <!-- 是否欠费 -->
      <el-form-item label="是否欠费">
        <el-select v-model="searchForm.isDebt" placeholder="请选择" style="width:228px">
          <el-option
            v-for="(item,index) in isDebtList"
            :key="index"
            :label="item.typename"
            :value="item.typecode"
          />
        </el-select>
      </el-form-item>
      <!--余额是非充足-->
      <!--      <el-form-item ref="tenderMethod" label="余额是非充足" prop="tenderMethod">
          <el-select v-model="searchForm.tenderMethod" placeholder="请选择" style="width: 220px">
            <el-option
              v-for="(item,index) in bidTypeList"
              :key="index"
              :label="item.typename"
              :value="item.typecode"/>
          </el-select>
        </el-form-item>-->
      <el-form-item ref="winSupplierName" label="中标单位" prop="winSupplierName">
        <el-input
          v-model.trim="searchForm.winSupplierName"
          style="width:220px"
          placeholder="中标单位"
          @keyup.enter.native="search.onSearch"
        />
      </el-form-item>
      <!--中标通知书发出-->
      <el-form-item label="中标通知书发出">
        <el-date-picker
          v-model="searchForm.winNoticePushTime"
          type="daterange"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          style="width: 220px"
          @change="handleWinNoticePushTime"
        />
      </el-form-item>
      <!--服务费开标状态-->
      <el-form-item ref="invoiceStatus" label="服务费开标状态" prop="invoiceStatus">
        <el-select v-model="searchForm.invoiceStatus" placeholder="请选择" style="width: 220px">
          <el-option
            v-for="(item,index) in invoiceStatusList"
            :key="index"
            :label="item.typename"
            :value="item.typecode"
          />
        </el-select>
      </el-form-item>
      <!--开票日期-->
      <el-form-item label="开票日期">
        <el-date-picker
          v-model="searchForm.invoiceTime"
          type="daterange"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          style="width: 220px"
          @change="handleInvoiceTime"
        />
      </el-form-item>
    </template>
    <template slot="menuLeft">
      <el-row class="mb10 table-alert-info">
        <el-col>
          <el-button type="primary" @click="exportCurrentPage">
            导出当前页
          </el-button>
          <el-button type="primary" @click="exportAll">
            导出全部
          </el-button>
        </el-col>
        <el-col>
          <el-link :underline="false">
            所有中标金额<span class="sum_color">{{ moneyFormat(totalPrice.totalWinningResultPrice) }}</span>元
          </el-link>
          <el-link :underline="false">
            所有服务费金额<span class="sum_color">{{ moneyFormat(totalPrice.totalWinningServicePrice) }}</span>元
          </el-link>
          <el-link :underline="false">
            所有子账号余额<span class="sum_color">{{ moneyFormat(totalPrice.totalBailPrice) }}</span>元
          </el-link>
        </el-col>
        <el-col>
          <el-link :underline="false">
            单页中标金额<span class="sum_color">{{ moneyFormat(totalPrice.winningResultPricePage) }}</span>元
          </el-link>
          <el-link :underline="false">
            单页服务费金额<span class="sum_color">{{ moneyFormat(totalPrice.winningServicePricePage) }}</span>元
          </el-link>
          <el-link :underline="false">
            单页子账号余额<span class="sum_color">{{ moneyFormat(totalPrice.bailPricePage) }}</span>元
          </el-link>
        </el-col>
      </el-row>
    </template>
    <template v-slot:GXTable>
      <el-table
        ref="smallTable"
        v-loading="loading"
        :data="tableData"
      >
        <el-table-column
          type="index"
          label="序号"
          width="60px"
          align="center"
        />
        <el-table-column
          header-align="center"
          prop="tenderDepart"
          label="部门"
          width="170"
        />
        <el-table-column
          header-align="center"
          prop="tenderManager"
          label="项目经理"
          width="90"
        />
        <el-table-column
          header-align="center"
          prop="packNo"
          label="标段（包）编号"
          min-width="230"
        />
        <el-table-column
          header-align="center"
          prop="packName"
          label="标段（包）名称"
          min-width="230"
        />
        <el-table-column
          header-align="center"
          prop="winSupplierName"
          label="中标单位"
          min-width="230"
        />
        <el-table-column
          :formatter="formatPriEnterprise"
          align="center"
          prop="isPriEnterprise"
          label="企业性质"
          width="100"
        />
        <el-table-column
          :formatter="formatIsDebt"
          align="center"
          prop="isDebt"
          label="是否欠费"
          width="100"
        />
        <el-table-column
          header-align="center"
          prop="winNoticePushTime"
          label="中标通知书发出时间"
          width="130"
        >
          <template slot-scope="scope">
            {{ scope.row.winNoticePushTime && $Moment(scope.row.winNoticePushTime).format(momentDateTime) }}
          </template>
        </el-table-column>
        <el-table-column
          header-align="center"
          prop="winningResultPrice"
          label="中标金额（元）"
          align="right"
          width="110"
        />
        <el-table-column
          header-align="center"
          label="中标服务费金额（元）"
          align="right"
          prop="winningServicePrice"
          width="150"
        />
      </el-table>
    </template>
  </table-crud>
</template>
<script>
/* 接口*/
import { queryWinServiceFeePage, queryWinServiceFeePageExpert, getTotalPrice } from '@api/statisticalAnalysis'
/* 公用方法*/
import { download, moneyFormat, filterDictText } from '@/assets/js/utils'// 常用方法
/* 混合开发方法-参数字段*/
import { statisticalAnalysisGroupMixin } from '../mixins/statisticalAnalysisGroupMixin'
export default {
  name: 'TenderProjectList',
  mixins: [statisticalAnalysisGroupMixin],
  data() {
    return {
      /* 字典信息-start */
      isPriEnterpriseList: [], // 供应商企业性质
      /* 字典信息-end */
      moneyFormat: moneyFormat, // 金额添加千分位
      loading: true,
      // 金额总计
      totalPrice: {
        totalWinningResultPrice: 0, // 所有中标金额
        winningResultPricePage: 0, // 本页中标金额
        totalWinningServicePrice: 0, // 所有中标服务费金额
        winningServicePricePage: 0, // 本页中标服务费金额
        totalBailPrice: 0, // 所有子账户余额
        bailPricePage: 0 // 本页子账户余额
      },
      // 搜索
      searchForm: {
        isDebt: '', // 是否欠费
        isPriEnterprise: '', // 企业性质
        invoiceTime: '', // 开票时间
        winNoticePushTime: '', // 通知书发出日期
        invoiceEndTime: '', // 开票结束时间
        invoiceStartTime: '', // 开票开始时间
        invoiceStatus: '', // 开票状态: 00 未开票 01开票失败 02已开票
        packName: '', // 标段（包）名称
        packNo: '', // 标段编号
        tenderDepart: '', // 业务部门
        tenderManager: '', // 项目经理
        winNoticePushEndTime: '', // 通知书发出结束日期
        winNoticePushStartTime: '', // 通知书发出开始日期
        winSupplierName: ''// 中标单位
      },
      tableData: []
    }
  },
  created() {
    this.initGroup()// 获取字典方法
  },
  methods: {
    // 获取字典方法
    initGroup() {
      const data = [
        'isPriEnterprise' // 供应商企业性质
      ]
      this.$store.dispatch('getGroupType', data).then(res => {
        Object.keys(res.bidTypeData).forEach((key) => {
          this[key] = res.bidTypeData[key]
        })
      })
    },
    // 表格字典值替换文本-供应商企业性质
    formatPriEnterprise(row, column, cellValue) {
      return filterDictText(this.isPriEnterpriseList, cellValue)
    },
    // 导出当前页面
    exportCurrentPage() {
      // isOperation 00 导出当前页
      this.exportExcel({ ...this.searchForm, isOperation: '00' })
    },
    // 导出全部
    exportAll() {
      // isOperation 01 导出全部
      this.exportExcel({ isOperation: '01' })
    },
    // 导出招标结果Excel
    /*
      * 导出招标结果Excel
      * params 搜索条件
    */
    exportExcel(params) {
      queryWinServiceFeePageExpert(params).then(res => {
        download(res, '中标服务费信息统计表.xls')
      }).catch(() => {
      })
    },
    // 获取数据
    loadData(params, callback) {
      this.searchForm = params
      queryWinServiceFeePage(params).then(response => {
        this.loading = false
        this.tableData = response.data.records
        callback(response.data.total)
        // 中标服务费页面所有金额统计数据
        this.getTotalPrice(params)
      }).catch(() => {
        this.loading = false
      })
    },
    /*
      * 中标服务费页面所有金额统计数据
      * params 搜索条件
    */
    getTotalPrice(params) {
      getTotalPrice(params).then(res => {
        this.totalPrice = res.data
      })
    },
    // 处理搜索时间格式-开票日期
    handleInvoiceTime(val) {
      if (val) {
        this.searchForm.invoiceStartTime = this.$Moment(val[0]).format(this.momentSaveFormat)// 开始时间
        this.searchForm.invoiceEndTime = this.$Moment(val[1]).format(this.momentSaveFormat)// 结束时间
      }
    },
    // 处理搜索时间格式-通知书发出日期
    handleWinNoticePushTime(val) {
      if (val) {
        this.searchForm.invoiceStartTime = this.$Moment(val[0]).format(this.momentSaveFormat)// 开始时间
        this.searchForm.invoiceEndTime = this.$Moment(val[1]).format(this.momentSaveFormat)// 结束时间
      }
    }
  }
}
</script>
<style lang="less" scoped>

</style>
