<template>
  <div class="borderless" v-loading="pageLoading">
    <div class="customer-head">
      <div class="customer-back">
        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left" @click="backToList">返回列表 </el-button>
        <el-button v-if="form.id && pageIds.length" type="text" @click="lastPage">上一票</el-button>
        <el-button v-if="form.id && pageIds.length" type="text" @click="nextPage">下一票</el-button>
      </div>
      <div class="add-customer-btn">
        <!--<el-button  size="small" type="success" style="margin-right: 8px"-->
        <!--            :loading="saveLoading" >提取利润及放单-->
        <!--</el-button>-->
        <el-button size="small" style="margin-right: 8px" :loading="saveLoading" :disabled="!form.id" @click="previewreportfun">预 览 </el-button>
        <el-button
          size="small"
          style="margin-right: 8px"
          v-if="roleName.indexOf('admin') != -1"
          :loading="saveLoading"
          :disabled="!form.id"
          @click="DesignreportDialog = true"
          >报表设计
        </el-button>
        <el-button type="success" size="small" :disabled="!form.id" plain @click="newbillFun">新建账单 </el-button>
        <el-button
          size="small"
          type="danger"
          plain
          style="margin-right: 8px"
          :disabled="!form.id || editPower"
          v-if="form.status == 3"
          :loading="saveLoading"
          @click="finstlbillsRevokeReconciliationfun"
          >撤销对抵
        </el-button>
        <el-button
          size="small"
          type="success"
          plain
          style="margin-right: 8px"
          :disabled="!form.id || editPower"
          v-if="form.id && form.status == 0"
          :loading="saveLoading"
          @click="submit('确认对抵')"
          >确认对抵
        </el-button>
        <el-button
          size="small"
          type="primary"
          style="margin-right: 8px"
          v-if="editSave"
          :disabled="submitType || editPower"
          :loading="saveLoading"
          @click="editHandle"
          >编 辑
        </el-button>
        <el-button size="small" type="primary" style="margin-right: 8px" v-else :disabled="submitType" :loading="saveLoading" @click="editCustomer()"
          >保 存
        </el-button>
      </div>
    </div>

    <div style="margin: 55px 5px 0px 5px;'">
      <el-card class="box-card">
        <el-form :model="form" ref="form" label-width="90px" class="demo-ruleForm">
          <el-row>
            <el-row>
              <el-col :span="11">
                <el-form-item label="对抵单位" prop="corpCnName">
                  <el-col :span="10">
                    <search-query
                      :datalist="corpData"
                      :selectValue="form.corpCnName"
                      :clearable="true"
                      :disabled="editSave"
                      :filterable="true"
                      :remote="true"
                      :buttonIf="false"
                      placeholder="请选择对抵单位"
                      :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }"
                      @corpChange="corpChange($event, 'corpCnName')"
                      @remoteMethod="corpBcorpsListfun"
                      @corpFocus="corpBcorpsListfun"
                    >
                    </search-query>
                  </el-col>
                  <el-col :span="9">
                    <span style="padding-left: 20px"></span>
                    <el-input
                      style="width: 100%;"
                      v-model="form.corpEnName"
                      size="small"
                      autocomplete="off"
                      :disabled="editSave"
                      clearable
                      placeholder="对抵单位"
                    >
                    </el-input>
                  </el-col>
                  <el-col :span="5">
                    <el-checkbox
                      style="width: 100%;text-align: right"
                      size="medium"
                      :true-label="1"
                      :false-label="0"
                      :disabled="editSave"
                      v-model="form.corpIsSigned"
                      >已签约
                    </el-checkbox>
                  </el-col>
                </el-form-item>
              </el-col>
              <el-col :span="5">
                <el-form-item label="船 名" prop="vesselCnName">
                  <el-input
                    style="width: 100%;"
                    v-model="form.vesselCnName"
                    size="small"
                    autocomplete="off"
                    :disabled="editSave"
                    clearable
                    placeholder="请输入船名"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="5">
                <el-form-item label="航 次" prop="voyageNo">
                  <el-input
                    style="width: 100%;"
                    v-model="form.voyageNo"
                    size="small"
                    autocomplete="off"
                    :disabled="editSave"
                    clearable
                    placeholder="请输入航次"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="3">
                <el-form-item label="审核" prop="isApproved" label-width="50px">
                  <search-query
                    :datalist="allyesnoData"
                    :selectValue="form.isApproved"
                    :clearable="true"
                    :disabled="editSave"
                    :buttonIf="false"
                    :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey' }"
                    @corpChange="corpChange($event, 'isApproved')"
                    @corpFocus="allyesnoWorkDictsfun"
                  >
                  </search-query>
                </el-form-item>
              </el-col>
              <el-col :span="5">
                <el-form-item label="费用名称" prop="feeCnName">
                  <dic-select
                    v-model="form.feeCnName"
                    placeholder="费用名称"
                    key="id"
                    label="cnName"
                    url="/blade-los/bfees/listAll"
                    :filterable="true"
                    :multiple="true"
                    :collapseTags="true"
                    :disabled="editSave"
                    dataType="string"
                  ></dic-select>
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="业务编号" prop="businessNo">
                  <el-input
                    style="width: 100%;"
                    v-model="form.businessNo"
                    size="small"
                    autocomplete="off"
                    :disabled="editSave"
                    clearable
                    placeholder="请输入业务编号"
                  >
                  </el-input>
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="账单编号" prop="accountNo">
                  <el-input
                    style="width: 100%;"
                    v-model="form.accountNo"
                    size="small"
                    autocomplete="off"
                    :disabled="editSave"
                    clearable
                    placeholder="请输入账单编号"
                  >
                  </el-input>
                </el-form-item>
              </el-col>

              <el-col :span="4">
                <el-form-item label="MBL NO" prop="mblno">
                  <el-input
                    style="width: 100%;"
                    v-model="form.mblno"
                    size="small"
                    autocomplete="off"
                    :disabled="editSave"
                    clearable
                    placeholder="请输入MBL NO"
                  >
                  </el-input>
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="HBL NO" prop="hblno">
                  <el-input
                    style="width: 100%;"
                    v-model="form.hblno"
                    size="small"
                    autocomplete="off"
                    :disabled="editSave"
                    clearable
                    placeholder="请输入HBL NO"
                  >
                  </el-input>
                </el-form-item>
              </el-col>
              <el-col :span="3">
                <el-form-item label="对抵" prop="isChecked" label-width="50px">
                  <search-query
                    :datalist="isCheckedData"
                    :selectValue="form.isChecked"
                    :clearable="true"
                    :disabled="editSave"
                    :buttonIf="false"
                    :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey' }"
                    @corpChange="corpChange($event, 'isChecked')"
                    @corpFocus="allyesnoWorkDictsfun"
                  >
                  </search-query>
                </el-form-item>
              </el-col>
              <!--<el-col :span="4">-->
              <!--    <el-form-item label="对抵" prop="isChecked" label-width="50px">-->
              <!--        <search-query :datalist="allyesnoData"-->
              <!--                      :selectValue="form.isChecked"-->
              <!--                      :clearable="true"-->
              <!--                      :disabled="editSave"-->
              <!--                      :buttonIf="false"-->
              <!--                      :forParameter="{ key:'dictKey', label:'dictValue', value:'dictKey'}"-->
              <!--                      @corpChange="corpChange($event,'isChecked')"-->
              <!--                      @corpFocus="allyesnoWorkDictsfun" >-->
              <!--        </search-query>-->
              <!--    </el-form-item>-->
              <!--</el-col>-->
              <el-col :span="4">
                <el-form-item label="业务开始日期" prop="businessDateStart">
                  <el-date-picker
                    v-model="form.businessDateStart"
                    clearable
                    style="width: 100%;"
                    type="date"
                    size="small"
                    :disabled="editSave"
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd"
                    placeholder="请选择业务开始日期"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="业务结束日期" prop="businessDateEnd">
                  <el-date-picker
                    v-model="form.businessDateEnd"
                    clearable
                    style="width: 100%;"
                    type="date"
                    size="small"
                    :disabled="editSave"
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd"
                    placeholder="请选择业务结束日期"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="财务开始日期" prop="accountDateFrom">
                  <el-date-picker
                    v-model="form.accountDateFrom"
                    clearable
                    style="width: 100%;"
                    type="date"
                    size="small"
                    :disabled="editSave"
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd"
                    placeholder="请选择财务开始日期"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="财务结束日期" prop="accountDateTo">
                  <el-date-picker
                    v-model="form.accountDateTo"
                    clearable
                    style="width: 100%;"
                    type="date"
                    size="small"
                    :disabled="editSave"
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd"
                    placeholder="请选择财务结束日期"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="审核开始期间" prop="auditDateFrom">
                  <el-date-picker
                    v-model="form.auditDateFrom"
                    clearable
                    style="width: 100%;"
                    type="date"
                    size="small"
                    :disabled="editSave"
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd"
                    placeholder="请选择审核开始日期"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="审核结束期间" prop="auditDateTo">
                  <el-date-picker
                    v-model="form.auditDateTo"
                    clearable
                    style="width: 100%;"
                    type="date"
                    size="small"
                    :disabled="editSave"
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd"
                    placeholder="请选择审核结束日期"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
            </el-row>
            <expand :showBtn="true" :showSpan="true">
              <el-row>
                <el-col :span="5">
                  <el-form-item label="操作员" prop="updateUserName">
                    <search-query
                      :datalist="updateUserData"
                      :selectValue="form.updateUserName"
                      :clearable="true"
                      :disabled="editSave"
                      :buttonIf="false"
                      :filterable="true"
                      :remote="true"
                      :forParameter="{ key: 'id', label: 'name', value: 'name' }"
                      @corpChange="corpChange($event, 'updateUserName')"
                      @remoteMethod="updateUserUserGetListfun"
                      @corpFocus="updateUserUserGetListfun"
                    >
                    </search-query>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="BKNO" prop="bookingNo">
                    <el-input
                      style="width: 100%;"
                      v-model="form.bookingNo"
                      size="small"
                      autocomplete="off"
                      :disabled="editSave"
                      clearable
                      placeholder="请输入BKNO"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="协议签订人" prop="corpAccRemarks">
                    <el-input
                      style="width: 100%;"
                      v-model="form.corpAccRemarks"
                      size="small"
                      autocomplete="off"
                      :disabled="editSave"
                      clearable
                      placeholder="请输入协议签订人"
                    >
                    </el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="业务类型" prop="businessTypes">
                    <dic-select
                      v-model="form.businessTypes"
                      placeholder="业务类型"
                      key="id"
                      label="label"
                      keyValue="value"
                      :activateCreated="false"
                      :mockData="businessTypesData"
                      :filterable="true"
                      :multiple="true"
                      :collapseTags="true"
                      :disabled="editSave"
                      dataType="string"
                    ></dic-select>
                  </el-form-item>
                </el-col>
                <el-col :span="4">
                  <el-form-item label="发票" prop="isInvoice" label-width="50px">
                    <search-query
                      :datalist="isInvoiceData"
                      :selectValue="form.isInvoice"
                      :clearable="true"
                      :disabled="editSave"
                      :buttonIf="false"
                      :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey' }"
                      @corpChange="corpChange($event, 'isInvoice')"
                      @corpFocus="invoiceWorkDictsfun"
                    >
                    </search-query>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="收 / 付" prop="dc">
                    <search-query
                      :datalist="dcData"
                      :selectValue="form.dc"
                      :clearable="true"
                      :disabled="editSave"
                      :buttonIf="false"
                      placeholder="请选择收/付"
                      @corpChange="corpChange($event, 'dc')"
                    >
                    </search-query>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="币别" prop="curCode">
                    <search-query
                      :datalist="curCodeData"
                      :selectValue="form.curCode"
                      :clearable="true"
                      :disabled="editSave"
                      :buttonIf="false"
                      :filterable="true"
                      :remote="true"
                      placeholder="请选择币别"
                      :forParameter="{ key: 'id', label: 'code', value: 'code' }"
                      @corpChange="corpChange($event, 'curCode')"
                      @remoteMethod="getRateListfun"
                      @corpFocus="getRateListfun"
                    >
                    </search-query>
                  </el-form-item>
                </el-col>
                <el-col :span="10">
                  <el-form-item label="业务来源" prop="srcType">
                    <el-col :span="10">
                      <search-query
                        :datalist="srcTypeData"
                        :selectValue="form.srcType"
                        :clearable="true"
                        :disabled="editSave"
                        :buttonIf="false"
                        placeholder="请选择业务来源"
                        @corpChange="corpChange($event, 'srcType')"
                      >
                      </search-query>
                    </el-col>
                    <el-col :span="13" :offset="1">
                      <search-query
                        :datalist="srcData"
                        :selectValue="form.srcCnName"
                        :clearable="true"
                        :disabled="editSave"
                        :buttonIf="false"
                        :filterable="true"
                        :remote="true"
                        placeholder="请选择详情"
                        :forParameter="srcforParameter"
                        @corpChange="corpChange($event, 'srcCnName')"
                        @remoteMethod="salesuserGetListfun"
                      >
                      </search-query>
                    </el-col>
                  </el-form-item>
                </el-col>
                <el-col :span="4">
                  <el-form-item label="签收" prop="isSignfor" label-width="50px">
                    <search-query
                      :datalist="allyesnoData"
                      :selectValue="form.isSignfor"
                      :clearable="true"
                      :disabled="editSave"
                      :buttonIf="false"
                      :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey' }"
                      @corpChange="corpChange($event, 'isSignfor')"
                      @corpFocus="allyesnoWorkDictsfun"
                    >
                    </search-query>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="对抵单号" prop="checkNo">
                    <el-input
                      style="width: 100%;"
                      v-model="form.billNo"
                      size="small"
                      autocomplete="off"
                      :disabled="true"
                      clearable
                      placeholder="请输入对抵单号"
                    >
                    </el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="对抵日期" prop="billDate">
                    <el-date-picker
                      v-model="form.billDate"
                      clearable
                      style="width: 100%;"
                      type="date"
                      size="small"
                      :disabled="editSave"
                      value-format="yyyy-MM-dd HH:mm"
                      placeholder="请选择对抵日期"
                    >
                    </el-date-picker>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="限定金额" prop="limitedAmount">
                    <el-input
                      style="width: 100%;"
                      v-model="form.limitedAmount"
                      size="small"
                      autocomplete="off"
                      :disabled="editSave"
                      clearable
                      placeholder="请输入限定金额"
                    >
                    </el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="5">
                  <el-form-item label="备注" prop="remarks">
                    <el-input
                      style="width: 100%;"
                      v-model="form.remarks"
                      size="small"
                      autocomplete="off"
                      :disabled="editSave"
                      clearable
                      placeholder="请输入备注"
                    >
                    </el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="4">
                  <el-form-item label="销账" prop="isCleared" label-width="50px">
                    <search-query
                      :datalist="isClearedData"
                      :selectValue="form.isCleared"
                      :clearable="true"
                      :disabled="editSave"
                      :buttonIf="false"
                      :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey' }"
                      @corpChange="corpChange($event, 'isCleared')"
                      @corpFocus="allyesnoWorkDictsfun"
                    >
                    </search-query>
                  </el-form-item>
                </el-col>
              </el-row>
            </expand>

            <el-row>
              <el-col span="24">
                <div style="text-align: right">
                  <el-button size="small" type="primary" :disabled="editSave" :loading="saveLoading" @click="retrievalfun">检 索 </el-button>
                  <el-button size="small" :disabled="queryData.length > 0" @click="ResetFilter">重置条件 </el-button>
                </div>
              </el-col>
            </el-row>
          </el-row>
        </el-form>
      </el-card>

      <!-- <el-card style="margin-top: 10px">
       
      </el-card> -->

      <el-card style="margin-top: 10px">
        <el-tabs v-model="activeName" @tab-click="handleClick">
          <el-tab-pane label="查询结果" name="1">
            <queryfinstlbillsitems
              :queryData="queryData"
              :tableData="tableData"
              :form="form"
              :handleSelectionData="handleSelectionData"
              :brfalse="!editSave"
              @handleSelectionChange="addSelectionChange"
            >
              <template slot="menuLeft">
                <div style="display: flex;">
                  <el-button size="small" type="success" style="margin-right: 8px" :disabled="editSave" :loading="saveLoading" @click="allCell"
                    >确认选定行
                  </el-button>
                  <div class="bottomFlex" style="color: #81B337;margin-right: 20px;">
                    <span>应收:</span>
                    <span class="weightnum">￥{{ amountDSubSum || 0 }}</span>
                  </div>
                  <div class="bottomFlex" style="color: #81B337;margin-right: 20px;">
                    <span></span>
                    <span class="weightnum">${{ amountDSubUsdSum || 0 }}</span>
                  </div>
                  <div class="bottomFlex" style="color: #6BBCD1;margin-right: 20px;">
                    <span>应付:</span>
                    <span class="weightnum">￥{{ amountCSubSum || 0 }}</span>
                  </div>
                  <div class="bottomFlex" style="color: #6BBCD1;margin-right: 20px;">
                    <span></span>
                    <span class="weightnum">${{ amountCSubUsdSum || 0 }}</span>
                  </div>
                </div>
              </template>
            </queryfinstlbillsitems>
          </el-tab-pane>
          <el-tab-pane label="选定数据" name="2">
            <finstlbillsitems
              :tableData="tableData"
              :form="form"
              :handleSelectionData="handleSelectionData"
              :brfalse="!editSave"
              @handleSelectionChange="handleSelectionChange"
            >
              <template slot="menuLeft">
                <div style="display: flex;">
                  <el-button size="small" type="danger" style="margin-left: 10px" :disabled="editSave" :loading="saveLoading" @click="batchDeletefun"
                    >一键删除
                  </el-button>
                  <el-button size="small" type="primary" style="margin-left: 10px" :disabled="editSave" :loading="saveLoading" @click="editHandle"
                    >一键编辑
                  </el-button>
                  <div class="bottomFlex" style="color: #81B337;margin-right: 20px;">
                    <span>应收:</span>
                    <span class="weightnum">￥{{ form.amountDr || 0 }}</span>
                  </div>
                  <div class="bottomFlex" style="color: #81B337;margin-right: 20px;">
                    <span></span>
                    <span class="weightnum">${{ form.amountDrUsd || 0 }}</span>
                  </div>
                  <div class="bottomFlex" style="color: #6BBCD1;margin-right: 20px;">
                    <span>应付:</span>
                    <span class="weightnum">￥{{ form.amountCr || 0 }}</span>
                  </div>
                  <div class="bottomFlex" style="color: #6BBCD1;margin-right: 20px;">
                    <span></span>
                    <span class="weightnum">${{ form.amountCrUsd || 0 }}</span>
                  </div>
                </div>
              </template>
            </finstlbillsitems>
          </el-tab-pane>
        </el-tabs>
      </el-card>
    </div>

    <!--选择数据弹窗-->
    <el-dialog title="选择数据" class="el-dialogDeep" :visible.sync="retrievePopupsType" append-to-body width="70%" :close-on-click-modal="false">
      <div>
        <avue-crud :option="retrievePopupsOption" :data="retrievePopupsData" ref="retrievePopupsRef" id="out-table">
          <template slot="menu" slot-scope="{ row }">
            <el-button type="text" icon="" size="small" @click.stop="retrievePopupsSelect(row)">选择 </el-button>
          </template>
        </avue-crud>
      </div>
    </el-dialog>

    <!--设计报表弹窗-->
    <el-dialog
      append-to-body
      title="设计报表"
      class="el-dialogDeep"
      :visible.sync="DesignreportDialog"
      width="70%"
      :close-on-click-modal="false"
      :destroy-on-close="true"
      :close-on-press-escape="false"
      v-dialog-drag
    >
      <reports :id="form.id" :assemblyForm="form" businessValue="DZZX"></reports>
    </el-dialog>

    <!--预览-->
    <el-dialog
      title="打印"
      :visible.sync="selectPrintingDialog"
      append-to-body
      width="70%"
      :close-on-click-modal="false"
      :destroy-on-close="true"
      :close-on-press-escape="false"
      v-dialog-drag
    >
      <div>
        <reportformsList ref="reportformsList" @reportRadio="reportRadio"></reportformsList>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button size="small" @click="selectPrintingDialog = false">取 消</el-button>
      </span>
    </el-dialog>

    <!--报表组件-->
    <reportContainer ref="reportContainer"></reportContainer>
  </div>
</template>

<script>
import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
import { getWorkDicts } from "@/api/system/dictbiz";
import { getRateList } from "@/api/iosBasicData/rateManagement";
import { getList as userGetList } from "@/api/system/user";
import { getBvesselsList } from "@/api/iosBasicData/bvessels";
import { getBcorpslistByType } from "@/api/iosBasicData/bcorps";
import { getDeptLazyTree } from "@/api/system/dept";
import {
  finstlbillsConfirmReconciliation,
  finstlbillsConfirmSignFor,
  finstlbillsDetail,
  finstlbillslistAccBillV1,
  finstlbillsRevokeReconciliation,
  finstlbillsRevokeSignFor,
  finstlbillsSubmit,
  finstlbillsitemsRemove,
  finstlbillslistAccBillByCorp,
  finstlbillsConfirmInvoicing,
  finstlbillsRevokeInvoicing,
  batchConfirmReconciliation,
  batchRevokeReconciliation,
  confirmOffset,
  revokeOffset
} from "@/api/iosBasicData/finstlbills";
import expand from "@/components/basic-container/expand.vue";
import queryfinstlbillsitems from "@/views/iosBasicData/finstlbills/assembly/finstlbillsitems.vue";
import finstlbillsitems from "@/views/iosBasicData/finstlbills/assembly/finstlbillsitems2.vue";
import { dateFormat } from "@/util/date";
import reports from "@/views/iosBasicData/SeafreightExportF/bills/assembly/reports.vue";
import reportformsList from "@/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsList.vue";
import reportContainer from "@/views/iosBasicData/report-container/report-container.vue";
import { getList as getreportsList, reportsGetReportData } from "@/api/iosBasicData/reports";
import dicSelect from "@/components/dicSelect/main";
export default {
  components: { reportContainer, reportformsList, reports, SearchQuery, expand, finstlbillsitems, dicSelect, queryfinstlbillsitems },
  props: {
    // 编辑还是保存
    editSave: {
      type: Boolean,
      default: true
    },
    pageIds: {
      type: Array, // 指定 prop 的类型为 Array
      default: () => [] // 提供一个默认值，这里使用函数形式返回一个空数组
    }
  },
  data() {
    return {
      amountDSubSum: 0,
      amountDSubUsdSum: 0,
      amountCSubSum: 0,
      amountCSubUsdSum: 0,
      activeName: "1",
      retrievePopupsType: false, // 弹窗开启关闭
      retrievePopupsData: [], // 选择弹窗数据
      retrievePopupsOption: {
        border: true,
        calcHeight: 30,
        tip: false,
        height: "auto",
        index: true,
        addBtn: false,
        viewBtn: false,
        delBtn: false,
        editBtn: false,
        refreshBtn: false,
        columnBtn: false,
        menuWidth: "60",
        column: [
          {
            label: "客户中文名",
            prop: "cnName",
            overHidden: true
          },
          {
            label: "客户英文文名",
            prop: "cnName",
            overHidden: true
          }
        ]
      },
      DesignreportDialog: false, // 设计报表弹窗
      selectPrintingDialog: false, // 预览报表
      statusType: false, // 确认发票
      tableData: [],
      queryData: [],
      addData: [],
      pageLoading: false, // 全屏加载动画
      saveLoading: false, // 按钮动画
      // 绑定的数据
      form: {
        billDate: dateFormat(new Date(), "yyyy-MM-dd") + " 00:00", // 对抵日期 默认 当天
        isApproved: "0",
        isSignfor: "0",
        isCleared: null, // 销账
        isChecked: "0",
        isInvoice: "0",
        accountDate: [],
        approvedDate: []
      },
      handleSelectionData: [], // 表格选择的数据
      corpData: [], // 对抵单位 数据
      allyesnoData: [], // 全部是否字典数据
      isCheckedData: [], // 对抵状态字典数据
      isClearedData: [], // 销项
      isInvoiceData: [], // 发票字典
      // 收 / 付
      dcData: [
        {
          label: "收",
          value: "D"
        },
        {
          label: "付",
          value: "C"
        }
      ],
      curCodeData: [], // 币别
      updateUserData: [], // 操作员
      srcTypeData: [
        {
          label: "公司",
          value: "OWN"
        },
        {
          label: "代理",
          value: "AGENT"
        },
        {
          label: "业务员",
          value: "SALES"
        }
      ], // 业务来源
      srcData: [], // 业务来源数据
      srcforParameter: {},
      // 业务类型
      businessTypesData: [
        {
          label: "海运出口",
          value: "SE"
        },
        {
          label: "海运进口",
          value: "SI"
        }
      ],
      submitType: false, // 是否提交
      roleName: [], // 当前的角色权限
      saberUserInfo: {}, // 当前登录人信息
      editPower: false // 当前是否可以编辑
    };
  },
  created() {
    this.roleName = localStorage.getItem("roleName").split(",");
    // 获取当前登录人个人信息
    this.saberUserInfo = JSON.parse(localStorage.getItem("saber-userInfo")).content;
    this.allyesnoWorkDictsfun(); // 获取 字典数据
    this.invoiceWorkDictsfun(); // 获取 发票的数据
  },
  methods: {
    lastPage() {
      if (this.pageIds.length) {
        const index = this.pageIds.indexOf(this.form.id);
        if (index == 0) {
          return this.$message.error("没有上一票了");
        }
        const lastIndex = index - 1;
        // if (this.form.id) {
        //     this.unLock({
        //         moduleName: "SE",
        //         tableName: "SE_order",
        //         billId: this.form.id,
        //         billNo: this.form.mblno
        //     });
        // }
        this.finstlbillsDetailfun(this.pageIds[lastIndex]);
      }
    },
    nextPage() {
      if (this.pageIds.length) {
        const index = this.pageIds.indexOf(this.form.id);
        if (this.pageIds[this.pageIds.length - 1] == this.form.id) {
          return this.$message.error("没有下一票了");
        }
        const nextIndex = index + 1;
        // if (this.form.id) {
        //     this.unLock({
        //         moduleName: "SE",
        //         tableName: "SE_order",
        //         billId: this.form.id,
        //         billNo: this.form.mblno
        //     });
        // }
        this.finstlbillsDetailfun(this.pageIds[nextIndex]);
      }
    },
    // 打印
    reportRadio(val) {
      // 获取报表数据
      reportsGetReportData({
        billId: this.form.id,
        reportCode: val.classifyCode,
        groupCode: val.groupCode,
        type: "DZZX"
      }).then(res => {
        this.handleReportPreview(val.url, res.data.data.data);
      });
    },
    // 报表预览
    previewreportfun() {
      getreportsList(1, 10, {
        businessType: "DZZX"
        // classifyCode:'结算中心',
        // groupCode:'付费结算'
      }).then(res => {
        if (res.data.data.records.length == 1) {
          this.reportRadio(res.data.data.records[0]);
        } else {
          this.saveLoading = true;
          this.selectPrintingDialog = true;
          this.saveLoading = false;
          let page = {
            pageSize: 10,
            currentPage: 1,
            total: 0
          };
          this.$nextTick(() => {
            this.$refs.reportformsList.onLoad(page, {
              businessType: "DZZX"
              // classifyCode:'结算中心',
              // groupCode:'付费结算'
            });
          });
        }
      });
    },
    finstlbillsRevokeReconciliation,
    // 下拉回调
    corpChange(value, name) {
      // 对抵单位
      if (name == "corpCnName") {
        if (!value) {
          this.$set(this.form, "corpId", "");
          this.$set(this.form, "corpCnName", "");
          this.$set(this.form, "corpEnName", "");
          this.$set(this.form, "corpArgreementNo", "");
        }
        for (let item of this.corpData) {
          if (item.cnName == value) {
            this.$set(this.form, "corpId", item.id);
            this.$set(this.form, "corpCnName", item.cnName);
            this.$set(this.form, "corpEnName", item.enName);
            this.$set(this.form, "corpArgreementNo", item.enName);
          }
        }
      }
      // 业务来源
      else if (name == "srcType") {
        if (!value) {
          this.$set(this.form, "srcType", "");
          return;
        }
        this.$set(this.form, name, value);
        if (value == "OWN") {
          this.srcforParameter = { key: "id", label: "title", value: "title" };
          this.ownDeptLazyTreefun();
        } else if (value == "AGENT") {
          this.srcforParameter = { key: "id", label: "cnName", value: "cnName" };
          this.srcBcorpsListfun();
        } else if (value == "SALES") {
          this.srcforParameter = { key: "id", label: "name", value: "name" };
          this.salesuserGetListfun();
        } else {
        }
      }
      // 业务来源选择
      else if (name == "srcCnName") {
        if (!value) {
          this.$set(this.form, "srcId", "");
          this.$set(this.form, "srcCnName", "");
          this.$set(this.form, "srcEnName", "");
          return;
        }
        for (let item of this.srcData) {
          if (item[this.srcforParameter.value] == value) {
            if (this.form.srcType == "OWN") {
              // 公司
              this.$set(this.form, "srcId", item.id);
              this.$set(this.form, "srcCnName", item.title);
              this.$set(this.form, "srcEnName", item.title);
            } else if (this.form.srcType == "SALES") {
              // 业务员
              this.$set(this.form, "srcId", item.id);
              this.$set(this.form, "srcCnName", item.name);
              this.$set(this.form, "srcEnName", item.name);
            } else if (this.form.srcType == "AGENT") {
              // 代理
              this.$set(this.form, "srcId", item.id);
              this.$set(this.form, "srcCnName", item.cnName);
              this.$set(this.form, "srcEnName", item.enName);
            } else {
            }
          }
        }
      }
      // 操作员
      else if (name == "updateUserName") {
        for (let item of this.updateUserData) {
          if (item.name == value) {
            this.$set(this.form, "updateUser", item.id);
            this.$set(this.form, "updateUserName", item.name);
          }
        }
      } else {
        this.$set(this.form, name, value);
      }
    },
    // 编辑
    editHandle() {
      if (this.form.status != 3) {
        this.editSave = false;
      }
    },
    // 保存
    editCustomer(type) {
      // 对抵单位
      if (!this.form.corpId) {
        this.$message.warning("请选择对抵单位");
        return;
      }
      if (!this.form.id) {
        // 是否选择从表数据
        if (this.addData.length == 0) {
          this.$message.warning("请选择对抵数据");
          return;
        }
      }
      // for (let item of this.handleSelectionData) {
      //   if (!item.currentStlCurCode) {
      //     this.$message.warning("请选择本次结算币种");
      //     return;
      //   }
      // }
      this.form.billNoFormat = "DCDD";
      this.form.businessTypeCode = "DCDD";
      this.form.businessType = "DCDD"; // 对抵单
      this.form.accountDateFrom = this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.accountDateTo = this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.auditDateFrom = this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null;
      this.form.auditDateTo = this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateEnd = this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateStart = this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null;
      this.form.billDate = this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null;
      let addList = this.addData.map((item, index) => {
        item.lineNo = Number(index) + 1;
        item.pType = item.businessType;
        item.accDate = item.billDate;
        if (item.currentStlCurCode == "CNY") {
          item.currentStlAmount = item.currentStlAmountRMB;
        } else {
          item.currentStlAmount = item.currentStlAmountUSD;
        }
        delete item.id;
        delete item.accountDc;
        return item;
      });

      this.form.finStlBillsItemsList = this.tableData.concat(addList);
      this.form.finStlBillsItemsList = this.form.finStlBillsItemsList.map((item, index) => {
        if (item.currentStlCurCode == "CNY") {
          item.currentStlAmount = item.currentStlAmountRMB;
        } else {
          item.currentStlAmount = item.currentStlAmountUSD;
        }
        return item;
      });
      this.saveLoading = true; // 加载动画
      this.pageLoading = true;
      // 判断是单独点击保存还是点击确认对抵
      if (type == "toAddEdit") {
        finstlbillsSubmit(this.form)
          .then(res => {
            this.$message.success("操作成功");
            this.$emit(type);
          })
          .finally(() => {
            this.pageLoading = false;
            this.saveLoading = false;
          });
      } else if (type == "确认对抵") {
        confirmOffset(this.form)
          .then(res => {
            this.$message.success("操作成功");
            this.finstlbillsDetailfun(this.form.id);
          })
          .catch(() => {
            this.pageLoading = false;
            this.saveLoading = false;
          });
      } else {
        finstlbillsSubmit(this.form)
          .then(res => {
            this.$message.success("操作成功");
            this.finstlbillsDetailfun(res.data.data.id, type);
          })
          .finally(() => {
            this.pageLoading = false;
            this.saveLoading = false;
          });
      }
    },
    newbillFun() {
      if (this.submitType) {
        this.$emit("toAddEdit");
      } else {
        this.$confirm("是否需要保存?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        })
          .then(() => {
            this.editCustomer("toAddEdit");
          })
          .catch(() => {
            this.$emit("toAddEdit");
          });
      }
    },
    submit(type) {
      // for (let item of this.tableData) {
      //   if (item.isChecked != 1) {
      //     return this.$message.error("明细数据未完成对抵!");
      //   }
      // }
      this.$confirm("确定进行确认对抵操作?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          this.editCustomer(type);
        })
        .catch(() => {
          this.pageLoading = false;
          this.saveLoading = false;
        });
    },
    // 详情接口
    finstlbillsDetailfun(id, type) {
      this.pageLoading = true;
      finstlbillsDetail(id)
        .then(res => {
          this.form = res.data.data;
          if (type == "query") {
            this.finstlbillslistAccBillV1fun();
          }
          if (
            this.roleName.indexOf("admin") == -1
              ? this.roleName.indexOf("允许修改他人业务") == -1
                ? this.saberUserInfo.user_id != this.form.createUser
                : false
              : false
          ) {
            this.editPower = true;
          } else {
            this.editPower = false;
          }
          if (this.form.status == 3) {
            this.editSave = true;
          }
          // 判断是否已经提交过了
          if (this.form.billStatus == 1) {
            this.submitType = true;
          } else {
            this.submitType = false;
          }
          this.tableData = this.form.finStlBillsItemsList.map(item => {
            if (item.curCode == "CNY") {
              this.$set(item, "amountRMB", item.amount);
              this.$set(item, "currentInvoiceAmountRMB", Number(item.currentInvoiceAmount ? item.currentInvoiceAmount : 0));
              this.$set(item, "unsettledAmountRMB", Number(item.amount ? item.amount : 0));
              this.$set(item, "currentStlAmountRMB", Number(item.currentStlAmount ? item.currentStlAmount : 0));
              this.$set(item, "currentStlAmountUSD", Number(0));
            } else {
              this.$set(item, "amountUSD", item.amount);
              this.$set(item, "currentInvoiceAmountUSD", item.currentInvoiceAmount);
              this.$set(item, "unsettledAmountUSD", Number(item.amount ? item.amount : 0));
              this.$set(item, "currentStlAmountUSD", Number(item.currentStlAmount ? item.currentStlAmount : 0));
              this.$set(item, "currentStlAmountRMB", Number(0));
            }
            this.$set(item, "costDate", []);
            return item;
          });
          this.form.isSignfor = this.form.isSignfor + "";
          this.form.isApproved = this.form.isApproved + "";
          this.form.isCleared = this.form.isCleared + "";
          this.form.isChecked = this.form.isChecked + "";
          this.form.billStatus = this.form.billStatus + "";
          this.form.isInvoice = this.form.isInvoice + "";
        })
        .finally(() => {
          this.pageLoading = false;
          this.saveLoading = false;
        });
    },
    // 重置条件
    ResetFilter() {
      this.form = {
        billDate: dateFormat(new Date(), "yyyy-MM-dd") + " 00:00", // 对抵日期 默认 当天
        isApproved: "0",
        isSignfor: "0",
        isCleared: null, // 销账
        isChecked: "0",
        isInvoice: "0",
        accountDate: [],
        approvedDate: []
      };
    },
    // 弹窗选择
    retrievePopupsSelect(row) {
      // this.form = row
      this.$set(this.form, "corpId", row.id);
      this.$set(this.form, "corpCnName", row.cnName);
      this.$set(this.form, "corpEnName", row.enName);
      this.$set(this.form, "corpArgreementNo", row.enName);
      this.retrievePopupsType = false;
      this.finstlbillslistAccBillV1fun();
    },
    // 检索
    retrievalfun(type) {
      // 判断是否有对抵单位
      if (!this.form.corpId && (this.form.businessNo || this.form.accountNo || this.form.hblno || this.form.mblno)) {
        console.log("新接口");
        this.finstlbillslistAccBillByCorpfun();
      } else {
        if (!this.form.corpId) {
          return this.$message.warning("请填写对抵单位");
        }
        console.log("原来的接口");
        this.finstlbillslistAccBillV1fun("检索");
      }
    },
    // 检索出的弹窗
    finstlbillslistAccBillByCorpfun() {
      // delete this.form.id;
      // let obj = JSON.parse(JSON.stringify(this.form))
      let obj = {};
      obj.type = "1";
      obj.auditStatus = this.form.isApproved; // 审核状态 0 新建费用 1 已请核 2 审核中 3 驳回 4 通过
      obj.corpCnName = this.form.corpId; // 对抵单位
      obj.isSignfor = this.form.isSignfor; // 是否已签收（0 否 1是）
      obj.dc = this.form.dc; // 收付 D=收 C=付
      obj.curCode = this.form.curCode; // 币别
      obj.srcType = this.form.srcType; // 业务来源
      obj.srcCnName = this.form.srcId; // 业务员id
      obj.isCleared = this.form.isCleared; // 是否销账（0 未销账 3 部分销账 9 销账）
      obj.accBillNo = this.form.accountNo; // 账单编号  ACCT NO
      obj.billNo = this.form.businessNo; // 单据编号  JOB NO
      obj.mblno = this.form.mblno; // MB/L NO
      obj.hblno = this.form.hblno; // HB/L NO
      obj.isChecked = this.form.isChecked; // 是否对抵（0 未对抵 1 已对抵）
      obj.queryAmount = this.form.queryAmount; // 查询金额
      obj.businessType = this.form.businessTypes; // 业务类型
      obj.invoiceStatus = this.form.isInvoice; // 发票状态 0 = 未开 9=已开 2 待开 3 不开
      obj.vesselCnName = this.form.vesselCnName; // 中文船名
      obj.invoiceNo = this.form.invoiceNo; // 发票号
      obj.bookingNo = this.form.bookingNo; // 订舱号 BKNO
      obj.createUserName = this.form.updateUser ? this.form.updateUser : null; // 操作员id
      obj.receivableAdvance = this.form.receivableAdvance; // 预收帐款
      obj.threeInspectionsNo = this.form.threeInspectionsNo; // 三检单号
      obj.voyageNo = this.form.voyageNo; // 航次
      obj.businessDateStart = this.form.businessDateStart; // 业务开始日期
      obj.businessDateEnd = this.form.businessDateEnd; // 业务结束日期
      obj.billDateStart = this.form.accountDateFrom; // 财务开始日期
      obj.billDateEnd = this.form.accountDateTo; // 财务开始日期
      obj.approveTimeStart = this.form.auditDateFrom; // 审核开始日期
      obj.approveTimeEnd = this.form.auditDateTo; // 审核结束日期
      obj.feeCnName = this.form.feeCnName;
      finstlbillslistAccBillByCorp(obj).then(res => {
        this.retrievePopupsType = true;
        this.retrievePopupsData = res.data.data;
      });
    },
    // 检索接口
    finstlbillslistAccBillV1fun(type) {
      // delete this.form.id;
      // let obj = JSON.parse(JSON.stringify(this.form))
      let obj = {};
      obj.type = "9";
      obj.curCode = this.form.curCode; // 币别
      obj.dc = this.form.dc; // 收付 D=收 C=付
      obj.accBillNo = this.form.accountNo; // 账单编号  ACCT NO
      obj.billNo = this.form.businessNo; // 单据编号  JOB NO
      obj.mblno = this.form.mblno; // MB/L NO
      obj.hblno = this.form.hblno; // HB/L NO
      obj.queryAmount = this.form.queryAmount; // 查询金额
      obj.businessType = this.form.businessTypes; // 业务类型
      obj.feeCnName = this.form.feeCnName;
      obj.vesselCnName = this.form.vesselCnName; // 中文船名
      obj.receivableAdvance = this.form.receivableAdvance; // 预收帐款
      obj.voyageNo = this.form.voyageNo; // 航次
      obj.auditStatus = "0";
      obj.businessDateStart = this.form.businessDateStart; // 财务开始日期
      obj.businessDateEnd = this.form.businessDateEnd; // 财务结束日期
      obj.corpCnName = this.form.corpId; // 结算单位
      obj.checkBillNo = this.form.checkNo; // CHK NO 对账单号
      finstlbillslistAccBillV1(obj).then(res => {
        res.data.data.forEach((item, index) => {
          item.accBillId = item.id;
          delete item.id;
          // 账单编号
          item.accBillNo = item.billNo;
          item.currentStlCurCode = item.curCode; // 币别
          item.currentStlExrate = item.exrate; // 汇率
          // quantity
          // quantityCntrTypesDescr
          item.lineNo = Number(index) + 1;
          item.pType = item.businessType;
          item.billNo = item.businessBillDivideNo ? item.businessBillDivideNo : item.businessBillNo;
          item.accDate = item.billDate;
          item.dc = item.accountDc; // 收付
          if (item.curCode == "CNY") {
            // 发票
            this.$set(item, "currentInvoiceAmountRMB", item.currentInvoiceAmount);
            // 应结算金额
            this.$set(item, "amountRMB", item.amount);
            // 已结算金额
            this.$set(item, "stlTtlAmountRMB", item.stlTtlAmount);
            // 本次金额
            this.$set(item, "currentStlAmountRMB", Number(item.reconciliationCurrentAmount ? item.reconciliationCurrentAmount : 0));
            this.$set(item, "currentStlAmountUSD", Number(0));
          } else {
            // 发票
            this.$set(item, "currentInvoiceAmountUSD", item.currentInvoiceAmount);
            // 应结算金额
            this.$set(item, "amountUSD", item.amount);
            // 已结算金额
            this.$set(item, "stlTtlAmountUSD", item.stlTtlAmount);
            // 本次金额
            this.$set(item, "currentStlAmountUSD", Number(item.reconciliationCurrentAmount ? item.reconciliationCurrentAmount : 0));
            this.$set(item, "currentStlAmountRMB", Number(0));
          }
        });
        this.queryData = [];
        for (let item of res.data.data) {
          if (this.tableData.filter(row => row.accBillNo == item.accBillNo).length == 0) {
            this.queryData.push(item);
          }
        }
        if (this.queryData.length == 0 && type == "检索") {
          this.$message.warning("当前检索暂无数据！");
        }
      });
    },
    // 确认发票
    Confirminvoicefun(type) {
      if (this.handleSelectionData.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      for (let item of this.handleSelectionData) {
        if (item.isInvoice == 3) {
          this.$message.error("已不开发票，请重新选择");
          return;
        }
      }
      for (let item of this.handleSelectionData) {
        if (item.isInvoice == 2) {
          this.$message.error("已确认开票，请重新选择");
          return;
        }
      }
      this.$confirm("确定将选择数据确认开票?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.finstlbillsConfirmInvoicingfun(type);
      });
    },
    // 不开发票
    Notinvoicingfun(type) {
      if (this.handleSelectionData.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      if (type == 1) {
        for (let item of this.handleSelectionData) {
          if (item.isInvoice == 1) {
            this.$message.error("未确认开票，请重新选择");
            return;
          }
          if (item.isInvoice == 3) {
            this.$message.error("已不开发票，请重新选择");
            return;
          }
        }
      }
      if (type == 2) {
        for (let item of this.handleSelectionData) {
          if (item.isInvoice == 1) {
            this.$message.error("未不开发票，请重新选择");
            return;
          }
          if (item.isInvoice == 2) {
            this.$message.error("已确认开票，请重新选择");
            return;
          }
        }
      }
      this.$confirm("确定将选择数据撤销签收?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.finstlbillsRevokeInvoicingfun();
      });
    },
    // 确认发票接口
    finstlbillsConfirmInvoicingfun(type) {
      this.form.billNoFormat = "DCDD";
      this.form.businessTypeCode = "DCDD";
      this.form.businessType = "DCDD"; //对抵单
      this.form.accountDateFrom = this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.accountDateTo = this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.auditDateFrom = this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null;
      this.form.auditDateTo = this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateEnd = this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateStart = this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null;
      this.form.billDate = this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null;
      // 保留id
      this.form.finStlBillsItemsList = this.handleSelectionData;
      let obj = {
        ...this.form,
        type: type
      };
      this.pageLoading = true;
      finstlbillsConfirmInvoicing(obj)
        .then(res => {
          this.$message.success("操作成功");
          this.finstlbillsDetailfun(res.data.data.id);
        })
        .finally(() => {
          this.pageLoading = false;
        });
    },
    // 撤销发票接口
    finstlbillsRevokeInvoicingfun() {
      this.form.billNoFormat = "DCDD";
      this.form.businessTypeCode = "DCDD";
      this.form.businessType = "DCDD"; // 对抵单
      this.form.accountDateFrom = this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.accountDateTo = this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.auditDateFrom = this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null;
      this.form.auditDateTo = this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateEnd = this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateStart = this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null;
      this.form.billDate = this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null;

      this.form.finStlBillsItemsList = this.handleSelectionData;
      this.pageLoading = true;
      finstlbillsRevokeInvoicing(this.form)
        .then(res => {
          this.$message.success("操作成功");
          this.finstlbillsDetailfun(res.data.data.id);
        })
        .finally(() => {
          this.pageLoading = false;
        });
    },
    // 对抵确认
    finstlbillsConfirmReconciliationfun() {
      this.pageLoading = true;
      this.saveLoading = true;
      this.form.accountDateFrom = this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.accountDateTo = this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.auditDateFrom = this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null;
      this.form.auditDateTo = this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateEnd = this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateStart = this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null;
      this.form.billDate = this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null;
      (this.form.url = "/iosBasicData/finstlbills/index"), (this.form.pageStatus = "this.$store.getters.paidapplication");
      this.form.pageLabel = "对抵中心(F)";
      finstlbillsConfirmReconciliation(this.form)
        .then(res => {
          this.$message.success("操作成功");
          this.editSave = true;
          this.finstlbillsDetailfun(res.data.data.id);
        })
        .finally(() => {
          this.pageLoading = false;
          this.saveLoading = false;
        });
    },
    // 对抵撤销
    finstlbillsRevokeReconciliationfun() {
      this.$confirm("确定进行撤销对抵操作?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.pageLoading = true;
        let obj = {
          ...this.form,
          accountDateFrom: this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null, // 财务开始日期
          accountDateTo: this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null, // 财务开始日期
          auditDateFrom: this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null,
          auditDateTo: this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null,
          businessDateEnd: this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null,
          businessDateStart: this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null,
          billDate: this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null
        };

        revokeOffset(obj)
          .then(res => {
            this.$message.success("操作成功");
            this.finstlbillsDetailfun(res.data.data.id);
          })
          .finally(() => {
            this.pageLoading = false;
          });
      });
    },
    // 确认签收
    ConfirmReceiptfun() {
      if (this.handleSelectionData.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      for (let item of this.handleSelectionData) {
        if (item.isSignfor == 1) {
          this.$message.warning("请选择未签收的数据进行签收");
          return;
        }
      }
      this.$confirm("确定将选择数据签收?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.finstlbillsConfirmSignForfun();
      });
    },
    // 撤销签收
    RevokeReceiptfun() {
      if (this.handleSelectionData.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      for (let item of this.handleSelectionData) {
        if (item.isSignfor == 0) {
          this.$message.warning("请选择已签收的数据进行撤销");
          return;
        }
      }
      this.$confirm("确定将选择数据撤销签收?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.finstlbillsRevokeSignForfun();
      });
    },
    batchConfirm() {
      if (this.handleSelectionData.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      for (let item of this.handleSelectionData) {
        if (item.isSignfor == 0) {
          return this.$message.error("请选择已签收的数据");
        }
        if (item.isChecked == 1) {
          return this.$message.error("请选择未对抵的数据");
        }
      }
      this.$confirm("是否对抵?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.form.billNoFormat = "DCDD";
        this.form.businessTypeCode = "DCDD";
        this.form.businessType = "DCDD"; //对抵单
        this.form.accountDateFrom = this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
        this.form.accountDateTo = this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
        this.form.auditDateFrom = this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null;
        this.form.auditDateTo = this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null;
        this.form.businessDateEnd = this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null;
        this.form.businessDateStart = this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null;
        this.form.billDate = this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null;
        // 保留id
        this.form.finStlBillsItemsList = this.handleSelectionData;
        this.pageLoading = true;
        batchConfirmReconciliation(this.form)
          .then(res => {
            this.$message.success("操作成功");
            this.finstlbillsDetailfun(this.form.id);
          })
          .finally(() => {
            this.pageLoading = false;
          });
      });
    },
    batchRevoke() {
      if (this.handleSelectionData.length === 0) {
        this.$message.error("请选择至少一条数据");
        return;
      }
      for (let item of this.handleSelectionData) {
        if (item.isChecked == 0) {
          return this.$message.error("请选择已对抵的数据");
        }
      }
      this.$confirm("是否撤销对抵?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.form.billNoFormat = "DCDD";
        this.form.businessTypeCode = "DCDD";
        this.form.businessType = "DCDD"; // 对抵单
        this.form.accountDateFrom = this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
        this.form.accountDateTo = this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
        this.form.auditDateFrom = this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null;
        this.form.auditDateTo = this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null;
        this.form.businessDateEnd = this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null;
        this.form.businessDateStart = this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null;
        this.form.billDate = this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null;

        this.form.finStlBillsItemsList = this.handleSelectionData;
        this.pageLoading = true;
        batchRevokeReconciliation(this.form)
          .then(res => {
            this.$message.success("操作成功");
            this.finstlbillsDetailfun(res.data.data.id);
          })
          .finally(() => {
            this.pageLoading = false;
          });
      });
    },
    // 一键删除
    batchDeletefun() {
      if (this.handleSelectionData.length == 0) {
        return this.$message.warning("请选择要删除的数据");
      }
      for (let item of this.handleSelectionData) {
        if (item.isInvoice == 3) {
          this.$message.error("已不开发票，请重新选择");
          return;
        }
      }
      for (let item of this.handleSelectionData) {
        if (item.isInvoice == 2) {
          this.$message.error("已确认开票，请重新选择");
          return;
        }
      }
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        // 获取有id 的数据
        const itemsWithId = this.handleSelectionData.filter(item => item.hasOwnProperty("id"));
        let arrIds = itemsWithId.map(item => item.id); // 获取id 数据
        // 把选中的删除掉
        this.handleSelectionData.forEach(item => {
          for (let index in this.tableData) {
            if (item.accBillNo == this.tableData[index].accBillNo) {
              this.tableData.splice(Number(index), 1);
            }
          }
        });
        // 有id 的处理
        if (itemsWithId.length != 0) {
          finstlbillsitemsRemove(arrIds.join(",")).then(res => {
            this.$message.success("操作成功");
            this.finstlbillsDetailfun(this.form.id);
          });
        }
      });
    },
    // 确认选定行
    allCell() {
      this.editCustomer("query");
    },
    // 确认选定行
    addSelectionChange(arr) {
      this.amountDSubSum = 0;
      this.amountDSubUsdSum = 0;
      this.amountCSubSum = 0;
      this.amountCSubUsdSum = 0;
      if (arr.length) {
        arr.forEach(e => {
          console.log(e.accountDc);
          if (e.accountDc == "D") {
            this.amountDSubSum += Number(e.currentStlAmountRMB ? e.currentStlAmountRMB : 0);
            this.amountDSubUsdSum += Number(e.currentStlAmountUSD ? e.currentStlAmountUSD : 0);
          }
          if (e.accountDc == "C") {
            this.amountCSubSum += Number(e.currentStlAmountRMB ? e.currentStlAmountRMB : 0);
            this.amountCSubUsdSum += Number(e.currentStlAmountUSD ? e.currentStlAmountUSD : 0);
          }
        });
      }
      this.addData = arr;
    },
    // 下面表格多选
    handleSelectionChange(arr) {
      this.handleSelectionData = arr;
    },
    //返回列表
    backToList() {
      this.$emit("goBack");
    },
    // 请求的接口
    // 确认签收接口
    finstlbillsConfirmSignForfun() {
      this.form.billNoFormat = "DCDD";
      this.form.businessTypeCode = "DCDD";
      this.form.businessType = "DCDD"; //对抵单
      this.form.accountDateFrom = this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.accountDateTo = this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.auditDateFrom = this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null;
      this.form.auditDateTo = this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateEnd = this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateStart = this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null;
      this.form.billDate = this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null;
      // 保留id
      this.form.finStlBillsItemsList = this.handleSelectionData;
      this.pageLoading = true;
      finstlbillsConfirmSignFor(this.form)
        .then(res => {
          this.$message.success("操作成功");
          this.finstlbillsDetailfun(res.data.data.id);
        })
        .finally(() => {
          this.pageLoading = false;
        });
    },
    // 撤销签收接口
    finstlbillsRevokeSignForfun() {
      this.form.billNoFormat = "DCDD";
      this.form.businessTypeCode = "DCDD";
      this.form.businessType = "DCDD"; // 对抵单
      this.form.accountDateFrom = this.form.accountDateFrom ? this.form.accountDateFrom.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.accountDateTo = this.form.accountDateTo ? this.form.accountDateTo.slice(0, 10) + " 00:00:00" : null; // 财务开始日期
      this.form.auditDateFrom = this.form.auditDateFrom ? this.form.auditDateFrom.slice(0, 10) + " 00:00:00" : null;
      this.form.auditDateTo = this.form.auditDateTo ? this.form.auditDateTo.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateEnd = this.form.businessDateEnd ? this.form.businessDateEnd.slice(0, 10) + " 00:00:00" : null;
      this.form.businessDateStart = this.form.businessDateStart ? this.form.businessDateStart.slice(0, 10) + " 00:00:00" : null;
      this.form.billDate = this.form.billDate ? this.form.billDate.slice(0, 10) + " 00:00:00" : null;

      this.form.finStlBillsItemsList = this.handleSelectionData;
      this.pageLoading = true;
      finstlbillsRevokeSignFor(this.form)
        .then(res => {
          this.$message.success("操作成功");
          this.finstlbillsDetailfun(res.data.data.id);
        })
        .finally(() => {
          this.pageLoading = false;
        });
    },
    // 获取 全部是否 接口
    allyesnoWorkDictsfun() {
      // 全部/是/否
      getWorkDicts("all_yes_no").then(res => {
        this.allyesnoData = res.data.data;
      });
      // 对抵字典
      getWorkDicts("los_check_status").then(res => {
        this.isCheckedData = res.data.data;
      });
      // 销账(F)
      getWorkDicts("write_off_los").then(res => {
        this.isClearedData = [{ dictValue: "全部", dictKey: null }, ...res.data.data];
      });
    },

    // 获取发票的字典数据
    invoiceWorkDictsfun() {
      getWorkDicts("invoice_los").then(res => {
        this.isInvoiceData = res.data.data;
      });
    },
    // 获取币别数据
    getRateListfun(cnName) {
      getRateList({ current: 1, size: 10, cnName }).then(res => {
        this.curCodeData = res.data.data.records;
      });
    },
    // 获取操作员数据
    updateUserUserGetListfun(account) {
      userGetList(1, 10, { account }).then(res => {
        this.updateUserData = res.data.data.records;
      });
    },
    // 获取公司名称 用户管理左侧
    ownDeptLazyTreefun() {
      getDeptLazyTree(0).then(res => {
        this.srcData = res.data.data;
      });
    },
    // 获取业务来源代理数据
    srcBcorpsListfun(cnName) {
      let corpTypeName = "国内直接客户,国内同行及代理,国外直接客户,国外同行及代理";
      getBcorpslistByType(1, 10, { cnName, corpTypeName }).then(res => {
        this.srcData = res.data.data.records;
      });
    },
    // 获取业务员数据
    salesuserGetListfun(account = undefined, type = false) {
      userGetList(1, 10, { account }).then(res => {
        this.srcData = res.data.data.records;
      });
    },
    // 获取对抵单位数据
    corpBcorpsListfun(cnName) {
      getBcorpslistByType(1, 10, { cnName }).then(res => {
        this.corpData = res.data.data.records;
      });
    },

    // 预览报表
    handleReportPreview(url, data) {
      console.log(url, 1670);
      console.log(data, 1671);
      Stimulsoft.Base.StiLicense.key =
        "6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHn0s4gy0Fr5YoUZ9V00Y0igCSFQzwEqYBh/N77k4f0fWXTHW5rqeBNLkaurJDenJ9o97TyqHs9HfvINK18Uwzsc/bG01Rq+x3H3Rf+g7AY92gvWmp7VA2Uxa30Q97f61siWz2dE5kdBVcCnSFzC6awE74JzDcJMj8OuxplqB1CYcpoPcOjKy1PiATlC3UsBaLEXsok1xxtRMQ283r282tkh8XQitsxtTczAJBxijuJNfziYhci2jResWXK51ygOOEbVAxmpflujkJ8oEVHkOA/CjX6bGx05pNZ6oSIu9H8deF94MyqIwcdeirCe60GbIQByQtLimfxbIZnO35X3fs/94av0ODfELqrQEpLrpU6FNeHttvlMc5UVrT4K+8lPbqR8Hq0PFWmFrbVIYSi7tAVFMMe2D1C59NWyLu3AkrD3No7YhLVh7LV0Tttr/8FrcZ8xirBPcMZCIGrRIesrHxOsZH2V8t/t0GXCnLLAWX+TNvdNXkB8cF2y9ZXf1enI064yE5dwMs2fQ0yOUG/xornE";
      // Stimulsoft.Base.StiLicense.Key = '6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHkcgIvwL0jnpsDqRpWg5FI5kt2G7A0tYIcUygBh1sPs7plofUOqPB1a4HBIXJB621mau2oiAIj+ysU7gKUXfjn/D5BocmduNB+ZMiDGPxFrAp3PoD0nYNkkWh8r7gBZ1v/JZSXGE3bQDrCQCNSy6mgby+iFAMV8/PuZ1z77U+Xz3fkpbm6MYQXYp3cQooLGLUti7k1TFWrnawT0iEEDJ2iRcU9wLqn2g9UiWesEZtKwI/UmEI2T7nv5NbgV+CHguu6QU4WWzFpIgW+3LUnKCT/vCDY+ymzgycw9A9+HFSzARiPzgOaAuQYrFDpzhXV+ZeX31AxWlnzjDWqpfluygSNPtGul5gyNt2CEoJD1Yom0VN9fvRonYsMsimkFFx2AwyVpPcs+JfVBtpPbTcZscnzUdmiIvxv8Gcin6sNSibM6in/uUKFt3bVgW/XeMYa7MLGF53kvBSwi78poUDigA2n12SmghLR0AHxyEDIgZGOTbNI33GWu7ZsPBeUdGu55R8w='
      Stimulsoft.Base.Localization.StiLocalization.addLocalizationFile("/reports/stimulsoft/Localization/zh-CHS.xml", true, "zh-CHS");
      Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile("/reports/stimulsoft/Localization/zh-CHS.xml");
      // 工具栏
      var options = new Stimulsoft.Viewer.StiViewerOptions();
      options.height = "100%";
      options.appearance.scrollbarsMode = true; // 滚动条模式
      options.toolbar.showDesignButton = false; // 显示设计按钮
      options.toolbar.showAboutButton = false; // 显示关于按钮
      options.toolbar.showResourcesButton = false; // 显示资源按钮
      options.toolbar.showFullScreenButton = false; // 显示全屏按钮
      options.toolbar.showOpenButton = false; // 显示打开按钮
      options.appearance.showTooltips = false; // 显示工具提示
      options.appearance.showDialogsHelp = false; // 显示对话框帮助
      options.exports.showExportToDocument = false; // 显示导出到文档
      options.toolbar.showParametersButton = true; // 显示参数按钮
      options.appearance.bookmarksPrint = true; // 书签打印
      // options.toolbar.showPrintButton = false // 打印按钮是否显示   下面直接自定义控制打印弹窗是否开启

      // printDestination 参数：用于指定报表打印的目标位置，可以是打印机、PDF 文件或者直接打印到浏览器等。
      // Stimulsoft.Viewer.StiPrintDestination.Direct：表示直接打印到打印机，即将报表内容直接发送至打印机进行打印。
      // 通过设置不同的 printDestination 参数，你可以控制报表打印的行为，例如是直接打印到打印机，还是生成 PDF 文件，或者直接在浏览器中预览打印内容等。
      options.toolbar.printDestination = Stimulsoft.Viewer.StiPrintDestination.Direct;
      // htmlRenderMode html渲染模式
      options.appearance.htmlRenderMode = Stimulsoft.Report.Export.StiHtmlExportMode.Table;
      // 是创建一个 Stimulsoft 报表查看器的实例的代码
      let viewer = new Stimulsoft.Viewer.StiViewer(options, "StiViewer", false);

      // 报表
      console.log("创建一个报表实例");
      console.log();
      let report = new window.Stimulsoft.Report.StiReport();

      // 加载文件
      console.log("从url加载报表");
      // report.loadFile("/reports/stimulsoft/demos/SimpleList.mrt");
      report.load(url);

      data.pageOne = "Page : 1 of 1";
      // 处理超长数据
      if (data.hshipperDetails) {
        var consignerIndex2 = data.hshipperDetails.indexOf("\n");
        for (let i = 0; i < 4; i++) {
          consignerIndex2 = data.hshipperDetails.indexOf("\n", consignerIndex2 + 1);
        }
        if (consignerIndex2 != -1) {
          var hshipperDetails = data.hshipperDetails.substring(consignerIndex2 + 2, data.hshipperDetails.length);
          data.hshipperDetails = data.hshipperDetails.substring(0, consignerIndex2) + " *";
          data.commodityDescr += "\n*" + hshipperDetails;
        }
      }

      if (data.hconsigneeDetails) {
        var consigneeIndex2 = data.hconsigneeDetails.indexOf("\n");
        for (let i = 0; i < 3; i++) {
          consigneeIndex2 = data.hconsigneeDetails.indexOf("\n", consigneeIndex2 + 1);
        }
        if (consigneeIndex2 != -1) {
          var hconsigneeDetails = data.hconsigneeDetails.substring(consigneeIndex2 + 2, data.hconsigneeDetails.length);
          data.hconsigneeDetails = data.hconsigneeDetails.substring(0, consigneeIndex2) + " **";
          data.commodityDescr += "\n**" + hconsigneeDetails;
        }
      }

      if (data.hnotifyDetails) {
        var notifierIndex2 = data.hnotifyDetails.indexOf("\n");
        for (let i = 0; i < 3; i++) {
          notifierIndex2 = data.hnotifyDetails.indexOf("\n", notifierIndex2 + 1);
        }
        if (notifierIndex2 != -1) {
          var hnotifyDetails = data.hnotifyDetails.substring(notifierIndex2 + 2, data.hnotifyDetails.length);
          data.hnotifyDetails = data.hnotifyDetails.substring(0, notifierIndex2) + " ***";
          data.commodityDescr += "\n***" + hnotifyDetails;
        }
      }

      // 处理箱号
      if (this.isPrintTheBoxNumber) {
        data.commodityDescr += "\n.\n.\n";
      }

      // PLACE & DATE OF ISSUE
      data.placeAndDateOfIssue = "";
      if (data.issueAt) {
        data.placeAndDateOfIssue += data.issueAt;
      }
      if (data.issueDate) {
        let date = new Date(data.issueDate.replace(/-/g, "/"));
        let yyyy = date.getFullYear();
        let mmmm = date.toDateString().split(" ")[1];
        let dd = date.getDate();
        data.placeAndDateOfIssue += ", " + dd + "-" + mmmm + "-" + yyyy;
      }

      // Total number of containers or packages received by the Carriers
      if (data.preContainersList) {
        let boxMap = new Map();
        for (let boxQuantity of data.preContainersList) {
          if (boxMap.get(boxQuantity.cntrTypeCode)) {
            let v = boxMap.get(boxQuantity.cntrTypeCode);
            boxMap.set(boxQuantity.cntrTypeCode, v + boxQuantity.quantity);
          } else {
            boxMap.set(boxQuantity.cntrTypeCode, boxQuantity.quantity);
          }
        }
        let boxs = "";
        boxMap.forEach(function(value, key, map) {
          boxs += value + "x" + key + ", ";
        });
        boxs = boxs.substring(0, boxs.length - 2);

        data.boxQuantity = boxs + " CONTAINER(S) ONLY";
      }

      // Number of original B/Ls
      if (data.numberOfObl) {
        data.numberOfObl += " (" + data.numberOfOblDigit + ")";
      }

      if (data.commodityDescr) {
        var descriptionIndex2 = data.commodityDescr.indexOf("\n");
        for (let i = 0; i < 19; i++) {
          descriptionIndex2 = data.commodityDescr.indexOf("\n", descriptionIndex2 + 1);
        }
        if (descriptionIndex2 != -1) {
          data.pageOne = "Page : 1 of 2";
          data.pageTwo = "Page : 2 of 2";
          var extraLongText = data.commodityDescr.substring(descriptionIndex2 + 2, data.commodityDescr.length);
          data.commodityDescr = data.commodityDescr.substring(0, descriptionIndex2);
          data.extraLongTips = "** TO BE CONTINUED ON ATTACHED LIST **";
          data.extraLongText = extraLongText;
        }
      }

      // console.log(data.hshipperDetails, 'hshipperDetails2')

      // 创建一个 Stimulsoft 数据集（DataSet）的实例的代码
      var dataSet = new Stimulsoft.System.Data.DataSet("reportData");

      dataSet.readJson(data); // 用于将 JSON 格式的数据加载到数据集中。data 是包含报表数据的 JSON 对象。
      // 这是一个方法调用，用于在报表中注册数据源。参数 'reportData' 是数据源的名称，
      // 第二个 'reportData' 是数据源的别名，dataSet 则是之前创建的数据集实例
      report.regData("reportData", "reportData", dataSet);
      // 从模版和数据加载报表
      // loadReport(report, '', {})

      // 这是将报表对象指定给报表查看器的属性。viewer 是报表查看器的实例，而 report 是之前创建的报表对象。
      viewer.report = report;

      this.$refs.reportContainer.showContainer(
        () => {
          setTimeout(() => {
            viewer.renderHtml("reportContainer");
            this.createViewerButtons(viewer);
          }, 50);
        },
        () => {}
      );
      console.log("加载成功完成!");
    },
    createViewerButtons(viewer) {
      viewer.jsObject.collections.images["myClose.png"] =
        "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAA0ElEQVQ4ja3TO05CQRQG4A8iOwAbtYWETndAaecK7NwCKmETtJZsSBNLobEz8ZFIJQ0UnOGSm3DnYviTybzO/895DQXGWGCVGQuMEqkRcwcfuMOLalziCaf4TIe9UG9nyMJmFRzNGoRK1BU4xxx9G7cfwostciGk+x8MqgySwDXe4tU53hVV+MNtTmAoX84JGv9NYgrHyR6DV8wUSW7hItZLm36ZVoVQxsFJLOMsPOrH/h7dQwR2cdxOTEn8DtUbPGc4V2H7Vb4Yqfedf/GYSGt8VUmxgyfuBAAAAABJRU5ErkJggg==";
      const closeBtn = viewer.jsObject.SmallButton("closeBtn", "关闭", "myClose.png");
      // 增加打印弹窗配置
      const printBtn = viewer.jsObject.SmallButton("printBtn", "打印报表", "myClose.png");
      // console.log(viewer.jsObject.print(),'1013')
      // 获取 关闭按钮的dom元素位置
      const toolbarTable = viewer.jsObject.controls.toolbar.firstChild.firstChild;
      const buttonsTable = toolbarTable.rows[0].lastChild.lastChild;
      const userButtonCell = buttonsTable.rows[0].insertCell(0);
      // 获取打印按钮的位置
      const buttonsTablePrint = toolbarTable.rows[0].childNodes[0].lastChild; // 打印按钮
      const userButtonPrint = buttonsTablePrint.rows[0].childNodes[0]; // 打印按钮dom位置

      userButtonPrint.addEventListener("click", event => {
        console.log("打印点击");
        // event.preventDefault()
      });
      userButtonPrint.addEventListener("mouseover", event => {
        console.log("移入打印按钮");
        console.log(event, 1035);
      });

      userButtonCell.className = "stiJsViewerClearAllStyles";
      userButtonCell.appendChild(closeBtn); // 添加关闭节点

      // userButtonPrint.prepend(printBtn) // 在 printBtn 节点里最前面增加一个子级节点

      let that = this;
      // 关闭按钮的监听点击
      closeBtn.action = function() {
        console.log(that.$refs.ReportContainer, "1022");
        if (that.$refs.reportContainer) that.$refs.reportContainer.hideContainer();
      };

      // // // 打印按钮监听
      // printBtn.action = (e)=>{
      //     console.log('打印')
      //     window.print()
      // }
    }
  }
};
</script>

<style scoped>
::v-deep.el-form-item {
  margin-bottom: 0;
}

.bottomFlex {
  display: flex;
  align-items: center;
}

.weightfont {
  font-size: 20px;
  font-weight: bold;
}

.weightnum {
  font-size: 15px;
  font-weight: 500;
}
</style>
