<template>
  <div id="demandSummary">
    <div v-if="isList">
      <el-card style="position: relative;">
        <el-form class="search_area" label-width="100px">
          <el-row :gutter="10">
            <el-col :span="1.5">
              <el-form-item label="行状态">
                <el-select multiple v-model="queryParams.rowStatus" size="mini" style="width: 200px" clearable>
                  <el-option v-for="dict in dict.type.sys_row_status" :key="dict.value" :label="dict.label" :value="dict.value">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="1.5">
              <el-form-item label="采购员">
                <el-select clearable size="mini" v-model="queryParams.buyer" @clear="cleanBuyer" @focus="chooseRefer('CONTACTS_PARAM', true, '采购员')" style="width: 200px">
                  <el-option v-for="item in personOptions" :key="item.id" :label="item.name" :value="item.code" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="1.5">
              <el-form-item label="品类">
                <el-select
                v-model="queryParams.materialClassifyFour"
                size="mini"
                multiple
                collapse-tags
                clearable
                @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '选择品类')"
                style="width: 200px"
                >
                <el-option v-for="item in classOptions" :key="item.id" :label="item.name" :value="item.id" />
              </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="1.5">
              <el-form-item label="生产厂家">
                <el-input
                v-model.trim="queryParams.manufacturer"
                size="mini"
                clearable
                style="width: 200px"
                />
              </el-form-item>
            </el-col>
            <!-- <el-col :span="1.5"> -->
              <!-- <el-form-item label="" label-width="20px"> -->
                <div style="position: absolute;top: 3px;right: 10px;">
                  <el-button type="primary" size="mini" @click="search">搜索</el-button>
                  <el-button size="mini" plain @click="reset">重置</el-button>
                </div>
              <!-- </el-form-item> -->
            <!-- </el-col> -->
          </el-row>

          <CollapseTransition>
          <div v-show="expanded">
            <el-row :gutter="10">
              <el-col :span="1.5">
                <el-form-item label="预测分类">
                  <el-select v-model="queryParams.forecastClassification" size="mini" style="width: 200px" clearable>
                    <el-option
                      v-for="dict in dict.type.predictive_classify" :key="dict.value" :label="dict.label" :value="dict.label">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="审核人">
                  <el-select clearable size="mini" v-model="queryParams.puManagerAuditor" @focus="chooseRefer('CONTACTS_PARAM', true, '审核人')" style="width: 200px">
                    <el-option v-for="item in auditOptions" :key="item.id" :label="item.name" :value="item.code" />
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="注册人">
                  <el-input
                  v-model.trim="queryParams.registrant"
                  size="mini"
                  clearable
                  style="width: 200px"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="业务类型">
                  <el-select v-model="queryParams.businessType" size="mini" style="width: 200px" clearable>
                    <el-option
                      v-for="dict in dict.type.sys_business" :key="dict.value" :label="dict.label" :value="dict.value">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>

            <el-row :gutter="10">
              <el-col :span="1.5">
                <el-form-item label="单据来源">
                  <el-select v-model="queryParams.billSource" size="mini" style="width: 200px" clearable>
                    <el-option
                      v-for="dict in dict.type.sys_bill_source" :key="dict.value" :label="dict.label" :value="dict.value">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="需求客户">
                  <el-select clearable size="mini" v-model="queryParams.customer" @focus="chooseRefer('CUSTOMER_PARAM', true, '需求客户')" style="width: 200px">
                    <el-option v-for="item in customerOptions" :key="item.id" :label="item.name" :value="item.id" />
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="供应仓库">
                  <el-select clearable size="mini" v-model="queryParams.lastWarehouse" @focus="chooseRefer('WAREHOUSE_PARAM', true, '供应仓库')" style="width: 200px">
                    <el-option v-for="item in lastWarehouseOptions" :key="item.id" :label="item.name" :value="item.id" />
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="供应库位">
                  <el-select clearable size="mini" v-model="queryParams.lastAllocation" @focus="chooseRefer('ALLOCATION_PARAM', true, '供应库位', queryParams.lastWarehouse)" style="width: 200px">
                    <el-option v-for="item in lastAllocationOptions" :key="item.id" :label="item.name" :value="item.id" />
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>

            <el-row :gutter="10">
              <el-col :span="1.5">
                <el-form-item label="物料编码">
                  <el-popover
                    placement="top-start"
                    width="200"
                    trigger="hover"
                    :content="queryParams.names">
                  <el-input slot="reference" clearable size="mini" v-model="queryParams.names" @clear="clearMaterial" style="width: 200px" @paste.native="pasteMe($event)">
                    <el-button size="mini" slot="append" icon="el-icon-more" @click="chooseMaterial"></el-button>
                  </el-input>
                  </el-popover>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="默认采购组织">
                  <el-select clearable size="mini" v-model="queryParams.purchaseOrg" @focus="chooseRefer('ORG_PARAM', true, '默认采购组织')" style="width: 200px">
                    <el-option v-for="item in orgOptions" :key="item.id" :label="item.name" :value="item.id" />
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="需求日期">
                  <el-date-picker
                    v-model="queryParams.demandDate"
                    type="date"
                    value-format="yyyy-MM-dd"
                    size="mini"
                    style="width: 200px"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="采购需求单号">
                  <el-input
                  v-model.trim="queryParams.code"
                  size="mini"
                  clearable
                  style="width: 200px"
                  />
                </el-form-item>
              </el-col>
            </el-row>

            <el-row :gutter="10">
              <el-col :span="1.5">
                <el-form-item label="审批结束日期">
                  <el-date-picker
                    v-model="queryParams.approverFinishTime"
                    type="date"
                    clearable
                    value-format="yyyy-MM-dd"
                    size="mini"
                    style="width: 200px"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="1.5">
                <el-form-item label="是否客户指定">
                  <el-select clearable v-model="queryParams.isCustomerSpecified" size="mini" style="width: 200px">
                    <el-option
                      v-for="item in options"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>

              <el-col :span="1.5">
                <el-form-item label="是否紧急需求">
                  <el-select clearable v-model="queryParams.isUrgency" size="mini" style="width: 200px">
                    <el-option
                      v-for="item in options"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          </CollapseTransition>
        </el-form>
        <el-divider class="lines"><i style="cursor: pointer;" :class="expanded?'el-icon-arrow-up':'el-icon-arrow-down'" @click="drop"></i></el-divider>
    
      
        <div class="btn_grooup">
          <el-button type="primary" size="mini" @click="editList">编辑</el-button>
          <el-button type="danger" size="mini" v-if="!lineDisable" @click="cancelEdit">取消编辑</el-button>
          <el-button type="success" size="mini" v-if="!lineDisable" @click="saveList">保存</el-button>
          <el-button type="primary" size="mini" v-if="lineDisable" @click="confirms">确认</el-button>
          <el-button type="primary" size="mini" v-if="lineDisable" @click="cancels">取消</el-button>
          <!-- <el-button type="primary" size="mini" v-if="lineDisable" @click="cancelAudit">取消审批</el-button> -->
          <el-button type="primary" size="mini" v-if="lineDisable" @click="audits">审核</el-button>
          <el-button type="primary" size="mini" v-if="lineDisable" @click="closeLine">行关闭</el-button>

          <el-button size="mini" type="primary" style="margin: 0 10px;" v-if="lineDisable" @click="handleCommand">
            导出
          </el-button>

          <!-- <el-button type="primary" size="mini">转请购</el-button> -->
        </div>
        <vxe-toolbar ref="xToolbar1" custom>
        </vxe-toolbar>

        <vxe-table
          id="toolbar_demo5"
          :custom-config="{storage: true, checkMethod: checkColumnMethod}"
          @resizable-change="resizableChangeEvent"
          v-loading="loading"
          :data="tableList" 
          :cell-style="{ borderColor: '#c0c0c0' }"
          :header-cell-style="{ borderColor: '#c0c0c0' }"
          class="exporttable"
          border
          show-summary
          :summary-method="getSummaries"
          highlight-current-row
          max-height="620"
          style="font-size: 12px;"
          :cell-class-name="cellClassName"
          @checkbox-all="selectAllEvent"
          @checkbox-change="handleSelectionChange"
          @cell-dblclick="doubleClick"
          ref="table"
          :checkbox-config="{trigger:'row', highlight: true, range: true}"
          :column-config="{resizable: true}"
        >
          <vxe-column type="checkbox" width="40" fixed="left"/>
          <vxe-column show-header-overflow show-overflow  title="序号" type="seq" align="center" width="50px" fixed="left"/>
          <!-- <vxe-column show-header-overflow show-overflow v-if="showColumn.status" title="行号" align="center" field="rowNo"/> -->
          <vxe-column show-header-overflow show-overflow v-if="showColumn.status" title="行状态" align="center" field="status" width="50px" :formatter="hangStatus"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.finalBuyQty" title="最终采购量" align="center" field="finalBuyQty" width="80px">
            <template slot-scope="scope">
                <el-input size="mini" :disabled="scope.row.status !== '1' || lineDisable" v-model="scope.row.finalBuyQty" @change="jilu(scope.$rowIndex)"/>
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.artificialAdjust" title="人工调整数" align="center" field="artificialAdjust" width="50px">
            <template slot-scope="scope">
              {{scope.row.artificialAdjust = scope.row.finalBuyQty - scope.row.suggestionPurchase}}
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.materialClassifyOneName" title="一级品类" align="center" field="materialClassifyOneName" width="80"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.materialCode" title="物料编码" align="center" field="materialCode" width="100px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.materialName" title="品名" align="center" field="materialName" width="100px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.specification" title="规格" align="center" field="specification" width="100px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.unit" title="单位" align="center" field="unit" width="50"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.manufacturer" title="生产厂家/代理人" align="center" field="manufacturer" width="100px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.demandNum" title="需求单位数" align="center" field="demandNum" width="50px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.netDemandNum" title="总最终净需求量" align="center" field="netDemandNum" width="80px">
            <template slot-scope="scope">
              {{scope.row.netDemandNum ? parseFloat(scope.row.netDemandNum).toFixed(2) : '0.00'}}
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.evensalesforyear" title="近1月月均需求" align="center" field="evensalesforyear" width="50">
            <template slot-scope="scope">
              {{scope.row.evensalesforyear ? parseFloat(scope.row.evensalesforyear).toFixed(2) : '0.00'}}
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.evensalesforthrmonth" title="近3月月均需求" align="center" field="evensalesforthrmonth" width="50">
            <template slot-scope="scope">
              {{scope.row.evensalesforthrmonth ? parseFloat(scope.row.evensalesforthrmonth).toFixed(2) : '0.00'}}
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.totalMonthlySales" title="总月销量" align="center" field="totalMonthlySales" width="50">
            <template slot-scope="scope">
              {{scope.row.totalMonthlySales ? parseFloat(scope.row.totalMonthlySales).toFixed(2) : '0.00'}}
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.demandCycle" title="需求可用周期" align="center" field="demandCycle" width="50px">
            <template slot-scope="scope">
              {{scope.row.demandCycle ? parseFloat(scope.row.demandCycle).toFixed(1) : '-'}}
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.dullQut" title="呆滞量" align="center" field="dullQut" width="50px">
            <template slot-scope="scope">
              {{parseFloat(scope.row.dullQut).toFixed(2)}}
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.buyPeriod" title="采购周期" align="center" field="buyPeriod" width="50px" />
          <vxe-column show-header-overflow show-overflow v-if="showColumn.centralPublicStock" title="中心公共库存" align="center" field="centralPublicStock" width="50"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.centralWarehouse" title="中心仓专属货位" align="center" field="centralWarehouse" width="50"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.eachWarehouseStock" title="各项目仓库存" align="center" field="eachWarehouseStock" width="50"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.commerceWarehouse" title="电商仓库" align="center" field="commerceWarehouse"  width="50" />
          <vxe-column show-header-overflow show-overflow v-if="showColumn.regionPublicStock" title="区域分仓公共库存" align="center" field="regionPublicStock" width="50"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.buyTransit" title="采购在途" align="center" field="buyTransit"  width="80px" />
          <vxe-column show-header-overflow show-overflow v-if="showColumn.lendTransit" title="借出在途" align="center" field="lendTransit"  width="80px" />
          <vxe-column show-header-overflow show-overflow v-if="showColumn.transferTransit" title="调拨在途" align="center" field="transferTransit"  width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.stockTotal" title="库存总计" align="center" field="stockTotal" width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.minPackage" title="最小包装量" align="center" field="minPackage"  width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.minOrder" title="最小订货量" align="center" field="minOrder"  width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.minBatch" title="最小批量" align="center" field="minBatch"  width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.modifyReason" title="修改原因" align="center" field="modifyReason" width="150px">
            <template slot-scope="scope">
                <el-input size="mini" :disabled="scope.row.status !== '1'|| lineDisable || scope.row.artificialAdjust == '0'" v-model="scope.row.modifyReason" @change="jilu(scope.$rowIndex)"/>
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.suggestionPurchase" title="建议采购量" align="center" field="suggestionPurchase"  width="80px"/>
          <!-- <vxe-column show-header-overflow show-overflow v-if="showColumn.status" title="建议净采购量" align="center" field="suggestBuyQty" width="100px"/> -->
          <vxe-column show-header-overflow show-overflow v-if="showColumn.materialClassifyTwoName" title="二级品类" align="center" field="materialClassifyTwoName" width="120px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.materialClassifyThreeName" title="三级品类" align="center" field="materialClassifyThreeName" width="120px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.materialClassifyFourName" title="四级品类" align="center" field="materialClassifyFourName" width="120px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.buyerName" title="采购员" align="center" field="buyerName" width="150px">
            <template slot-scope="scope">
                <el-input readonly :disabled="scope.row.status !== '1' || lineDisable" size="mini" v-model="scope.row.buyerName">
                  <el-button size="mini" :disabled="scope.row.status !== '1' || lineDisable" slot="append" icon="el-icon-more" @click="chooseSon(scope.$rowIndex, 'CONTACTS_PARAM', true, '明细采购员')"></el-button>
                </el-input>
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.purchaseOrgName" title="默认采购组织" align="center" field="purchaseOrgName" width="150px">
            <!-- <template slot-scope="scope">
                <el-input readonly :disabled="scope.row.status !== '1' || lineDisable" size="mini" v-model="scope.row.purchaseOrgName">
                  <el-button size="mini" :disabled="scope.row.status !== '1' || lineDisable" slot="append" icon="el-icon-more" @click="chooseSon(scope.$index, 'ORG_PARAM', true, '明细默认采购组织')"></el-button>
                </el-input>
            </template> -->
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.validityPeriod" title="有效期" align="center" field="validityPeriod"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.validityPeriodUnit" title="有效期单位" align="center" field="validityPeriodUnit" width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.businessType" title="业务类型" align="center" field="businessType" :formatter="formatterBusinessType"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.safetyStock" title="安全库存量" align="center" field="safetyStock" width="80px">
            <template slot-scope="scope">
              {{scope.row.safetyStock ? parseFloat(scope.row.safetyStock).toFixed(2) : '0.00'}}
            </template>
          </vxe-column>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.billSource" title="单据来源" align="center" field="billSource" :formatter="formatterSource"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.registrant" title="注册人" align="center" field="registrant" width="120px"/>
          <!-- <vxe-column title="可用量" align="center" field="qty"/> -->
          <vxe-column show-header-overflow show-overflow v-if="showColumn.buyDiscrepancy" title="总需与终采差异" align="center" field="buyDiscrepancy" width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.forecastClassification" title="集团预测分类" align="center" field="forecastClassification" width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.centerBinPossession" title="中心仓占有量" align="center" field="centerBinPossession" width="80px"/>
          <vxe-column show-header-overflow show-overflow v-if="showColumn.centralWarehouseAvailable" title="中心仓可用量" align="center" field="centralWarehouseAvailable" width="80px"/>
          <!-- <vxe-column title="物料类别" align="center" field="materialCategory" width="150px"/> -->
          <!-- <vxe-column title="业务部门" align="center" field="departmentName" width="150px"/> -->
          <!-- <vxe-column show-header-overflow show-overflow v-if="showColumn.status" title="需求单位" align="center" field="demandUnit"/> -->
          <vxe-column show-header-overflow show-overflow v-if="showColumn.puManagerAuditor" title="采购经理审核人" align="center" field="puManagerAuditor" width="120px"/>
          <vxe-column
          fixed="right"
          title="操作"
          align="center"
          width="50"
          >
          <template slot-scope="scope">
            <el-button type="text" size="mini" @click="check(scope.row)">查看</el-button>
          </template>
        </vxe-column>
        </vxe-table>

        <!-- <el-button size="mini" style="position: absolute;left: 20px;bottom: 20px;" @click="tols.open = true">隐藏列</el-button> -->

        <colTol :isVisible.sync="tols.open" @reDraw="reDraw" :showColumn.sync="showColumn" :arrs.sync="arrs"/>

        <el-pagination
          background
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="queryParams.pageNum"
          :page-sizes="[10, 20, 50, 100, 200, 500]"
          :page-size="50"
          layout="total, sizes, prev, pager, next, jumper"
          :total=total>
        </el-pagination>
      </el-card>
    </div>

    <Add v-model="isList" v-if="!isList" :pageStu="page" :disable="disable" :row="rowDetail" :query="queryParams" @refresh="search"/>
  
    <Refers ref="refer" @doSubmit="selectionsToInput" :single="true"/>

    <TreeRefers ref="tree" @doSubmit="selectionsToInput2" :single="true"/>

    <popDialog ref="materialRefer" @doSubmit="selectMaterial" :single="false" />
  </div>
</template>

<script>
import Add from './add'
import colTol from './colTol.vue'
import Refers from '@/components/Refers/refers.vue'
import TreeRefers from '@/components/Refers/treeRefer.vue'
import popDialog from '@/components/PopDialog/index.vue'
import CollapseTransition from '@/components/MyCollapse/collapse.vue'
// 用于物料参照框数据
import {getRefer} from '@/api/purchase/basic.js'
import {getSummaryList, auditSummary, cancelAudits, confirmSummary , cancelSummary , shutDownSummary, editSummaryList, exportList, exportItems } from '@/api/purchase/DemandSummary.js'
export default {
  name: 'demandSummary',
  dicts: ['sys_row_status', 'predictive_classify', 'sys_period_unit', 'sys_business', 'sys_bill_source'],
  components: {
    Add,
    colTol,
    CollapseTransition,
    Refers,
    TreeRefers,
    popDialog
  },
  data() {
    return {
      loading: true,
      showColumn: {},
      arrs:[],
      tols: {
        open: false
      },
      hangStatus(row) {
        switch (row.row.status) {
          case '0':
            return '需补货'
          case '1':
            return '待计划确认'
          case '2':
            return '计划已确认'
          case '3':
            return '计划已审核'
          case '4':
            return '行关闭'
          case '5':
            return '总供应可满足'
        }
      },
      formatterBusinessType(row) {
        switch (row.row.businessType) {
          case 'ZQBH':
            return '周期备货'
          case 'FXXQ':
            return '分销需求'
          case 'TSXQ':
            return '特殊采购需求'
          case 'BDXQ':
            return '补单需求'
          case 'JJXQ':
            return '紧急需求单'
          case 'XPXQ':
            return '新品需求'
          case 'HZBM':
            return '合作部门需求'
        }
      },
      formatterSource(row) {
        switch (row.row.billSource) {
          case '1':
            return '手工导入'
          case '2':
            return '按客户计算'
          case '3':
            return '按仓库计算'
          case '4':
            return '手工新增'
        }
      },
      expanded: false,
      // 页面配置
      isList: true,
      // 页面状态
      page: '',
      queryParams: {
        rowStatus: ['1'],
        buyer: '',
        buyerName: '',
        materialClassifyFour: [],
        manufacturer: '',
        forecastClassification: '',
        periodUnit: '',
        departmentName: '',
        puManagerAuditor: '',
        // zqgdh: '',
        code: '',
        registrant: '',
        businessType: '',
        billSource: '',
        customer: '',
        lastWarehouse: '',
        lastAllocation: '',
        materialCodeList: [],
        names: '',
        purchaseOrg: '',
        demandDate: '',
        approverFinishTime: '',
        isCustomerSpecified: '',
        isUrgency: '',
        pageNum: 1,
        pageSize: 50
      },
      personOptions: [],
      classOptions: [],
      deptOptions: [],
      auditOptions: [],
      customerOptions: [],
      lastWarehouseOptions: [],
      lastAllocationOptions: [],
      orgOptions: [],
      options: [{
        value: 'Y', label: '是',
      }, {
        value: 'N', label: '否'
      }],
      referCondition: {
        type: '',
        isPage: true,
        title: ''
      },
      tableList: [],
      total: 0,
      rowDetail: {},
      disable: false,
      lineDisable: true,
      ids: [],
      allSelection: [],
      // 子表index
      tableIndex: null,
      // referConditionMx: {
      //   type: '',
      //   isPage: true,
      //   title: ''
      // }
      // 用于保存临时记录修改行的数组
      record:[]
    }
  },
  created() {
    this.$nextTick(() => {
      // 手动将表格和工具栏进行关联
      this.$refs.table.connect(this.$refs.xToolbar1)
      this.getList(this.queryParams)
    })
  },
  methods: {
    checkColumnMethod ({ column }) {
      if (column.property === 'role') {
        return false
      }
      return true
    },
    resizableChangeEvent () {
      const columns = this.$refs.table.getColumns()
      const customData = columns.map(column => {
        return {
          width: column.renderWidth
        }
      })
      console.log(customData)
    },
    reDraw() {
      // this.$refs.table.doLayout();
    },
    // 单元格标红
    cellClassName({row, column, rowIndex, columnIndex}) {
      if(column.title == "需求可用周期" && Number(row.demandCycle) > 1.5 ) {
        return 'success-row';
      }
    },
    // 指定列合计
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '合计';
          return;
        }
        const values = data.map(item => Number(item[column.property]));
        if (column.property === 'demandNum' || column.property === 'netDemandNum' || column.property === 'artificialAdjust' || column.property === 'suggestBuyQty' || column.property === 'finalBuyQty') {
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr);
            if (!isNaN(value)) {
              return prev + curr;
            } else {
              return prev;
            }
          }, 0);
          sums[index];

        }
      });
      return sums
    },
    // 搜索
    search() {
      this.getList(this.queryParams)
    },
    reset() {
      this.queryParams = {
        rowStatus: ['1'],
        buyer: '',
        buyerName: '',
        materialClassifyFour: [],
        manufacturer: '',
        forecastClassification: '',
        periodUnit: '',
        departmentName: '',
        puManagerAuditor: '',
        // zqgdh: '',
        code: '',
        registrant: '',
        businessType: '',
        billSource: '',
        customer: '',
        lastWarehouse: '',
        lastAllocation: '',
        materialCodeList: [],
        names: '',
        purchaseOrg: '',
        demandDate: '',
        approverFinishTime: '',
        isCustomerSpecified: '',
        isUrgency: '',
        pageNum: 1,
        pageSize: 50
      }
      this.getList(this.queryParams)
    },
    getList(params){
      getSummaryList(params).then(res => {
        if (res.code === 200) {
          this.tableList = res.rows
          this.total = res.total
          let arrs = []
          this.$refs.table.$children.forEach(item => {
            if (item.label != undefined && item.prop != undefined) {
              arrs.push({
                label: item.label,
                prop: item.prop
              })
            }
          })
          this.arrs = arrs
          console.log('获取表头数据', arrs)
        }
      }).then(() => {
        // 合计不显示重绘
        this.$refs.table.doLayout()
        this.loading = false
      }).catch(err => {
        this.loading = false
      })
    },
    selectAllEvent({checked}) {
      const selection = this.$refs.table.getCheckboxRecords()
      console.log('选中', selection)
      this.allSelection = selection
      this.ids = selection.map(item => item.demandItemId)
      console.log('选中数组', this.ids.join())
    },
    handleSelectionChange({checked}) {
      const selection = this.$refs.table.getCheckboxRecords()
      console.log('选中', selection)
      this.allSelection = selection
      this.ids = selection.map(item => item.demandItemId)
      console.log('选中数组', this.ids.join())
    },
    handleCommand() {
      this.$modal.loading("正在导出数据，请稍后...");
      let param = this.queryParams
      param.pageSize = this.total
      exportItems(param).then(res => {
        this.$modal.closeLoading();
        const blob = new Blob([res], {
          type: "application/vnd.ms-excel;charset=UTF-8",
        });// 创建一个类文件对象：Blob对象表示一个不可变的、原始数据的类文件对象
        const downloadElement = document.createElement("a"); //创建a标签
        const href = window.URL.createObjectURL(blob); // 创建下载的链接
        // var temp = res.headers["content-disposition"]; 
        // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码）
        // var name = fileName.split(";")[0]; //切割成文件名
        downloadElement.href = href;  //下载地址
        downloadElement.download = '采购需求处理导出'+ this.parseTime(new Date().getTime()) + ".xlsx"; // 下载后文件名
        document.body.appendChild(downloadElement);
        downloadElement.click(); // 点击下载
        document.body.removeChild(downloadElement); // 下载完成移除元素
        window.URL.revokeObjectURL(href); // 释放blob对象
      })
    },
    check(row) {
      this.isList = false
      this.page = 'check'
      this.rowDetail = row
      this.disable = true
    },
    doubleClick({row}) {
      this.isList = false
      this.page = 'check'
      this.rowDetail = row
      this.disable = true
    },
    // 表格选中数据
    rowSelect(row) {
      // console.log(row)
      this.$refs.table.toggleCheckboxRow(row.row);
    },
    handleSizeChange(val) {
      console.log(`每页 ${val} 条`);
      this.queryParams.pageSize = val
      this.getList(this.queryParams)
    },
    handleCurrentChange(val) {
      console.log(`当前页: ${val}`);
      this.queryParams.pageNum = val
      this.getList(this.queryParams)
    },
    drop() {
      this.expanded = !this.expanded
    },
    editList() {
      console.log('Lists`````',this.tableList)
      this.lineDisable = false
    },
    cancelEdit() {
      this.lineDisable = true
      this.getList(this.queryParams)
    },
    saveList() {
      // console.log('记录',this.record)
      // 对记录的数据进行去重
      let newRecord = Array.from(new Set(this.record))
      // console.log('去重后的', newRecord)
      let changeList = newRecord.map(i => {
        return this.tableList[i]
      })
      // console.log('shuzu', changeList)
      editSummaryList(changeList).then(res => {
        if (res.code === 200) {
          this.$modal.notifySuccess("保存成功");
          this.lineDisable = true
          this.getList(this.queryParams)
        }
      })
    },
    confirms() {
      if (this.ids.length == 0) {
        this.$modal.notifyWarning("请选中至少一条数据");
      } else {
        confirmSummary(this.allSelection).then(res => {
          if (res.code === 200) {
            this.$modal.notifySuccess("确认成功");
            this.getList(this.queryParams)
          }
        })
      }
    },
    cancels() {
      if (this.ids.length == 0) {
        this.$modal.notifyWarning("请选中至少一条数据");
      } else {
        let param = this.ids.join()
        cancelSummary(param).then(res => {
          if (res.code === 200) {
            this.$modal.notifySuccess("取消成功");
            this.getList(this.queryParams)
          }
        })
      }
    },
    cancelAudit() {
      if(this.ids.length == 0) {
        this.$modal.notifyWarning("请选中至少一条数据");
      } else {
        let param = this.ids.join()
        cancelAudits(param).then(res => {
          if (res.code === 200) {
            this.$modal.notifySuccess("审核成功");
            this.getList(this.queryParams)
          }
        })
      }
    },
    audits() {
      if(this.ids.length == 0) {
        this.$modal.notifyWarning("请选中至少一条数据");
      } else {
        let param = this.ids.join()
        auditSummary(param).then(res => {
          if (res.code === 200) {
            this.$modal.notifySuccess("审核成功");
            this.getList(this.queryParams)
          }
        }).catch(err => {
          this.getList(this.queryParams)
        })
      }
    },
    // 行关闭
    closeitem() {
      let param = this.ids.join()
      shutDownSummary(param).then(res => {
        if (res.code === 200) {
          this.$modal.notifySuccess("操作成功");
          this.getList(this.queryParams)
        }
      })
    },
    closeLine() {
      if (this.ids.length == 0) {
        this.$modal.notifyWarning("请选中至少一条数据");
      } else {
        console.log('选中数组', this.allSelection)
        let item = this.allSelection.some(item => {
          return item.demandNum >= 2
        })
        if (item) {
          this.$modal.confirm('选中项有多个需求单位,是否确定关闭?').then(function () {
          }).then(() => {
            this.closeitem()
          }).catch(() => {})
        } else {
          this.closeitem()
        }
      }
    },
    // 搜索区参照选择
    chooseRefer(type, isPage, title, stordocId) {
      this.referCondition.type = type
      this.referCondition.isPage = isPage
      this.referCondition.title = title
      this.referCondition.stordocId = stordocId
      this.$refs.refer.init(this.referCondition)
    },
    selectionsToInput(selection) {
      if (this.referCondition.title == '采购员') {
        this.personOptions = selection
        this.queryParams.buyer = selection[0].code
        this.queryParams.buyerName = selection[0].name
      }
      if (this.referCondition.title == '业务部门') {
        this.deptOptions = selection
        this.queryParams.departmentName = selection[0].id
      }
      if (this.referCondition.title == '审核人') {
        this.auditOptions = selection
        this.queryParams.puManagerAuditor = selection[0].code
      }
      if (this.referCondition.title == '需求客户') {
        this.customerOptions = selection
        this.queryParams.customer = selection[0].id
      }
      if (this.referCondition.title == '供应仓库') {
        this.lastWarehouseOptions = selection
        this.queryParams.lastWarehouse = selection[0].id
      }
      if (this.referCondition.title == '供应库位') {
        this.lastAllocationOptions = selection
        this.queryParams.lastAllocation = selection[0].id
      }
      if (this.referCondition.title == '默认采购组织') {
        this.orgOptions = selection
        this.queryParams.purchaseOrg = selection[0].id
      }
      if (this.referCondition.title == '明细采购员') {
        console.log('选择进了吗',this.tableList)
        this.record.push(this.tableIndex)
        this.tableList[this.tableIndex].buyer = selection[0].code
        this.tableList[this.tableIndex].buyerName = selection[0].name
      }
      // if (this.referCondition.title == '明细默认采购组织') {
      //   console.log('选择进了吗',this.tableList)
      //   this.tableList[this.tableIndex].purchaseOrg = selection[0].id
      //   this.tableList[this.tableIndex].purchaseOrgName = selection[0].name
      // }
    },
    // 搜索区树形选择
    chooseTreeRefer(type, isPage, title) {
      this.referCondition.type = type
      this.referCondition.isPage = isPage
      this.referCondition.title = title
      this.$refs.tree.init(this.referCondition)
    },
    selectionsToInput2(selection) {
      this.classOptions = selection
      this.queryParams.materialClassifyFour = selection.map(item => {return item.id})
    },
    // 搜索区物料编码
    chooseMaterial() {
      this.$refs.materialRefer.init()
    },
    selectMaterial(selection) {
      console.log('选择的物料', selection)
      this.queryParams.materialCodeList = selection.map(item => {return item.code})
      console.log(this.queryParams.materialCodeList)
      this.queryParams.names = (selection.map(item => {return item.name})).join('，')
    },
    // 清空物料搜索框
    clearMaterial() {
      this.queryParams.names = ''
      this.queryParams.materialCodeList = []
    },
    // 粘贴来的数据
    async pasteMe(e) {
      this.$modal.loading("正在粘贴数据...");
      e.preventDefault() //阻止默认粘贴事件
      let source = e.clipboardData.getData("Text");
      console.log('source', source)
      // 这里区分普通复制和在表格内复制，判断是否包含','
      // 没找到,就通过表格复制
      if (source.indexOf(",") === -1) {
        // 首先对源头进行解析
        let rows = source.split("\r\n"); // 拆成一个数组
        // 数组去除空字符串
        rows = rows.filter(item => {
          return item && item.trim()
        })
        await getRefer({ type: 'MATERIAL_PARAM', materialCodeList: rows }).then(res => {
          this.$modal.closeLoading();
          if (res.code === 200) {
            let rowList = res.rows
            console.log('粘贴的', rowList)
            this.queryParams.materialCodeList = rowList.map(item => {return item.code})
            this.queryParams.names = (rowList.map(item => {return item.code})).join(',')
          }
        }).catch(err => {
          this.$modal.closeLoading();
        })
      } else {
        // 找到了,按,分割
        let codelist = source.split(',')
        console.log('按照逗号分隔', codelist)
        // 数组去除空字符串
        codelist = codelist.filter(item => {
          return item && item.trim()
        })
        this.queryParams.materialCodeList = codelist
        this.queryParams.names = codelist.join(',')
        this.$modal.closeLoading();
      }
    },
        // 明细行选择业务部门参照带出业务部门数据
    chooseSon(index, type, isPage, title) {
      this.tableIndex = index
      this.referCondition.type = type
      this.referCondition.isPage = isPage
      this.referCondition.title = title
      this.$refs.refer.init(this.referCondition)
    },
    jilu(index) {
      this.record.push(index)
    },
    // 清空搜索区采购员
    cleanBuyer() {
      this.queryParams.buyer = ''
      this.queryParams.buyerName = ''
    }
  }
}
</script>

<style lang="scss" scoped>
#demandSummary {
  padding: 12px;
  box-sizing: border-box;
  overflow-y: scroll;
}
.btn_grooup {
  margin-bottom: 10px;
  display: flex;
  justify-content: flex-end;
}
.lines {
  margin-top: 0;
}
.hang {
  margin: auto;
}
.hang ::v-deep .el-form-item__content{
  margin-left: 0px !important;
}
.el-pagination {
  margin-top: 10px;
  text-align: right;
}
::v-deep .vxe-body--row > td {
  border-right: none;
}
 ::v-deep .el-card .el-form-item {
  margin-bottom: 3px;
}
::v-deep .vxe-body--row .success-row {
  background-color: #ff8a8a!important;
}
</style>
<style>
.exporttable {
  border: solid 1px #c0c0c0;
 }
</style>