<template>
  <div class="app-container">
    <el-form
      :model="queryParams"
      ref="queryForm"
      :inline="true"
      v-show="showSearch"
      label-width="88px"
    >
      <el-form-item label="业务编号" prop="fBillno">
        <el-input
          v-model="queryParams.fBillno"
          placeholder="请输入业务编号"
          style="width: 200px"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="制单人" prop="createBy">
        <el-select
          v-model="queryParams.createBy"
          filterable
          remote
          clearable
          style="width: 200px"
          :remote-method="userRemoteMethod"
          placeholder="请选择制单人"
        >
          <el-option
            v-for="(dict, index) in userOptions"
            :key="index.userName"
            :label="dict.nickName"
            :value="dict.userName"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="贸易方式" prop="fTrademodeid">
        <el-select
          v-model="queryParams.fTrademodeid"
          placeholder="请选择贸易方式"
          clearable
          style="width: 200px"
          @keyup.enter.native="handleQuery"
        >
          <el-option
            v-for="(dict, index) in fTrademodeidOptions"
            :key="index.dictValue"
            :label="dict.dictLabel"
            :value="dict.dictValue"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="货权方" prop="fCorpid">
        <el-select
          v-model="queryParams.fCorpid"
          filterable
          remote
          clearable
          style="width: 200px"
          @keyup.enter.native="handleQuery"
          :remote-method="corpsRemoteMethod"
          placeholder="请选择货权方"
        >
          <el-option
            v-for="(dict, index) in fMblnoOptions"
            :key="index.fId"
            :label="dict.fName"
            :value="dict.fId"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="提单号" prop="fMblno">
        <el-input
          v-model="queryParams.fMblno"
          placeholder="请输入提单号"
          style="width: 200px"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="经营单位" prop="fSbu">
        <el-select
          v-model="queryParams.fSbu"
          filterable
          remote
          clearable
          :remote-method="fSbuRemoteMethod"
          @keyup.enter.native="handleQuery"
          style="width: 200px"
          placeholder="请选择经营单位"
        >
          <el-option
            v-for="(dict, index) in fSbuOptions"
            :key="index.fId"
            :label="dict.fName"
            :value="dict.fId"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="货物名称" prop="fGoodsid">
        <el-select
          v-model="queryParams.fGoodsid"
          filterable
          remote
          clearable
          style="width: 200px"
          :remote-method="goodsRemoteMethod"
          @keyup.enter.native="handleQuery"
          placeholder="请选择货物名称"
        >
          <el-option
            v-for="(dict, index) in goodsOptions"
            :key="index.fId"
            :label="dict.fName"
            :value="dict.fId"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="仓库" prop="fWarehouseid">
        <el-select
          v-model="queryParams.fWarehouseid"
          filterable
          remote
          @select="treeseLect"
          :disabled="browseStatus || formBrowseStatus"
          style="width: 200px"
          @keyup.enter.native="handleQuery"
          placeholder="请选择"
        >
          <el-option
            v-for="(dict, index) in warehouseOptions"
            :key="index.fId"
            :label="dict.fName"
            :value="dict.fId"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="品牌" prop="fMarks">
        <el-input
          v-model="queryParams.fMarks"
          placeholder="请输入品牌"
          clearable
          style="width: 200px"
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="费用状态" prop="fBillstatus">
        <el-select
          style="width:200px"
          v-model="queryParams.fBillstatus"
          placeholder="请输入费用状态"
        >
          <el-option label="保存" value="1"></el-option>
          <el-option label="暂存" value="2"></el-option>
          <el-option label="审批驳回" value="3"></el-option>
          <el-option label="提交审核" value="4"></el-option>
          <el-option label="审核中" value="5"></el-option>
          <el-option label="审核完成" value="6"></el-option>
        </el-select>
      </el-form-item>

      <el-form-item label="货转状态" prop="fItemsStatus">
        <el-select
          style="width:200px"
          v-model="queryParams.fItemsStatus"
          placeholder="请输出库状态"
        >
          <el-option label="计划" value="1"/>
          <el-option label="待货转" value="2"/>
          <el-option label="已货转" value="6"/>
        </el-select>
      </el-form-item>
      <el-form-item label="货转日期" prop="fBsdate">
        <el-date-picker
          v-model="queryParams.timeInterval"
          type="daterange"
          value-format="yyyy-MM-dd"
          clearable
          style="width:240px"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          @keyup.enter.native="handleQuery"
        >
        </el-date-picker>
      </el-form-item>

      <el-form-item>
        <el-button
          type="cyan"
          icon="el-icon-search"
          size="mini"
          @click="handleQuery"
        >搜索
        </el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
        >重置
        </el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['warehouseBusiness:goodsTransfer:add']"
        >新增
        </el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['warehouseBusiness:goodsTransfer:edit']"
        >修改
        </el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['warehouseBusiness:goodsTransfer:export']"
        >导出
        </el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          icon="el-icon-download"
          size="mini"
          :disabled="single"
          @click="handleUpdate(null,2)"
          v-hasPermi="['agreement:agreementStorage:export']"
        >复制新增
        </el-button>
      </el-col>
      <div class="tabSetting">
        <right-toolbar
          :showSearch.sync="showSearch"
          @queryTable="getList"
        ></right-toolbar>
        <div style="margin: 0 12px">
          <el-button
            icon="el-icon-setting"
            size="mini"
            circle
            @click="showSetting = !showSetting"
          ></el-button>
        </div>
      </div>
    </el-row>
    <el-dialog title="自定义列显示" :visible.sync="showSetting" width="700px" v-dialogDrag>
      <template slot="title">
        <div class="avue-crud__dialog__header">
            <span class="el-dialog__title">
            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px"></span>
            </span>
        </div>
      </template>
      <div>配置排序列数据（拖动调整顺序）</div>
      <div style="margin-left: 17px">
        <el-checkbox
          v-model="allCheck"
          label="全选"
          @change="allChecked"
        ></el-checkbox>
      </div>
      <div style="padding: 4px; display: flex; justify-content: center">
        <draggable
          v-model="setRowList"
          group="site"
          animation="300"
          @start="onStart"
          @end="onEnd"
          handle=".indraggable"
        >
          <transition-group>
            <div
              v-for="item in setRowList"
              :key="item.surface"
              class="listStyle"
            >
              <div style="width: 500px" class="indraggable">
                <div class="progress" :style="{ width: item.width + 'px' }">
                  <el-checkbox
                    :label="item.name"
                    v-model="item.checked"
                    :true-label="0"
                    :false-label="1"
                  >{{ item.name }}
                  </el-checkbox>
                </div>
              </div>
              <el-input-number
                v-model.number="item.width"
                controls-position="right"
                :min="1"
                :max="500"
                size="mini"
              ></el-input-number>
            </div>
          </transition-group>
        </draggable>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="showSetting = false">取 消</el-button>
        <el-button type="primary" @click="save()">确 定</el-button>
      </span>
    </el-dialog>

    <el-table
      v-loading="loading"
      :data="goodsTransferList"
      show-summary :summary-method="getSum"
      @selection-change="handleSelectionChange"
    >
      <el-table-column type="selection" width="60" align="center"/>
      <el-table-column type="index" label="行号" align="center"/>
            <el-table-column
              v-for="(item, index) in getRowList"
              :key="index"
              :label="item.name"
              :width="item.width"
              :prop="item.label"
              align="center"
              :fixed="item.fixed"
            />
<!--      <el-table-column  label="制单人" align="center" prop="createBy" fixed />-->
<!--      <el-table-column width="220" label="货权方" sortable align="center" prop="fCorpid" fixed/>-->
<!--      <el-table-column width="220" label="转货权方" sortable align="center" prop="fTocorpid" fixed/>-->
<!--      <el-table-column label="品名" :show-overflow-tooltip="true" align="ceter" prop="fProductName" fixed/>-->
<!--      <el-table-column :show-overflow-tooltip="true" label="品牌" align="center" prop="fMarks" fixed/>-->
<!--      <el-table-column width="160" label="业务编号" align="center" prop="fBillno" fixed/>-->
<!--      <el-table-column label="货转日期" sortable align="center" prop="fBsdate" width="180">-->
<!--        <template slot-scope="scope">-->
<!--          <span>{{ parseTime(scope.row.fBsdate, '{y}-{m}-{d}') }}</span>-->
<!--        </template>-->
<!--      </el-table-column>-->
<!--      <el-table-column label="贸易方式" align="center" prop="fTrademodeid" :formatter="fTrademodeidFormat"/>-->
<!--      <el-table-column label="仓库" sortable align="center" prop="fWarehouseid"/>-->
<!--      <el-table-column label="件数" align="center" prop="fQty"/>-->
<!--      <el-table-column label="毛重(kg)" align="center" prop="fGrossweight"/>-->
<!--      <el-table-column label="净重(kg)" align="center" prop="fNetweight"/>-->
<!--      <el-table-column width="100" label="货转状态" align="center" prop="fItemsStatus">-->
<!--        <template slot-scope="scope">-->
<!--          <span v-if="scope.row.fItemsStatus === 1">计划</span>-->
<!--          <span v-if="scope.row.fItemsStatus === 2">待货转</span>-->
<!--          <span v-if="scope.row.fItemsStatus === 6">已货转</span>-->
<!--        </template>-->
<!--      </el-table-column>-->
<!--      <el-table-column label="费用状态" align="center" prop="fBillstatus" width="120">-->
<!--        <template slot-scope="scope">-->
<!--          <span v-if="scope.row.fBillstatus == '1'">保存</span>-->
<!--          <span v-else-if="scope.row.fBillstatus == '2'">暂存</span>-->
<!--          <span v-else-if="scope.row.fBillstatus == '3'">审批驳回</span>-->
<!--          <span v-else-if="scope.row.fBillstatus == '4'">提交审核</span>-->
<!--          <span v-else-if="scope.row.fBillstatus == '5'">审核中</span>-->
<!--          <span v-else-if="scope.row.fBillstatus == '6'">审核完成</span>-->
<!--        </template>-->
<!--      </el-table-column>-->
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
        min-width="180"
      >
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="check_s(scope.row,0)"
            v-hasPermi="['warehouseBusiness:goodsTransfer:edit']"
          >查看
          </el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            v-if="
              scope.row.fBillstatus == '录入' ||
              scope.row.fBillstatus == '暂存'  ||
              scope.row.fBillstatus == '驳回'
            "
            @click="handleUpdate(scope.row, false)"
            v-hasPermi="['warehouseBusiness:goodsTransfer:edit']"
          >修改
          </el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            v-if="scope.row.fBillstatus == '请核'  || scope.row.fBillstatus == '审核中' "
            @click="check(scope.row)"
            v-hasPermi="['warehouseBusiness:goodsTransfer:edit']"
          >审批进度
          </el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            v-if="scope.row.fItemsStatus == '计划'"
            @click="handleDelete(scope.row)"
            v-hasPermi="['warehouseBusiness:goodsTransfer:remove']"
          >删除
          </el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!-- 添加或修改仓库主(出入库)对话框 -->
    <el-dialog
      v-dialogDrag
      :fullscreen="dialogFull"
      :title="title"
      :visible.sync="open"
      :close-on-click-modal="false"
      width="80%"
      append-to-body
      :show-close="colseButton"
    >
      <template slot="title">
        <div class="avue-crud__dialog__header">
            <span class="el-dialog__title">
            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px"></span>
            </span>
          <div class="avue-crud__dialog__menu enlarge" @click="full">
            <i  style="cursor: pointer;display: block;width:12px;height:12px;border:1px solid #909399;border-top:3px solid #909399;margin-top: -3px;"></i>
          </div>
        </div>
      </template>

      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
        <el-row>
          <el-col :span="8">
            <el-form-item label="货权方" prop="fCorpid">
              <el-select
                v-model="form.fCorpid"
                filterable
                remote
                :disabled="notChange || formBrowseStatus"
                style="width: 80%"
                :remote-method="corpsRemoteMethod"
                placeholder="请选择货权方"
              >
                <el-option
                  v-for="(dict, index) in fMblnoOptions"
                  :key="index.fId"
                  :label="dict.fName"
                  :value="dict.fId"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="新货权方" prop="fTocorpid">
              <el-select
                v-model="form.fTocorpid"
                filterable
                remote
                :disabled="notChange || formBrowseStatus"
                style="width: 80%"
                @change="changefCorpid(form)"
                :remote-method="corpsRemoteMethod"
                placeholder="请选择新货权方"
              >
                <el-option
                  v-for="(dict, index) in fMblnoOptions"
                  :key="index.fId"
                  :label="dict.fName"
                  :value="dict.fId"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="业务编号" prop="fBillno">
              <el-input
                v-model="form.fBillno"
                style="width: 80%"
                disabled
                placeholder="业务编号"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="8">
            <el-form-item label="货转日期" prop="fBsdate">
              <el-date-picker
                v-model="form.fBsdate"
                style="width: 80%"
                type="date"
                :disabled="notChange || formBrowseStatus"
                value-format="timestamp"
                placeholder="货转日期"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="仓储计费日期" prop="fChargedate">
              <el-date-picker
                v-model="form.fChargedate"
                style="width: 80%"
                type="date"
                :disabled="notChange || formBrowseStatus"
                value-format="timestamp"
                placeholder="仓储计费日期">
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="仓库" prop="fWarehouseid">
              <el-select
                v-model="form.fWarehouseid"
                filterable
                remote
                :disabled="browseStatus || formBrowseStatus"
                style="width: 80%"
                @keyup.enter.native="handleQuery"
                placeholder="请选择"
              >
                <el-option
                  v-for="(dict, index) in warehouseOptions"
                  :key="index.fId"
                  :label="dict.fName"
                  :value="dict.fId"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>

        </el-row>
        <el-row>
          <el-col :span="8">
            <el-form-item label="结算方式" prop="fStltypeid">
              <el-select
                v-model="form.fStltypeid"
                placeholder="请选择结算方式"
                clearable
                :disabled="notChange || formBrowseStatus"
                style="width: 80%"
              >
                <el-option
                  v-for="(dict, index) in fStltypeOptions"
                  :key="index.dictValue"
                  :label="dict.dictLabel"
                  :value="dict.dictValue"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="计费单位" prop="fFeetunit">
              <el-select
                v-model="form.fFeetunit"
                placeholder="请选择计费单位"
                clearable
                :disabled="notChange || formBrowseStatus"
                style="width: 80%"
              >
                <el-option
                  v-for="(dict, index) in fFeetunitOptions"
                  :key="index.dictValue"
                  :label="dict.dictLabel"
                  :value="dict.dictValue"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="贸易方式" prop="fTrademodeid">
              <el-select
                v-model="form.fTrademodeid"
                placeholder="请选择贸易方式"
                clearable
                :disabled="notChange || formBrowseStatus"
                style="width: 80%"
              >
                <el-option
                  v-for="(dict, index) in fTrademodeidOptions"
                  :key="index.dictValue"
                  :label="dict.dictLabel"
                  :value="dict.dictValue"
                />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="8">
            <el-form-item label="提单号" prop="fMblno">
              <el-input
                v-model="form.fMblno"
                disabled
                style="width: 80%"
                placeholder=""
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="原始入库单号" prop="fOriginalbillno">
              <el-input
                v-model="form.fOriginalbillno"
                style="width: 80%"
                :disabled="notChange"
                placeholder="原始入库单号"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="原始入库日期" prop="orgStorageDate">
              <el-date-picker
                v-model="orgStorageDate"
                type="daterange"
                value-format="yyyy-MM-dd"
                range-separator="至"
                style="width: 80%"
                :disabled="notChange"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="8">
            <el-form-item label="品牌" prop="fMarks">
              <el-input
                v-model="form.fMarks"
                style="width: 80%"
                disabled
                placeholder="品牌"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="品名" prop="fProductName">
              <el-input
                v-model="form.fProductName"
                style="width: 80%"
                disabled
                placeholder="品名"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="制单人" prop="createBy">
              <el-input
                disabled
                v-model="form.createBy"
                style="width: 80%"
                placeholder="制单人"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-button type="primary" :disabled="browseStatus" @click="saveForm">保 存</el-button>
        <el-button type="primary" :disabled="notChange" @click="submitForm">请 核</el-button>
      </el-form>

      <el-collapse v-model="activeNames">
        <el-collapse-item name="1">
        <template slot="title">
          <i class="el-icon-s-home"></i>货转明细
        </template>
      <div class="dialogTableTitle flex a-center jlr">
        <el-button :disabled="browseStatus" @click.prevent="addRelevant()"
        >新增
        </el-button
        >
        <el-button
          :disabled="dataListSelection.length <= 0 || browseStatus"
          @click.prevent="creditClick()"
        >货转确认
        </el-button>
        <el-button
          :disabled="dataWithdrawList.length <= 0 || browseStatus"
          @click.prevent="withdrawClick"
        >撤回货转
        </el-button
        >
        <el-button type="primary" :disabled="browseStatus" @click="saveForm">保 存</el-button>
      </div>
      <el-table
        :data="dataList"
        ref="tableListRef"
        tooltip-effect="dark"
        border
        stripe
        :summary-method="getSummaries"
        @selection-change="Selectinventory"
        show-summary
      >
        <el-table-column type="selection" width="55" fixed align="center"/>
        <el-table-column label="序号" type="index" fixed width="80">
        </el-table-column>
        <el-table-column
          prop="fGoodsids"
          header-align="center"
          align="center"
          fixed
          width="140px"
          label="品名"
        >
        </el-table-column>
        <el-table-column
          prop="fBillstatus"
          header-align="center"
          width="150px"
          fixed
          align="center"
          label="状态"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.fBillstatus === 6">货转</span>
            <span v-else>录入</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="fBsdate"
          header-align="center"
          align="center"
          fixed
          width="150px"
          label="货转日期"
        >
          <template slot-scope="scope">
            <el-date-picker
              v-model="scope.row.fBsdate"
              style="width: 138px"
              :disabled="
                    browseStatus ||
                    scope.row.fBillstatus === 20 ||
                    scope.row.fBillstatus === 30 ||
                    scope.row.fBillstatus === 40
                  "
              type="date"
              value-format="timestamp"
              placeholder="货转日期"
            >
            </el-date-picker>
          </template>
        </el-table-column>
        <el-table-column
          prop="fMarks"
          header-align="center"
          align="center"
          width="140px"
          label="品牌"
        >
        </el-table-column>
        <el-table-column
          prop="fBusinessType"
          header-align="center"
          width="140px"
          align="center"
          label="*货物属性"
        >
          <template slot-scope="scope">
            <el-select v-model="scope.row.fBusinessType"
                       filterable
                       disabled
                       placeholder="请选择商品属性"
            >
              <el-option
                v-for="(dict, index) in fStorageTypeOptions"
                :key="index.dictValue"
                :label="dict.dictLabel"
                :value="dict.dictValue"
              />
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          prop="fMarks"
          header-align="center"
          align="center"
          width="140px"
          label="*属性详情"
        >
        </el-table-column>
        <el-table-column
          prop="fMblno"
          header-align="center"
          align="center"
          width="140px"
          label="提单号"
        >
        </el-table-column>
        <el-table-column
          prop="fWarehouseInformation"
          header-align="center"
          width="150px"
          align="center"
          label="*库位"
        >
        </el-table-column>

        <el-table-column
          prop="fOriginalbillno"
          header-align="center"
          align="center"
          width="140px"
          label="原始入库单号"
        >
        </el-table-column>
        <el-table-column
          prop="fPlanqty"
          header-align="center"
          align="center"
          width="180px"
          label="*结余件数"
        >
        </el-table-column>
        <el-table-column
          prop="fPlangrossweight"
          header-align="center"
          align="center"
          width="180px"
          label="*库存毛重(kg)"
        >
        </el-table-column>
        <el-table-column
          prop="fPlannetweight"
          header-align="center"
          width="180px"
          align="center"
          label="*库存净重(kg)"
        >
        </el-table-column>
        <el-table-column
          prop="fQty"
          header-align="center"
          width="180px"
          align="center"
          label="*货转件数"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
              @change="qtyChange(scope.row)"
              v-model="scope.row.fQty"
              placeholder="*货转件数"
              :disabled="browseStatus || scope.row.fBillstatus === 6"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fGrossweight"
          header-align="center"
          width="180px"
          align="center"
          label="*货转毛重(kg)"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d\d\d\d\d).*$/, "$1$2.$3")'
              :disabled="browseStatus || scope.row.fBillstatus === 6"
              @change="changeTransfer(scope.row)"
              v-model="scope.row.fGrossweight"
              placeholder="货转毛重"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fNetweight"
          header-align="center"
          width="180px"
          align="center"
          label="*货转净重(kg)"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d\d\d\d\d).*$/, "$1$2.$3")'
              :disabled="browseStatus || scope.row.fBillstatus === 6"
              v-model="scope.row.fNetweight"
              @change="changeTransfer(scope.row)"
              placeholder="货转净重"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fCntqty"
          header-align="center"
          width="180px"
          align="center"
          label="箱量"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
              v-model="scope.row.fCntqty"
              placeholder="箱量"
              :disabled="browseStatus || scope.row.fBillstatus === 6"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fPackagespecs"
          header-align="center"
          width="180px"
          align="center"
          label="*包装规格"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fPackagespecs"
              :disabled="browseStatus || scope.row.fBillstatus === 6"
              placeholder="包装规格"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fGoodsval"
          header-align="center"
          width="150px"
          align="center"
          label="货值"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
              v-model="scope.row.fGoodsval"
              placeholder="货值"
              :disabled="browseStatus || scope.row.fBillstatus === 6"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="remark"
          header-align="center"
          width="150px"
          align="center"
          label="备注"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.remark"
              placeholder="备注"
              :disabled="browseStatus"
              show-word-limit
            />
          </template>
        </el-table-column>

        <el-table-column
          header-align="center"
          align="center"
          label="操作"
          width="130PX"
        >
          <template slot-scope="scope">
            <el-button
              :disabled="browseStatus"
              @click.native.prevent="deleteRow(scope.$index, dataList)"
              size="small"
            >移除
            </el-button
            >
          </template>
        </el-table-column>
      </el-table>
      </el-collapse-item>


      <el-collapse-item>
        <template slot="title">
          <i class="el-icon-s-order"></i>附件上传
        </template>
      <div class="dialogTableTitle flex a-center jlr">
        <el-button :disabled="browseStatus" @click.prevent="addRelevt()"
        >新增
        </el-button>
        <el-button type="primary" :disabled="browseStatus" @click="saveForm">保 存</el-button>
      </div>
      <el-table
        :data="relevantAttachments"
        ref="attachTable"
        tooltip-effect="dark"
        border
        stripe
        style="width: 100%"
        height="150"
      >
        <el-table-column label="序号" type="index" width="80">
        </el-table-column>
        <el-table-column
          prop="fName"
          header-align="center"
          align="center"
          label="附件名称"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fName"
              :disabled="browseStatus"
              placeholder="附件名称"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="createBy"
          header-align="center"
          align="center"
          label="上传人"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.createBy"
              disabled
              placeholder="上传人"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="createTime"
          header-align="center"
          align="center"
          label="上传时间"
          width="200px"
        >
          <template slot-scope="scope">
            <el-date-picker
              v-model="scope.row.createTime"
              type="date"
              disabled
              placeholder="上传时间"
              format="yyyy-MM-dd HH:mm"
              value-format="timestamp"
            ></el-date-picker>
          </template>
        </el-table-column>
        <el-table-column
          prop="fUrl"
          header-align="center"
          align="center"
          width="300px"
          label="上传附件"
        >
          <template slot-scope="scope" >
            <el-upload
              class="upload-demo"
              :action="uploadImgUrl"
              :on-success="(res,file)=>{handleSucces(scope,res,file)}"
              :headers="headers"
              style="width:25%;float: left"
              :disabled="browseStatus"
              :show-file-list="false"
              :limit="1"
            >
              <el-button size="small" type="primary" :disabled="browseStatus">点击上传</el-button>
            </el-upload>
            <el-button size="small" type="primary" @click="checkFile(scope)">查看</el-button>
            <el-button size="small" type="primary" :disabled="browseStatus" @click="deleteFile(scope)">删除</el-button>
          </template>

        </el-table-column>
        <el-table-column
          header-align="center"
          align="center"
          label="操作"
          width="130PX"
        >
          <template slot-scope="scope">
            <el-button
              @click.native.prevent="
                deleteRow(scope.$index, relevantAttachments)
              "
              :disabled="browseStatus"
              size="small"
            >移除
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      </el-collapse-item>


      <el-collapse-item>
        <template slot="title">
          <i class="el-icon-circle-plus"></i>收款信息
        </template>
      <div class="dialogTableTitle flex a-center jlr">
        <el-button :disabled="browseStatus" @click.prevent="addCollection()"
        >新增
        </el-button>
        <el-button type="primary" :disabled="browseStatus" @click="saveForm">保 存</el-button>
      </div>
      <el-table
        :data="warehouseDrList"
        ref="warehouseDr"
        tooltip-effect="dark"
        border
        stripe
        :summary-method="warehouseDrSummaries"
        show-summary
      >
        <el-table-column label="序号" type="index" width="80">
        </el-table-column>
        <el-table-column
          prop="fCorpid"
          header-align="center"
          align="center"
          width="180px"
          label="客户名称"
        >
          <template slot-scope="scope">
            <el-select
              v-model="scope.row.fCorpid"
              filterable
              remote
              :disabled="browseStatus"
              :remote-method="corpsRemoteMethod"
              placeholder="客户名称"
            >
              <el-option
                v-for="(dict, index) in KHblnoOptions"
                :key="index.fId"
                :label="dict.fName"
                :value="dict.fId"
              ></el-option>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          prop="fFeeid"
          header-align="center"
          align="center"
          width="180px"
          label="费用名称"
        >
          <template slot-scope="scope">
            <el-select
              :disabled="browseStatus"
              v-model="scope.row.fFeeid"
              filterable
              remote
              :remote-method="fWRemoteMethod"
              @change="changeFeeId(scope.row)"
              placeholder="费用名称"
            >
              <el-option
                v-for="(dict, index) in fDNameOptions"
                :key="index.fId"
                :label="dict.fName"
                :value="dict.fId"
              ></el-option>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          prop="fStltypeid"
          header-align="center"
          align="center"
          width="130px"
          label="结算方式"
        >
          <template slot-scope="scope">
            <el-select
              v-model="scope.row.fStltypeid"
              placeholder="请选择结算表票结、月结"
              :disabled="browseStatus"
            >
              <el-option
                v-for="dict in fStltypeidOptions"
                :key="dict.dictValue"
                :label="dict.dictLabel"
                :value="parseInt(dict.dictValue)"
              ></el-option>
            </el-select>
          </template>
        </el-table-column>

        <el-table-column
          prop="fFeeunitid"
          header-align="center"
          align="center"
          width="180px"
          label="计价单位"
        >
          <template slot-scope="scope">
            <el-select
              v-model="scope.row.fFeeunitid"
              placeholder="请选择计价单位"
              :disabled="browseStatus"
              @change="changeFeeUnit(scope.row)"
              clearable
            >
              <el-option
                v-for="(dict, index) in fFeetunitOptions"
                :key="index.dictValue"
                :label="dict.dictLabel"
                :value="dict.dictValue"
              />
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          prop="fQty"
          header-align="center"
          align="center"
          width="150px"
          label="数量"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
              v-model="scope.row.fQty"
              placeholder="数量"
              :disabled="browseStatus"
              @change="changeContractAmt(scope.row)"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fUnitprice"
          header-align="center"
          align="center"
          width="150px"
          label="单价"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
              v-model="scope.row.fUnitprice"
              placeholder="单价"
              :disabled="browseStatus"
              @change="changeContractAmt(scope.row)"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fAmount"
          header-align="center"
          align="center"
          width="150px"
          label="金额"
        >
          <template slot-scope="scope">
            <el-input
              disabled
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
              v-model="scope.row.fAmount"
              placeholder="金额"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fCurrency"
          header-align="center"
          align="center"
          width="150px"
          label="币别"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fCurrency"
              :disabled="browseStatus"
              placeholder="币别"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fExrate"
          header-align="center"
          align="center"
          width="150px"
          label="汇率"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fExrate"
              :disabled="browseStatus"
              placeholder="汇率"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fTaxrate"
          header-align="center"
          align="center"
          width="150px"
          label="税率"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fTaxrate"
              :disabled="browseStatus"
              placeholder="税率"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fMblno"
          header-align="center"
          align="center"
          width="130px"
          label="提单号"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fMblno"
              :disabled="browseStatus"
              placeholder="提单号"
              show-word-limit
            />
          </template>
        </el-table-column>

        <el-table-column
          prop="fProductName"
          header-align="center"
          align="center"
          width="140px"
          label="品名"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fProductName"
              :disabled="browseStatus"
              placeholder="品名"
              show-word-limit
            />
          </template>
        </el-table-column>

        <el-table-column
          prop="fMarks"
          header-align="center"
          align="center"
          width="130px"
          label="品牌"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fMarks"
              :disabled="browseStatus"
              placeholder="品牌"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="remarks"
          header-align="center"
          align="center"
          width="150px"
          label="备注"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.remarks"
              :disabled="browseStatus"
              placeholder="备注"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          header-align="center"
          align="center"
          label="操作"
          width="150px"
        >
          <template slot-scope="scope">
<!--            <el-button size="small" :disabled="browseStatus">审核费用</el-button>-->
            <el-button
              @click.native.prevent="deleteRow(scope.$index, warehouseDrList)"
              size="small"
              :disabled="browseStatus"
            >移除
            </el-button
            >
          </template>
        </el-table-column>
      </el-table>
      </el-collapse-item>


      <el-collapse-item>
        <template slot="title">
          <i class="el-icon-remove"></i>付款信息
        </template>
      <div class="dialogTableTitle flex a-center jlr">
        <el-button :disabled="browseStatus" @click.prevent="addpayment()"
        >新增
        </el-button>
        <el-button type="primary" :disabled="browseStatus" @click="saveForm">保 存</el-button>
      </div>
      <el-table
        :data="warehouseCrList"
        ref="warehouseCr"
        tooltip-effect="dark"
        border
        stripe
        :summary-method="warehouseDrSummaries"
        show-summary
      >
        <el-table-column label="序号" type="index" width="80">
        </el-table-column>
        <el-table-column
          prop="fCorpid"
          header-align="center"
          align="center"
          width="180px"
          label="客户名称"
        >
          <template slot-scope="scope">
            <el-select
              v-model="scope.row.fCorpid"
              filterable
              remote
              :disabled="browseStatus"
              :remote-method="corpsRemoteMethod"
              placeholder="客户名称"
            >
              <el-option
                v-for="(dict, index) in KHblnoOptions"
                :key="index.fId"
                :label="dict.fName"
                :value="dict.fId"
              ></el-option>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          prop="fFeeid"
          header-align="center"
          align="center"
          width="180px"
          label="费用名称"
        >
          <template slot-scope="scope">
            <el-select
              v-model="scope.row.fFeeid"
              filterable
              remote
              :disabled="browseStatus"
              :remote-method="fWRemoteMethod"
              @change="changeFeeId(scope.row)"
              placeholder="费用名称"
            >
              <el-option
                v-for="(dict, index) in fCNameOptions"
                :key="index.fId"
                :label="dict.fName"
                :value="dict.fId"
              ></el-option>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          prop="fStltypeid"
          header-align="center"
          align="center"
          width="130px"
          label="结算方式"
        >
          <template slot-scope="scope">
            <el-select
              v-model="scope.row.fStltypeid"
              placeholder="请选择结算表票结、月结"
              :disabled="browseStatus"
            >
              <el-option
                v-for="dict in fStltypeidOptions"
                :key="dict.dictValue"
                :label="dict.dictLabel"
                :value="parseInt(dict.dictValue)"
              ></el-option>
            </el-select>
          </template>
        </el-table-column>

        <el-table-column
          prop="fFeeunitid"
          header-align="center"
          align="center"
          width="180px"
          label="计价单位"
        >
          <template slot-scope="scope">
            <el-select
              v-model="scope.row.fFeeunitid"
              filterable
              remote
              :disabled="browseStatus"
              @change="changeFeeUnit(scope.row)"
              :remote-method="corpsRemoteMethod"
              placeholder="计价单位"
            >
              <el-option
                v-for="(dict, index) in fFeetunitOptions"
                :key="index.dictValue"
                :label="dict.dictLabel"
                :value="dict.dictValue"
              ></el-option>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          prop="fQty"
          header-align="center"
          align="center"
          width="150px"
          label="数量"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")'
              v-model="scope.row.fQty"
              :disabled="browseStatus"
              @change="changeContractAmt(scope.row)"
              placeholder="数量"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fUnitprice"
          header-align="center"
          align="center"
          width="150px"
          label="单价"
        >
          <template slot-scope="scope">
            <el-input
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
              v-model="scope.row.fUnitprice"
              :disabled="browseStatus"
              @change="changeContractAmt(scope.row)"
              placeholder="单价"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fAmount"
          header-align="center"
          align="center"
          width="150px"
          label="金额"
        >
          <template slot-scope="scope">
            <el-input
              disabled
              oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
              v-model="scope.row.fAmount"
              placeholder="金额"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fCurrency"
          header-align="center"
          align="center"
          width="150px"
          label="币别"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fCurrency"
              :disabled="browseStatus"
              placeholder="币别"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fExrate"
          header-align="center"
          align="center"
          width="150px"
          label="汇率"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fExrate"
              :disabled="browseStatus"
              placeholder="汇率"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fTaxrate"
          header-align="center"
          align="center"
          width="150px"
          label="税率"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fTaxrate"
              :disabled="browseStatus"
              placeholder="税率"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="fMblno"
          header-align="center"
          align="center"
          width="130px"
          label="提单号"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fMblno"
              :disabled="browseStatus"
              placeholder="提单号"
              show-word-limit
            />
          </template>
        </el-table-column>

        <el-table-column
          prop="fProductName"
          header-align="center"
          align="center"
          width="140px"
          label="品名"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fProductName"
              :disabled="browseStatus"
              placeholder="品名"
              show-word-limit
            />
          </template>
        </el-table-column>

        <el-table-column
          prop="fMarks"
          header-align="center"
          align="center"
          width="130px"
          label="品牌"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fMarks"
              :disabled="browseStatus"
              placeholder="品牌"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="remarks"
          header-align="center"
          align="center"
          width="150px"
          label="备注"
        >
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.remarks"
              :disabled="browseStatus"
              placeholder="备注"
              show-word-limit
            />
          </template>
        </el-table-column>
        <el-table-column
          header-align="center"
          align="center"
          width="150px"
          label="操作"
        >
          <template slot-scope="scope">
<!--            <el-button size="small">审核费用</el-button>-->
            <el-button
              @click.native.prevent="deleteRow(scope.$index, warehouseCrList)"
              :disabled="browseStatus"
              size="small"
            >移除
            </el-button
            >
          </template>
        </el-table-column>
      </el-table>
      </el-collapse-item>
      </el-collapse>

      <div slot="footer" class="dialog-footer">
        <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
        <approval-comments v-if="addOrUpdateVisib" ref="ApprovalComments" @refreshDataList="returnData"></approval-comments>

        <el-button type="primary" :disabled="notChange" @click="saveForm">保 存</el-button>
        <el-button v-if="approve === true" @click="goApproval">审批</el-button>
        <el-button type="success" @click="backrRconciliation" v-if="form.fBillstatus == '6'">撤销请核</el-button>
        <el-button type="primary" :disabled="approvalStatus" v-if="form.fBillstatus > 3" @click="addOrUpdateHandle()">查看审批流</el-button>
        <el-button type="primary" :disabled="notChange" @click="submitForm">提交审核</el-button>
        <el-button type="danger" :disabled="disappear" v-if="form.fBillstatus == '4' && Operator == Lander" @click="backApproval">撤销审批</el-button>
        <el-button v-if="cancelButton === true" @click="cancel">取 消</el-button>
        <el-button v-if="cancelButton === false" @click="homePage">取消</el-button>
      </div>
      <!-- 选择库存总账数据 -->
      <el-dialog
        title="库存总账"
        :modal="false"
        style="box-shadow: 0 1px 3px rgba(0, 0, 0, 0) !important"
        :visible.sync="whgenlegVisible"
        :close-on-click-modal="false"
        width="70%"
      >
        <el-table
          :data="whgenlegList"
          ref="tableList"
          tooltip-effect="dark"
          width="100%"
          border
          stripe
          @selection-change="whgenlegSelectionChange"
        >
          <el-table-column type="selection" width="55"></el-table-column>
          <el-table-column
            prop="fMblno"
            header-align="center"
            align="center"
            label="提单号"
          >
          </el-table-column>
          <el-table-column
            prop="createTime"
            header-align="center"
            align="center"
            width="180px"
            label="入库日期"
          >
          </el-table-column>
          <el-table-column
            prop="fGoodsids"
            header-align="center"
            align="center"
            label="品名"
          >
          </el-table-column>
          <el-table-column
            prop="fCntrno"
            header-align="center"
            align="center"
            label="箱号"
          />
          <el-table-column
            prop="fGrossweightblc"
            header-align="center"
            align="center"
            label="毛重"
          />
          <el-table-column
            prop="fNetweightblc"
            header-align="center"
            align="center"
            label="净重"
          />
          <el-table-column
            prop="fQtyblc"
            header-align="center"
            align="center"
            label="结余数量"
          >
          </el-table-column>
          <el-table-column
            prop="fWarehouseids"
            header-align="center"
            align="center"
            label="库位"
          >
          </el-table-column>
<!--          <el-table-column-->
<!--            prop="fWarehouseLocationids"-->
<!--            header-align="center"-->
<!--            align="center"-->
<!--            label="库区"-->
<!--          >-->
<!--          </el-table-column>-->
        </el-table>
        <pagination
          v-show="whgenlegTotal > 0"
          :total="whgenlegTotal"
          :page.sync="whgenlegParams.pageNum"
          :limit.sync="whgenlegParams.pageSize"
          @pagination="getWhgenlegList"
        />
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="whgenlegData">导入</el-button>
          <el-button @click="whgenlegVisible = false">取 消</el-button>
        </div>
      </el-dialog>
    </el-dialog>
  </div>
</template>

<script>
  import print from 'print-js'
  import {
    backFee,
    RevocationApproval,
    addWhgenleg,
    listGoodsTransfer,
    getGoodsTransfer,
    addGoodsTransfer,
    warehouseSubmission,
    delGoodsTransfer,
    delgoodsTransfer_s,
    exportgoodsTransfer
  } from '@/api/warehouseBusiness/goodsTransfer'
  import { updateCredit } from '@/api/warehouseBusiness/goodsTransfer'
  import { listCorps } from '@/api/basicdata/corps'

  import { listFees } from '@/api/basicdata/fees'

  import { listWarehouse, listWarehousesss, treeselect } from '@/api/basicdata/warehouse'

  import { listArea } from '@/api/basicdata/area'

  import { listGoods } from '@/api/basicdata/goods'

  import { listUser, queryUserVal } from '@/api/system/user'

  import { listWhgenleg } from '@/api/reportManagement/whgenleg'

  import UploadFile from '@/components/Uploadfile'

  import AddOrUpdate from '@/views/viewApproval'
  import ApprovalComments from '@/views/startApproval'
  import Global from '@/layout/components/global'
  import { getAgreement } from '@/api/warehouseBusiness/agreement'
  import Treeselect from '@riophae/vue-treeselect'
  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  import { getToken } from '@/utils/auth'
  import Cookies from 'js-cookie'
  import { addSet, select } from '@/api/system/set'
  import draggable from "vuedraggable";
  import Vue from 'vue'

  Vue.directive('dialogDrag', {
    bind(el, binding, vnode, oldVnode) {
      const dialogHeaderEl = el.querySelector('.el-dialog__header')
      const dragDom = el.querySelector('.el-dialog')
      const enlarge = el.querySelector('.enlarge')
      dialogHeaderEl.style.cursor = 'move'

      // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
      const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null)
      if(enlarge){
        enlarge.onclick = (e) => {
          dragDom.style.top = '0px'
          dragDom.style.left = '0px'
        }
      }
      dialogHeaderEl.onmousedown = (e) => {
        // 鼠标按下，计算当前元素距离可视区的距离
        const disX = e.clientX - dialogHeaderEl.offsetLeft
        const disY = e.clientY - dialogHeaderEl.offsetTop

        // 获取到的值带px 正则匹配替换
        let styL, styT

        // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
        if (sty.left.includes('%')) {
          styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100)
          styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100)
        } else {
          styL = +sty.left.replace(/\px/g, '')
          styT = +sty.top.replace(/\px/g, '')
        }

        document.onmousemove = function(e) {
          // 通过事件委托，计算移动的距离
          const l = e.clientX - disX
          const t = e.clientY - disY

          // 移动当前元素

          if ((t + styT) >= 0){
            dragDom.style.top = `${t + styT}px`
          }
          dragDom.style.left = `${l + styL}px`
          // 将此时的位置传出去
          // binding.value({x:e.pageX,y:e.pageY})
        }

        document.onmouseup = function(e) {
          document.onmousemove = null
          document.onmouseup = null
        }
      }
    }
  })
  export default {
    name: 'goodsTransfer',
    components: {
      UploadFile,
      AddOrUpdate,
      ApprovalComments,
      Treeselect,
      draggable,
    },
    data() {
      return {
        idCopy:'',
        //全屏放大
        dialogFull:false,
        drag: false,
        setRowList: [
          {
            surface: "1",
            label: "createBy",
            name: "制单人",
            checked: 0,
            width: 100,
          },
          {
            surface: "13",
            label: "fItemsStatus",
            name: "货转状态",
            checked: 0,
            width: 100,
          },
          {
            surface: "14",
            label: "fBillstatus",
            name: "费用状态",
            checked: 0,
            width: 100,
          },
          {
            surface: "2",
            label: "fCorpid",
            name: "货权方",
            checked: 0,
            width: 100,
          },
          {
            surface: "3",
            label: "fTocorpid",
            name: "转货权方",
            checked: 0,
            width: 100,
          },
          {
            surface: "4",
            label: "fProductName",
            name: "品名",
            checked: 0,
            width: 100,
          },
          {
            surface: "5",
            label: "fMarks",
            name: "品牌",
            checked: 0,
            width: 100,
          },
          {
            surface: "6",
            label: "fBillno",
            name: "业务编号",
            checked: 0,
            width: 100,
          },
          {
            surface: "7",
            label: "fBsdate",
            name: "货转日期",
            checked: 0,
            width: 100,
          },
          {
            surface: "8",
            label: "fTrademodeid",
            name: "贸易方式",
            checked: 0,
            width: 100,
          },
          {
            surface: "9",
            label: "fWarehouseid",
            name: "仓库",
            checked: 0,
            width: 100,
          },
          {
            surface: "10",
            label: "fQty",
            name: "件数",
            checked: 0,
            width: 100,
          },
          {
            surface: "11",
            label: "fGrossweight",
            name: "毛重(kg)",
            checked: 0,
            width: 100,
          },
          {
            surface: "12",
            label: "fNetweight",
            name: "净重(kg)",
            checked: 0,
            width: 100,
          },

        ],
        getRowList: [
          {
            surface: "1",
            label: "createBy",
            name: "制单人",
            checked: 0,
            width: 100,
          },
          {
            surface: "13",
            label: "fItemsStatus",
            name: "货转状态",
            checked: 0,
            width: 100,
          },
          {
            surface: "14",
            label: "fBillstatus",
            name: "费用状态",
            checked: 0,
            width: 100,
          },
          {
            surface: "2",
            label: "fCorpid",
            name: "货权方",
            checked: 0,
            width: 100,
          },
          {
            surface: "3",
            label: "fTocorpid",
            name: "转货权方",
            checked: 0,
            width: 100,
          },
          {
            surface: "4",
            label: "fProductName",
            name: "品名",
            checked: 0,
            width: 100,
          },
          {
            surface: "5",
            label: "fMarks",
            name: "品牌",
            checked: 0,
            width: 100,
          },
          {
            surface: "6",
            label: "fBillno",
            name: "业务编号",
            checked: 0,
            width: 100,
          },
          {
            surface: "7",
            label: "fBsdate",
            name: "货转日期",
            checked: 0,
            width: 100,
          },
          {
            surface: "8",
            label: "fTrademodeid",
            name: "贸易方式",
            checked: 0,
            width: 100,
          },
          {
            surface: "9",
            label: "fWarehouseid",
            name: "仓库",
            checked: 0,
            width: 100,
          },
          {
            surface: "10",
            label: "fQty",
            name: "件数",
            checked: 0,
            width: 100,
          },
          {
            surface: "11",
            label: "fGrossweight",
            name: "毛重(kg)",
            checked: 0,
            width: 100,
          },
          {
            surface: "12",
            label: "fNetweight",
            name: "净重(kg)",
            checked: 0,
            width: 100,
          },
        ],
        allCheck: false,
        showSetting:false,
        headers: {
          Authorization: 'Bearer ' + getToken()
        },
        uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
        fDNameOptions:[],
        fCNameOptions:[],
        activeNames:['1'],
        //仓库树状图
        warehousesOptions:[],
        fWarehouseidOption:[],
        Lander:'',
        Operator:'',
        colseButton:true,
        cancelButton:true,
        disappear:false,
        goodsTransferId:130,
        addOrUpdateVisible: false,
        addOrUpdateVisib:false,
        approvalStatus: false,
        // 审批状态
        approve:false,
        notChange:false,
        // 修改查看状态
        browseStatus: false,
        // 是否有明细入库
        formBrowseStatus: false,
        // 遮罩层
        loading: true,
        // 选中数组
        ids: [],
        userVal: {
          userName: null,
          nickName: null,
          deptId: null
        },
        queryForm: {},
        // 添加用户对话框
        editDialogVisible_s: false,
        editDialogVisible_ss: false,
        editDialogClosed_ss: false,
        dataList: [],
        warehouseCrList: [],
        warehouseDrList: [],
        relevantAttachments: [],
        fPlannetweight: '',
        // 税率
        fTaxrate: null,
        // 非单个禁用
        single: true,
        // 非多个禁用
        multiple: true,
        // 显示搜索条件
        showSearch: true,
        // 总条数
        total: 0,
        // 仓库主(出入库)表格数据
        goodsTransferList: [],
        // 弹出层标题
        title: '',
        // 是否显示弹出层
        open: false,
        // 货权方(客户数据)
        fMblnoOptions: [],
        // 货权方(客户数据)
        // 客户名称
        KHblnoOptions: [],
        fSbuOptions: [],
        // 操作员
        userOptions: [],
        // 操作员
        goodsOptions: [],
        // 库存明细入账数组
        dataListSelection: [],
        // 库存明细撤回入账数组
        dataWithdrawList: [],
        // 仓库(仓库
        warehouseOptions: [],
        // 仓储类型 入库时选择 产地 规格 品牌 所用,对应storage_type 字典
        fStorageTypeOptions: [],
        kqhouseOptions: [],
        // 贸易方式(数据字典),对应t_trademodels 字典
        fTrademodeidOptions: [],
        // 计费单位(数据字典),下拉选择毛重或净重字典
        fFeetunitOptions: [],
        // 结算方式(数据字典),下拉选择字典
        fStltypeOptions: [],
        // 是否过磅(数据字典)默认 F ,过磅T 否者F 下拉选择字典
        fIfweighOptions: [],
        // 是否质押(数据字典),默认 F ,质押T 否者F 下拉选择字典
        fIfpledgeOptions: [],
        // 是否破损(数据字典),默认F否则T字典
        fIfdamageOptions: [],
        // 单据类型(数据字典)SJRK字典
        fBilltypeOptions: [],
        // 状态(数据字典),N 入字典
        fBillstatusOptions: [],
        //结算方式对应字典表
        fStltypeidOptions:[],
        // 费用名称
        fWbuOptions: [],
        fGrossweight: 0,
        fNetweight: 0,
        fQty: 0,
        // 查询参数
        queryParams: {
          pageNum: 1,
          pageSize: 10,
          fBillno: null,
          createBy: null,
          createTime: null,
          fCustomsdeclartion: null,
          fOriginalbillno: null,
          fDeptid: null,
          fBsdeptid: null,
          fContacts: null,
          fTel: null,
          fCorpid: null,
          fTocorpid: null,
          fStltypeid: null,
          fBscorpno: null,
          fWarehouseid: null,
          fStorekeeper: null,
          fBsdate: null,
          fPlanqty: null,
          fPlangrossweight: null,
          fPlannetweight: null,
          fPlanvolumn: null,
          fQty: null,
          fGrossweight: null,
          fNetweight: null,
          fVolumn: null,
          fTrademodeid: null,
          fSbu: null,
          fFeetunit: null,
          fMblno: null,
          fVslvoy: null,
          fEta: null,
          fCustomno: null,
          fIfweigh: null,
          fIfpledge: null,
          fIfdamage: null,
          fBankcorpid: null,
          fBilltype: null,
          fBillstatus: null,
          fCreateby: null,
          fCreatetime: null,
          fGoodsid: null,
          fCntrtype: null,
          fCntqty: null
        },
        // 日期区间
        orgStorageDate: null,
        // 表单参数
        form: {
          fFeetunit:"2"
        },
        // 库存总账参数
        whgenlegParams: {
          pageNum: 1,
          pageSize: 10,
          fMblno: null,
          fCorpid: null,
          fWarehouseid: null,
          fTrademodeid: null,
          orgStorageDate: null
        },
        // 库存总账表
        whgenlegList: [],
        whgenlegTotal: 0,
        // 弹窗库存总账数据
        dialogWhgenlegList: [],
        // 库存总账对话框
        whgenlegVisible: false,
        // 表单校验
        rules: {
          fBsdeptid: [{ required: true, message: ' ', trigger: 'blur' }],
          fCorpid: [{ required: true, message: ' ', trigger: 'blur' }],
          fBsdate: [{ required: true, message: ' ', trigger: 'blur' }],
          fFeetunit: [{ required: true, message: ' ', trigger: 'blur' }],
          fChargedate: [{ required: true, message: ' ', trigger: 'blur' }],
          fTrademodeid: [{ required: true, message: ' ', trigger: 'blur' }],
          fSbu: [{ required: true, message: ' ', trigger: 'blur' }],
          fStorekeeper: {
            required: true,
            message: ' ',
            trigger: 'blur'
          },
          fWarehouseid: [{ required: true, message: ' ', trigger: 'blur' }],
          fbillingway: [
            {
              required: true,
              message: ' ',
              trigger: 'blur'
            }
          ],
          fTocorpid: [
            {
              required: true,
              message: ' ',
              trigger: 'blur'
            }
          ]
        }
      }
    },
    created() {
      this.getList()
      this.getDicts('tax_rate').then((response) => {
        this.fTaxrate = response.data[0].dictValue
      })
      this.getDicts('data_trademodes').then((response) => {
        this.fTrademodeidOptions = response.data
      })
      this.getDicts("storage_type").then((response) => {
        this.fStorageTypeOptions = response.data;
      });
      this.getDicts('data_stltype_type').then((response) => {
        this.fStltypeOptions = response.data
      })
      this.getDicts('data_ifweigh_status').then((response) => {
        this.fIfweighOptions = response.data
      })
      this.getDicts('data_ifpledge_status').then((response) => {
        this.fIfpledgeOptions = response.data
      })
      this.getDicts('data_ifdamage_status').then((response) => {
        this.fIfdamageOptions = response.data
      })
      this.getDicts('data_billtype_type').then((response) => {
        this.fBilltypeOptions = response.data
      })
      this.getDicts('sys_common_status').then((response) => {
        this.fBillstatusOptions = response.data
      })
      this.getDicts('data_unitfees').then((response) => {
        this.fFeetunitOptions = response.data
      })
      this.getDicts("data_stltype_type").then(response => {
        this.fStltypeidOptions = response.data;
      });
      treeselect().then(response => {
        this.fWarehouseidOption = response.data
      })
      this.register()
      this.warehousesssMethod()
      this.getRow();
      let queryParams = { pageNum: 1, fDc:'C'};
      listFees(queryParams).then((response) => {
        this.fCNameOptions = response.rows;
      });
      let query = { pageNum: 1, fDc:'D'};
      listFees(query).then((response) => {
        this.fDNameOptions = response.rows;
      });
    },
    activated(){
      this.Jump()
    },
    methods: {
      full(){
        this.dialogFull = !this.dialogFull
      },
      //列设置全选
      allChecked() {
        if (this.allCheck == true) {
          this.setRowList.map((e) => {
            return (e.checked = 0);
          });
        } else {
          this.setRowList.map((e) => {
            return (e.checked = 1);
          });
        }
      },
      //查询列数据
      getRow() {
        let that = this;
        this.data = {
          tableName: "货转",
          userId: Cookies.get("userName"),
        };
        select(this.data).then((res) => {
          if (res.data.length != 0) {
            this.getRowList = res.data.filter((e) => e.checked == 0);
            this.setRowList = res.data;
            this.setRowList = this.setRowList.reduce((res, item) => {
              res.push({
                surface: item.surface,
                label: item.label,
                name: item.name,
                checked: item.checked,
                width: item.width,
              });
              return res;
            }, []);
          }
        });
      },
      //保存列设置
      save() {
        this.showSetting = false;
        this.data = {
          tableName: "货转",
          userId: Cookies.get("userName"),
          sysTableSetList: this.setRowList,
        };
        addSet(this.data).then((res) => {
          this.getRowList = this.setRowList.filter((e) => e.checked == 0);
        });
      },
      //开始拖拽事件
      onStart() {
        this.drag = true;
      },
      //拖拽结束事件
      onEnd() {
        this.drag = false;
      },
      deleteFile(scope){
        this.relevantAttachments[scope.$index].fName = ''
        this.relevantAttachments[scope.$index].fUrl = ''
        this.$message.success("删除成功")
      },
      checkFile(scope){

        if(this.relevantAttachments[scope.$index].fUrl){
          window.open(this.relevantAttachments[scope.$index].fUrl)
        }else{
          this.$message.error("请上传附件")
        }
      },
      handleSucces(scope,res,file){
        this.relevantAttachments[scope.$index].fName = res.fileName
        this.relevantAttachments[scope.$index].fUrl = res.url
        if(this.relevantAttachments[scope.$index].fUrl === ''){
          this.$message.error('上传失败')
        }
      },
      //合计
      getSum(param){
        const { columns, data } = param
        const sums = []
        columns.forEach((column, index) => {
          if (index === 0) {
            sums[index] = '总计'
          } else if ( index ===13 || index ===11 || index ===12 ) {
            const values = data.map(item => Number(item[column.property]))
            if (!values.every(value => isNaN(value))) {
              sums[index] = values.reduce((prev, curr) => {
                const value = Number(curr)
                if (!isNaN(value)) {
                  return prev + curr
                } else {
                  return prev
                }
              }, 0)
              if(index ===13 || index ===12){
                sums[index] = (sums[index]/1000).toFixed(2) + '(吨)'
              }
            }
          }
        })
        return sums
      },
      /** 查询部门下拉树结构 */
      treeseLect(tree){
        this.queryParams.fWarehouselocid = tree.id
      },
      getTreeselect() {
        treeselect().then(response => {
          this.warehousesOptions = response.data;
        });
      },
      // 撤销审核
      backrRconciliation(){
        this.form.fBillstatus = '1'
        backFee(this.form.fId).then(response=>{
          this.msgSuccess("撤回成功")
          this.getList()
          this.open = false
          this.getList()
        })
      },
      // 默认录入人
      register() {
        queryUserVal().then((response)=>{
          this.Lander = response.user.userName
        })
      },
      // 审批按钮
      goApproval(){
        this.addOrUpdateVisib = true
        this.$nextTick(() => {
          this.$refs.ApprovalComments.init(this.form.fId,this.goodsTransferId)
        })
      },
      Jump(){
        this.approval = this.$route.query.data
        if(this.approval){
          this.getTreeselect()
          this.reset()
          this.colseButton = false
          this.approval = JSON.parse(this.approval)
          this.hide = false
          this.open = true
          this.browseStatus = true
          this.notChange = true
          this.approve = true
          this.disappear = true
          this.cancelButton = false
          getGoodsTransfer(this.approval.billId).then((response) => {
            if (response.data.warehousebills) {
              this.form = response.data.warehousebills;
              if (this.form.fBillstatus > 2) {
                this.approvalStatus = false;
              } else {
                this.approvalStatus = true;
              }
            }
            this.form = response.data.warehousebills
            this.$set(this.form, 'fStltypeid', this.form.fStltypeid + '')
            this.$set(this.form, 'fFeetunit', Number(this.form.fFeetunit))
            this.$set(this.form, 'fChargedate', Date.parse(this.form.fChargedate))
            this.$set(this.form, 'fTrademodeid', this.form.fTrademodeid + '')
            this.fMblnoOptions = response.data.corps
            this.KHblnoOptions = response.data.corps
            this.fWbuOptions = response.data.feesList
            this.warehouseOptions = response.data.warehouse
            this.dataList = response.data.warehouseBillsItem
            for (let list in this.dataList) {
              if (this.dataList[list].fBillstatus && this.dataList[list].fBillstatus === 6) {
                this.formBrowseStatus = true
              }
              this.$set(this.dataList[list], 'fBsdate', Date.parse(this.dataList[list].fBsdate))
              this.$set(this.dataList[list], 'fBusinessType', this.dataList[list].fBusinessType + '')
            }
            this.goodsOptions = response.data.goodsList
            if (response.data.warehousebillsfeesDr) {
              this.warehouseDrList = response.data.warehousebillsfeesDr
              for (let dr in this.warehouseDrList) {
                this.$set(this.warehouseDrList[dr], "fFeeunitid", this.warehouseDrList[dr].fFeeunitid + '');
              }
            }
            if (response.data.warehousebillsfeesCr) {
              this.warehouseCrList = response.data.warehousebillsfeesCr
              for (let cr in this.warehouseCrList) {
                this.$set(this.warehouseCrList[cr], "fFeeunitid", this.warehouseCrList[cr].fFeeunitid + "");
              }
            }
            if (response.data.enclosures) {
              this.relevantAttachments = response.data.enclosures;
            }
            this.userOptions = response.data.sysUser
            this.$set(this.form, 'fBsdate', Date.parse(this.form.fBsdate))
            this.open = true
            this.title = '修改货存转移'
          })

        }
      },

      homepaGe(){
        let view = {
          fullPath: "/business/goodsTransfer",
          hash: "",
          matched: Array(2),
          meta: Object,
          name: "GoodsTransfer",
          params: Object,
          path: "/business/goodsTransfer",
          query: Object,
          title: "货转"
        }
        this.$router.push({ path: '/index'})
        this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => {
          if (this.isActive(view)) {
            this.toLastView(visitedViews, view)
          }
        })
        Global.$emit("removeCache", "closeSelectedTag", view);
      },
      homePage() {
        this.open = false
        let view = {
          fullPath: "/business/goodsTransfer",
          hash: "",
          matched: Array(2),
          meta: Object,
          name: "GoodsTransfer",
          params: Object,
          path: "/business/goodsTransfer",
          query: Object,
          title: "货转"
        }
        this.$router.push({ path: '/index' })
        this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => {
          if (this.isActive(view)) {
            this.toLastView(visitedViews, view)
          }
        })
        Global.$emit("removeCache", "closeSelectedTag", view);
      },
      // 撤销审批
      backApproval(){
        let data = {
          id:this.form.fId,
          actId:this.goodsTransferId,
          billId:this.form.fId
        }
        RevocationApproval(data).then(response => {
          this.msgSuccess("撤销审批成功")
          this.disappear = true
          this.open = false
          this.getList()
        })
      },
      returnData(){
        this.addOrUpdateVisib = false
        this.open = false
        this.homepaGe()
      },
      getDataList(){
        this.addOrUpdateVisible = false
      },
      // 查看审批流
      addOrUpdateHandle(){
        this.addOrUpdateVisible = true
        this.addOrUpdateVisib = false
        let id = '448'
        let actId = '110'
        this.$nextTick(() => {
          this.$refs.addOrUpdate.init(this.form.fId,this.goodsTransferId)
        })
      },
      // 上传成功返回数据
      showFile(row) {
        // this.$set(this.relevantAttachments[0], 'fName', row.fileName)
        this.$set(this.relevantAttachments[0], 'fUrl', row.url)
      },
      printSomething() {
        // 此处的style即为打印时的样式
        const style =
          '@media print { .print-div{ padding:8px;background-color:#cccccc;line-height:12px } .red{ color:#f00} .green{color:green} td{text-align: center}}'
        print({
          printable: 'print_area',
          type: 'html',
          style: style, // 亦可使用引入的外部css;
          scanStyles: false
        })
      },
      // 新增附件上传
      addRelevt() {
        this.relevantAttachments.push({
          fUrl: null,
          fName: null,
          createBy: this.form.createBy,
          createTime: Date.parse(new Date())
        })
      },
      // 添加list
      addRelevant() {
        this.$refs['form'].validate((valid) => {
          if (valid) {
            if (!this.form.fCorpid || !this.form.fTrademodeid || !this.form.fWarehouseid) {
              this.$message({ message: '请维护货权方、贸易方式、仓库', type: 'warning' })
              return false
            }
            this.whgenlegList = []
            this.dialogWhgenlegList = []
            this.whgenlegTotal = 0
            this.whgenlegVisible = true
            this.getWhgenlegList()
          }
        })
      },
      // 查询库存总账信息
      getWhgenlegList() {
        this.whgenlegParams.fMblno = this.form.fMblno
        this.whgenlegParams.fCorpid = this.form.fCorpid
        this.whgenlegParams.fWarehouseid = this.form.fWarehouseid
        this.whgenlegParams.fTrademodeid = this.form.fTrademodeid
        this.whgenlegParams.orgStorageDate = this.orgStorageDate
        listWhgenleg(this.whgenlegParams).then((response) => {
          this.whgenlegList = response.rows
          this.whgenlegTotal = response.total
        })
      },
      // 库存总账多选框
      whgenlegSelectionChange(selection) {
        this.dialogWhgenlegList = selection
      },
      // 库存总账导出数据
      whgenlegData() {
        if (this.dialogWhgenlegList.length === 0) {
          this.$message({ message: '未勾选信息', type: 'warning' })
          return false
        }
        setTimeout(() => {
          for (let whgen in this.dialogWhgenlegList) {
            this.dataList.push({
              fBsdate:this.form.fBsdate,
              fId: null,
              fQty: 0,
              fCntqty: 1,
              remark: null,
              fGoodsval: 0,
              fNetweight: 0,
              fBillstatus: 1,
              fGrossweight: 0,
              fMblno: this.dialogWhgenlegList[whgen].fMblno,
              fMarks: this.dialogWhgenlegList[whgen].fMarks,
              fPlanqty: this.dialogWhgenlegList[whgen].fQtyblc,
              fGoodsid: this.dialogWhgenlegList[whgen].fGoodsid,
              fVolumn: this.dialogWhgenlegList[whgen].fVolumnblc,
              fGoodsids: this.dialogWhgenlegList[whgen].fGoodsids,
              fBillingway: this.dialogWhgenlegList[whgen].fBillingway,
              fWarehouseInformation: this.dialogWhgenlegList[whgen].fWarehouseids,
              fPackagespecs: this.dialogWhgenlegList[whgen].fPackagespecs,
              fPlannetweight: this.dialogWhgenlegList[whgen].fNetweightblc,
              fOriginalbillno: this.dialogWhgenlegList[whgen].fOriginalbillno,
              fPlangrossweight: this.dialogWhgenlegList[whgen].fGrossweightblc,
              fBusinessType: this.dialogWhgenlegList[whgen].fBusinessType + '',
              fOriginalbilldate: this.dialogWhgenlegList[whgen].fOriginalbilldate,
              fWarehouselocid: this.dialogWhgenlegList[whgen].fWarehouseLocationid,
              fWarehouselocids: this.dialogWhgenlegList[whgen].fWarehouseLocationids
            })
          }
        }, 100)
        setTimeout(() => {
          this.updateDeduplication()
        }, 300)
        this.whgenlegVisible = false
      },
      // 更新主表品牌、品名并去重
      updateDeduplication: function() {
        if (this.dataList.length === 0) {
          return false
        }
        let fMarks = []
        let fProductName = []
        let fMblno = []
        for (let li in this.dataList) {
          fMarks.push(this.dataList[li].fMarks)
          fProductName.push(this.dataList[li].fGoodsids)
          fMblno.push(this.dataList[li].fMblno)
        }
        this.$set(this.form, 'fMarks', Array.from(new Set(fMarks)).join(","))
        this.$set(this.form, 'fProductName', Array.from(new Set(fProductName)).join(","))
        this.$set(this.form, 'fMblno', Array.from(new Set(fMblno)).join(","))

      },
      // 收货单打印界面
      showEditDialog_s() {
        this.editDialogVisible_s = true
      },
      showEditDialog_ss() {
        this.editDialogVisible_ss = true
      },
      // 收款信息
      addCollection() {
        this.$refs['form'].validate((valid) => {
          if (valid) {
            // 获取明细件数
            let fQty = 0;
            for (let li in this.dataList) {
              if (this.dataList[li].fQty) {
                fQty = parseFloat(Number(fQty) + Number(this.dataList[li].fQty)).toFixed(2)
              }
            }
            this.warehouseDrList.push({
              fCorpid: null,
              fFeeid: null,
              fFeeunitid: "1",
              fQty: fQty,
              fUnitprice: 0,
              fAmount: 0,
              fCurrency: null,
              fCxrate: null,
              fTaxrate: this.fTaxrate,
              fRate: null,
              remarks: null,
              fMblno: this.form.fMblno,
              fProductName: this.form.fProductName,
              fMarks: this.form.fMarks
            })
            let queryParams = { pageNum: 1, fDc: 'D' }
            listFees(queryParams).then((response) => {
              this.fDNameOptions = response.rows;
            })
          }
        })
      },
      addpayment() {
        this.$refs['form'].validate((valid) => {
          if (valid) {
            // 获取明细件数
            let fQty = 0;
            for (let li in this.dataList) {
              if (this.dataList[li].fQty) {
                fQty = parseFloat(Number(fQty) + Number(this.dataList[li].fQty)).toFixed(2)
              }
            }
            this.warehouseCrList.push({
              fCorpid: null,
              fFeeid: null,
              fFeeunitid: "1",
              fQty: fQty,
              fUnitprice: 0,
              fAmount: 0,
              fCurrency: null,
              fTaxrate: this.fTaxrate,
              fCxrate: null,
              fRate: null,
              remarks: null,
              fMblno: this.form.fMblno,
              fProductName: this.form.fProductName,
              fMarks: this.form.fMarks
            })
            let queryParams = { pageNum: 1, fDc: 'C' }
            listFees(queryParams).then((response) => {
              this.fCNameOptions = response.rows;
            })
          }
        })
      },
      queryUser() {
        queryUserVal().then((response) => {
          if (response.user !== null) {
            this.userVal = response.user
            this.$set(this.form, 'fDeptid', this.userVal.deptId)
            this.$set(this.form, 'createBy', this.userVal.userName)
            this.$set(this.form,"fStorekeeper",this.userVal.userName)
            this.$set(this.form, 'fTrademodeid', '1')
            // this.$set(this.relevantAttachments, "opUserName", this.userVal.userName);
            this.$set(this.form, 'createTime', Date.parse(new Date()))
          }
        })
      },
      /** 查询仓库主(出入库)列表 */
      getList() {
        this.loading = true

        listGoodsTransfer(this.queryParams).then((response) => {
          console.log(response)
          this.goodsTransferList = response.rows
          this.total = response.total
          this.loading = false
        })
      },
      /* 获取所有仓库信息 */
      warehousesssMethod() {
        let queryParams = { pageNum: 1, fStatus: 0, delFlag: 0 };
        listWarehousesss(queryParams).then((response) => {
          this.warehouseOptions = response.rows;
        });
      },
      /* 远程模糊查询库区 */
      kqhouseRemoteMethod(name) {
        if (name == null || name === '') {
          return false
        }
        if (!this.form.fWarehouseid) {
          this.$message.error('请输入仓库!')
          return false
        }

        let queryParams = {
          pageNum: 1,
          fWarehouseid: this.form.fWarehouseid,
          fName: name
        }
        listArea(queryParams).then((response) => {
          this.kqhouseOptions = response.rows
        })
      },
      // 贸易方式(数据字典),对���t_trademodels 字典翻译
      fTrademodeidFormat(row, column) {
        return this.selectDictLabel(this.fTrademodeidOptions, row.fTrademodeid)
      },
      // 是否过磅(数据字典)默认 F ,过磅T 否者F 下拉选择字典翻译
      fIfweighFormat(row, column) {
        return this.selectDictLabel(this.fIfweighOptions, row.fIfweigh)
      },
      // 编号字典翻译
      fStltypeidFormat(row, column) {
        return this.selectDictLabel(this.fStltypeOptions, row.fStltypeid)
      },
      // 是否质押(数据字典),默认 F ,质押T 否者F 下拉选择字典翻译
      fIfpledgeFormat(row, column) {
        return this.selectDictLabel(this.fIfpledgeOptions, row.fIfpledge)
      },
      // 是否破损(数据字典),默认F否则T字典翻译
      fIfdamageFormat(row, column) {
        return this.selectDictLabel(this.fIfdamageOptions, row.fIfdamage)
      },
      // 单据类型(数据字典)SJRK字典翻译
      fBilltypeFormat(row, column) {
        return this.selectDictLabel(this.fBilltypeOptions, row.fBilltype)
      },
      // 状态(数据字典),N 入字典翻译
      fBillstatusFormat(row, column) {
        return this.selectDictLabel(this.fBillstatusOptions, row.fBillstatus)
      },
      // 取消按钮
      cancel() {
        this.reset()
        this.open = false
        this.getList()
      },
      // 表单重置
      reset() {
        this.disappear = false
        this.addOrUpdateVisible = false
        this.addOrUpdateVisib = false
        this.approve = false
        this.formBrowseStatus = false
        this.detailsHidden = false
        this.notChange = false
        this.browseStatus = false
        this.whgenlegVisible = false
        this.editDialogVisible_ss = false
        this.editDialogVisible_s = false
        this.dataList = []
        this.fWbuOptions = []
        this.fWbuOptions = []
        this.resetForm('form')
        this.fMblnoOptions = []
        this.KHblnoOptions = []
        this.KHblnoOptions = []
        this.warehouseDrList = []
        this.warehouseCrList = []
        this.warehouseOptions = []
        this.relevantAttachments = []
        this.form = {
          fCorpid:null,
          fTocorpid:null,
          fBillno:null,
          fBsdate:null,
          fChargedate:null,
          fStltypeid:null,
          fTrademodeid:null,
          fMblno:null,
          fFeetunit: '2',
          fOriginalbillno:null,
          orgStorageDate:null,
          fMarks:null,
          fProductName:null,
          formBrowseStatus:'1'
        }
      },
      /** 搜索按钮操作 */
      handleQuery() {
        this.queryParams.pageNum = 1
        this.getList()
      },
      /** 重置按钮操作 */
      resetQuery() {
        this.queryParams = {
          fBillno:null,
          createBy:null,
          timeInterval:null,
          fTrademodeid:null,
          fCorpid:null,
          fMblno:null,
          fSbu:null,
          fGoodsid:null,
          fWarehouseid:null,
          fMarks:null,
          fBillstatus:null
        }
        this.resetForm('queryForm')
        this.handleQuery()
      },
      // 多选框选中数据
      handleSelectionChange(selection) {
        this.ids = selection.map((item) => item.fId)
        this.idCopy = this.ids[0]
        this.single = selection.length !== 1 || selection.map((item) => item.fBillstatus) == 6 || selection.map((item) => item.fBillstatus) == 4
        this.multiple = !selection.length
      },
      /** 新增按钮操作 */
      handleAdd() {
        this.reset()
        this.notChange = false
        this.browseStatus = false
        this.queryUser()
        this.warehousesssMethod()
        this.open = true
        this.dataList = []
        this.warehouseCrList = []
        this.warehouseDrList = []
        this.relevantAttachments = []
        this.title = '货权转移'
      },
      check_s(row) {
        let queryParams = { pageNum: 1, fDc:'C'};
        listFees(queryParams).then((response) => {
          this.fCNameOptions = response.rows;
        });
        let query = { pageNum: 1, fDc:'D'};
        listFees(query).then((response) => {
          this.fDNameOptions = response.rows;
        });
        this.disappear = true
        this.notChange = true
        this.browseStatus = true
        const fId = row.fId || this.ids
        getGoodsTransfer(fId).then((response) => {
          this.Operator = response.data.corps[0].createBy
          this.form = response.data.warehousebills
          this.$set(this.form, 'fStltypeid', this.form.fStltypeid + '')
          this.$set(this.form, 'fFeetunit', Number(this.form.fFeetunit))
          this.$set(this.form, 'fChargedate', Date.parse(this.form.fChargedate))
          this.$set(this.form, 'fTrademodeid', this.form.fTrademodeid + '')
          this.fMblnoOptions = response.data.corps
          this.KHblnoOptions = response.data.corps
          this.fWbuOptions = response.data.feesList
          this.warehouseOptions = response.data.warehouse
          this.dataList = response.data.warehouseBillsItem
          for (let list in this.dataList) {
            if (this.dataList[list].fBillstatus && this.dataList[list].fBillstatus === 6) {
              this.formBrowseStatus = true
            }
            this.$set(this.dataList[list], 'fBsdate', Date.parse(this.dataList[list].fBsdate))
            this.$set(this.dataList[list], 'fBusinessType', this.dataList[list].fBusinessType + '')
          }
          this.goodsOptions = response.data.goodsList
          if (response.data.warehousebillsfeesDr) {
            this.warehouseDrList = response.data.warehousebillsfeesDr
            for (let dr in this.warehouseDrList) {
              this.$set(this.warehouseDrList[dr], "fFeeunitid", this.warehouseDrList[dr].fFeeunitid + '');
            }
          }
          if (response.data.warehousebillsfeesCr) {
            this.warehouseCrList = response.data.warehousebillsfeesCr
            for (let cr in this.warehouseCrList) {
              this.$set(this.warehouseCrList[cr], "fFeeunitid", this.warehouseCrList[cr].fFeeunitid + "");
            }
          }
          if (response.data.enclosures) {
            this.relevantAttachments = response.data.enclosures;
          }
          this.userOptions = response.data.sysUser
          this.$set(this.form, 'fBsdate', Date.parse(this.form.fBsdate))
          this.open = true
          this.title = '修改货存转移'
        })
      },

      // 查看按钮
      check(row) {
        let queryParams = { pageNum: 1, fDc:'C'};
        listFees(queryParams).then((response) => {
          this.fCNameOptions = response.rows;
        });
        let query = { pageNum: 1, fDc:'D'};
        listFees(query).then((response) => {
          this.fDNameOptions = response.rows;
        });
        this.disappear = false
        this.notChange = true
        this.browseStatus = true
        const fId = row.fId || this.ids
        getGoodsTransfer(fId).then((response) => {
          this.Operator = response.data.corps[0].createBy
          this.form = response.data.warehousebills
          this.$set(this.form, 'fStltypeid', this.form.fStltypeid + '')
          this.$set(this.form, 'fFeetunit', Number(this.form.fFeetunit))
          this.$set(this.form, 'fChargedate', Date.parse(this.form.fChargedate))
          this.$set(this.form, 'fTrademodeid', this.form.fTrademodeid + '')
          this.fMblnoOptions = response.data.corps
          this.KHblnoOptions = response.data.corps
          this.fWbuOptions = response.data.feesList
          this.warehouseOptions = response.data.warehouse
          this.dataList = response.data.warehouseBillsItem
          for (let list in this.dataList) {
            if (this.dataList[list].fBillstatus && this.dataList[list].fBillstatus === 6) {
              this.formBrowseStatus = true
            }
            this.$set(this.dataList[list], 'fBsdate', Date.parse(this.dataList[list].fBsdate))
            this.$set(this.dataList[list], 'fBusinessType', this.dataList[list].fBusinessType + '')
          }
          this.goodsOptions = response.data.goodsList
          if (response.data.warehousebillsfeesDr) {
            this.warehouseDrList = response.data.warehousebillsfeesDr
            for (let dr in this.warehouseDrList) {
              this.$set(this.warehouseDrList[dr], "fFeeunitid", this.warehouseDrList[dr].fFeeunitid + '');
            }
          }
          if (response.data.warehousebillsfeesCr) {
            this.warehouseCrList = response.data.warehousebillsfeesCr
            for (let cr in this.warehouseCrList) {
              this.$set(this.warehouseCrList[cr], "fFeeunitid", this.warehouseCrList[cr].fFeeunitid + "");
            }
          }
          if (response.data.enclosures) {
            this.relevantAttachments = response.data.enclosures;
          }
          this.userOptions = response.data.sysUser
          this.$set(this.form, 'fBsdate', Date.parse(this.form.fBsdate))
          this.open = true
          this.title = '修改货存转移'
        })
      },

      /** 修改按钮操作 */
      handleUpdate(row, status) {
        if(status === 2){
          this.goodsRemoteMethod()
          getGoodsTransfer(this.idCopy).then((response) => {
            if (response.data.warehousebills) {
              this.form = response.data.warehousebills
              queryUserVal().then((response) => {
                this.Lander = response.user.userName
                this.form.fStorekeeper = response.user.nickName
                this.form.createBy = response.user.userName
                this.Operator = this.form.createBy
              })
              this.form.fId = null
              this.form.fBillstatus = 1
              this.$set(this.form, 'fStltypeid', this.form.fStltypeid + '')
              this.$set(this.form, 'fFeetunit', this.form.fFeetunit + '')
              this.$set(this.form, 'fTrademodeid', this.form.fTrademodeid + '')
              this.$set(this.form, 'fChargedate', Date.parse(this.form.fChargedate))
              this.$set(this.form, "fBillno", null);
            }
            this.fMblnoOptions = response.data.corps
            this.KHblnoOptions = response.data.corps
            this.fWbuOptions = response.data.feesList
            this.warehouseOptions = response.data.warehouse
            this.dataList = response.data.warehouseBillsItem
            for (let list in this.dataList) {
              // if (this.dataList[list].fBillstatus && this.dataList[list].fBillstatus === 6) {
              //   this.formBrowseStatus = true
              // }
              this.$set(this.dataList[list], 'fBillstatus', 1)
              this.$set(this.dataList[list], 'fBsdate', Date.parse(this.dataList[list].fBsdate))
              this.$set(this.dataList[list], 'fBusinessType', this.dataList[list].fBusinessType + '')
              this.$set(this.dataList[list], 'fId', null)
            }
            this.goodsOptions = response.data.goodsList
            if (response.data.warehousebillsfeesDr) {
              this.warehouseDrList = response.data.warehousebillsfeesDr
              for (let dr in this.warehouseDrList) {
                this.$set(this.warehouseDrList[dr], "fBillstatus", 1);
                this.$set(this.warehouseDrList[dr], "fId", null);
                this.$set(this.warehouseDrList[dr], "fFeeunitid", this.warehouseDrList[dr].fFeeunitid + '');
              }
            }
            if (response.data.warehousebillsfeesCr) {
              this.warehouseCrList = response.data.warehousebillsfeesCr
              for (let cr in this.warehouseCrList) {
                this.$set(this.warehouseCrList[cr], "fBillstatus", 1);
                this.$set(this.warehouseCrList[cr], "fId", null);
                this.$set(this.warehouseCrList[cr], "fFeeunitid", this.warehouseCrList[cr].fFeeunitid + "");
              }
            }
            if (response.data.enclosures) {
              this.relevantAttachments = response.data.enclosures;
            }
            this.userOptions = response.data.sysUser
            this.$set(this.form, 'fBsdate', Date.parse(this.form.fBsdate))
            this.open = true
            this.title = '修改货存转移'

            this.warehousesssMethod()
          })

        }else {
          this.reset()
          this.notChange = false
          this.browseStatus = status
          const fId = row.fId || this.ids
          getGoodsTransfer(fId).then((response) => {
            this.form = response.data.warehousebills
            this.$set(this.form, 'fStltypeid', this.form.fStltypeid + '')
            this.$set(this.form, 'fFeetunit', this.form.fFeetunit + '')
            this.$set(this.form, 'fTrademodeid', this.form.fTrademodeid + '')
            this.$set(this.form, 'fChargedate', Date.parse(this.form.fChargedate))
            this.fMblnoOptions = response.data.corps
            this.KHblnoOptions = response.data.corps
            this.fWbuOptions = response.data.feesList
            this.warehouseOptions = response.data.warehouse
            this.dataList = response.data.warehouseBillsItem
            for (let list in this.dataList) {
              if (this.dataList[list].fBillstatus && this.dataList[list].fBillstatus === 6) {
                this.formBrowseStatus = true
              }
              this.$set(this.dataList[list], 'fBsdate', Date.parse(this.dataList[list].fBsdate))
              this.$set(this.dataList[list], 'fBusinessType', this.dataList[list].fBusinessType + '')
            }
            this.goodsOptions = response.data.goodsList
            if (response.data.warehousebillsfeesDr) {
              this.warehouseDrList = response.data.warehousebillsfeesDr
              for (let dr in this.warehouseDrList) {
                this.$set(this.warehouseDrList[dr], "fFeeunitid", this.warehouseDrList[dr].fFeeunitid + '');
              }
            }
            if (response.data.warehousebillsfeesCr) {
              this.warehouseCrList = response.data.warehousebillsfeesCr
              for (let cr in this.warehouseCrList) {
                this.$set(this.warehouseCrList[cr], "fFeeunitid", this.warehouseCrList[cr].fFeeunitid + "");
              }
            }
            if (response.data.enclosures) {
              this.relevantAttachments = response.data.enclosures;
            }
            this.userOptions = response.data.sysUser
            this.$set(this.form, 'fBsdate', Date.parse(this.form.fBsdate))
            this.open = true
            this.title = '修改货存转移'

            this.warehousesssMethod()
          })

        }
      },
      // 库存明细合计
      getSummaries(param) {
        const { columns, data } = param
        const sums = []
        var values = []
        columns.forEach((column, index) => {
          if (index === 0) {
            sums[index] = ''
            return
          }
          if (column.property === 'fPlanqty') {
            values = data.map((item) => Number(item['fPlanqty']))
          }
          if (column.property === 'fPlangrossweight') {
            values = data.map((item) => Number(item['fPlangrossweight']))
          }
          if (column.property === 'fPlannetweight') {
            values = data.map((item) => Number(item['fPlannetweight']))
          }
          if (column.property === 'fQty') {
            values = data.map((item) => Number(item['fQty']))
          }
          if (column.property === 'fGrossweight') {
            values = data.map((item) => Number(item['fGrossweight']))
          }
          if (column.property === 'fNetweight') {
            values = data.map((item) => Number(item['fNetweight']))
          }
          if (column.property === 'fCntqty') {
            values = data.map((item) => Number(item['fCntqty']))
          } // const values = data.map(item => Number(item[column.property]))
          if (
            column.property === 'fPlanqty' ||
            column.property === 'fPlangrossweight' ||
            column.property === 'fPlannetweight' ||
            column.property === 'fQty' ||
            column.property === 'fGrossweight' ||
            column.property === 'fCntqty' ||
            column.property === 'fNetweight'
          ) {
            sums[index] = values.reduce((prev, curr) => {
              const value = Number(curr)
              if (!isNaN(value)) {
                if (column.property === 'fGrossweight') {
                  this.form.fGrossweight = prev + curr
                }
                if (column.property === 'fQty') {
                  this.form.fQty = prev + curr
                }
                if (column.property === 'fCntqty') {
                  this.form.fCntqty = prev + curr
                }
                if (column.property === 'fNetweight') {
                  this.form.fNetweight = prev + curr
                }
                return prev + curr
              } else {
                return prev
              }
            }, 0) // sums[index]
          }
        })
        this.sums = sums
        return sums
      },
      // 入账
      creditClick() {
        if (this.dataList.length === 0) {
          this.$message({ message: '未找到货转明细', type: 'warning' })
          return false
        }
        for (let dataSelection in this.dataListSelection) {
          if (!this.dataListSelection[dataSelection].fId) {
            this.$message({ message: '请先点击保存，在进行货转确认', type: 'warning' })
            return false
          }
        }
        this.$refs['form'].validate((valid) => {
          if (valid) {
            for (let li in this.dataList) {
              if(this.form.fFeetunit > 3){
                this.$message.error('请维护主表计费单位为件数、毛重(kg)或净重(kg)')
                return false
              }
              if (!this.dataList[li].fWarehouselocid) {
                this.$message({ message: '请维护第' + Number(li) + 1 + '行库区', type: 'warning' })
                return false
              }
              if (!this.dataList[li].fQty) {
                this.$message({ message: '请维护第' + Number(li) + 1 + '行货转件数', type: 'warning' })
                return false
              }
              if (!this.dataList[li].fGrossweight) {
                this.$message({ message: '请维护第' + Number(li) + 1 + '行货转毛重(kg)', type: 'warning' })
                return false
              }
              if (!this.dataList[li].fNetweight) {
                this.$message({ message: '请维护第' + Number(li) + 1 + '行货转净重(kg)', type: 'warning' })
                return false
              }
              if (!this.dataList[li].fPackagespecs) {
                this.$message({ message: '请维护第' + Number(li) + 1 + '行货包装规格', type: 'warning' })
                return false
              }
            }
            let formData = new window.FormData()
            formData.append("warehouseBills", JSON.stringify(this.form));
            formData.append("tEnclosure", JSON.stringify(this.relevantAttachments));
            formData.append("warehousebillsitems", JSON.stringify(this.dataListSelection));
            formData.append("warehousebillsfeesCr", JSON.stringify(this.warehouseCrList));
            formData.append("warehousebillsfeesDr", JSON.stringify(this.warehouseDrList));
            addWhgenleg(formData).then((response) => {
              this.$refs.tableListRef.clearSelection()
              this.msgSuccess('入账成功')
              let item = response.data.warehouseItem
              for (let li in this.dataList) {
                for (let ite in item) {
                  if (this.dataList[li].fId === item[ite].fId) {
                    this.$set(this.dataList[li], 'fBillstatus', 6)
                  }
                }
              }
              this.formBrowseStatus = true
              this.$refs['form'].validate((valid) => {
                if (this.form.fCorpid === this.form.fTocorpid) {
                  this.$message.error('新货权方不得与货权方一致')
                  return false
                }
                // if (this.dataList.length === 0) {
                //   this.$message.error('请添加库存明细!')
                //   return false
                // }
                this.updateDeduplication()
                for (let list in this.dataList) {
                  if (!this.dataList[list].fQty || Number(this.dataList[list].fQty) === 0) {
                    this.$message.error('请维护序号为' + (Number(list) + 1) + '的货转件数!')
                    return false
                  }
                  if (!this.dataList[list].fGrossweight || Number(this.dataList[list].fGrossweight) === 0) {
                    this.$message.error('请维护序号为' + (Number(list) + 1) + '的货转毛重(kg)!')
                    return false
                  }
                }
                if (valid) {
                  this.form.fBillstatus = 2
                  let formData = new window.FormData()
                  formData.append("warehouseBills", JSON.stringify(this.form));
                  formData.append("warehousebillsitems", JSON.stringify(this.dataList));
                  formData.append("tEnclosure", JSON.stringify(this.relevantAttachments));
                  formData.append("warehousebillsfeesCr", JSON.stringify(this.warehouseCrList));
                  formData.append("warehousebillsfeesDr", JSON.stringify(this.warehouseDrList));
                  addGoodsTransfer(formData).then((response) => {
                    this.form = response.data.warehouseBills
                    this.$set(this.form, 'fBsdate', Date.parse(this.form.fBsdate))
                    this.$set(this.form, 'fFeetunit',this.form.fFeetunit + '')
                    this.$set(this.form, 'fStltypeid', this.form.fStltypeid + '')
                    this.$set(this.form, 'fTrademodeid', this.form.fTrademodeid + '')
                    this.$set(this.form, 'fChargedate', Date.parse(this.form.fChargedate))
                    this.dataList = response.data.warehousebillsitems
                    for (let li in this.dataList) {
                      this.$set(this.dataList[li], 'fBsdate', Date.parse(this.dataList[li].fBsdate))
                      this.$set(this.dataList[li], 'fBusinessType', this.dataList[li].fBusinessType + '')
                    }
                  })
                }
              })

            })
          }
        })
      },
      // 撤回货转
      withdrawClick() {
        // 撤回货转
        let formData = new window.FormData()
        let withdrawList = JSON.parse(JSON.stringify(this.dataWithdrawList))
        formData.append("warehouseBills", JSON.stringify(this.form));
        formData.append("warehousebillsitems", JSON.stringify(withdrawList));
        formData.append("tEnclosure", JSON.stringify(this.relevantAttachments));
        formData.append("warehousebillsfeesCr", JSON.stringify(this.warehouseCrList));
        formData.append("warehousebillsfeesDr", JSON.stringify(this.warehouseDrList));
        updateCredit(formData).then((response) => {
          this.fid = response.data
          this.formBrowseStatus = false
          this.msgSuccess('撤销入账成功')
          this.$refs.tableListRef.clearSelection()
          let mun = 0;
          for (let i in this.dataList) {
            for (let li in withdrawList) {
              if (withdrawList[li].fId === this.dataList[i].fId) {
                this.$set(this.dataList[i], 'fBillstatus', 1)
              }
            }
            if (this.dataList[i].fBillstatus && this.dataList[i].fBillstatus === 6) {
              mun ++;
            }
          }
          if (mun > 0) {
            this.formBrowseStatus = true
          } else {
            this.formBrowseStatus = false
          }
        })
      },
      // 付款合计
      warehouseDrSummaries(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 === 'fUnitprice' ||
            column.property === 'fAmount' ||
            column.property === 'fQty' ||
            column.property === 'fQty'
          ) {
            sums[index] = values.reduce((prev, curr) => {
              const value = Number(curr)
              if (!isNaN(value)) {
                return prev + curr
              } else {
                return prev
              }
            }, 0) // sums[index]
            sums[index] = sums[index].toFixed(2);
          }
        })
        return sums
      },
      // 数量计算
      changeContractAmt(row) {
        let fQty = 0
        let fUnitprice = 0
        if (row.fUnitprice) {
          fUnitprice = row.fUnitprice
        }
        if (row.fQty) {
          fQty = row.fQty
        }
        this.$set(row, 'fAmount', Number(fUnitprice) * Number(fQty)).toFixed(2)
      },
      changefBsdate(row) {
        if (this.dataList.length > 0) {
          for (var i = 0; i < this.dataList.length; i++) {
            this.$set(this.dataList[i], 'fBsdate', row)
          }
        }
      },
      // 库存明细多选
      Selectinventory(selection) {
        this.dataWithdrawList = []
        this.dataListSelection = []
        if (!selection || selection.length === 0) {
          return false
        }
        for (let se in selection) {
          if (!selection[se].fBillstatus || selection[se].fBillstatus !== 6) {
            this.dataListSelection.push(selection[se])
          } else if (selection[se].fBillstatus && selection[se].fBillstatus === 6) {
            this.dataWithdrawList.push(selection[se])
          }
        }
      },
      // 库存明细多选框结果
      dataListChange(row) {
        this.dataListSelection = row
      },
      saveForm() {
        this.updateDeduplication()
        this.$refs['form'].validate((valid) => {
          if (this.form.fCorpid === this.form.fTocorpid) {
            this.$message.error('新货权方不得与货权方一致')
            return false
          }
          // if (this.dataList.length === 0) {
          //   this.$message.error('请添加库存明细!')
          //   return false
          // }
          this.updateDeduplication()
          for (let list in this.dataList) {
            if (!this.dataList[list].fQty || Number(this.dataList[list].fQty) === 0) {
              this.$message.error('请维护序号为' + (Number(list) + 1) + '的货转件数!')
              return false
            }
            if (!this.dataList[list].fGrossweight || Number(this.dataList[list].fGrossweight) === 0) {
              this.$message.error('请维护序号为' + (Number(list) + 1) + '的货转毛重(kg)!')
              return false
            }
          }
          if (valid) {
            this.form.fBillstatus = 2
            // this.form.fNetweight = this.fNetweight
            // this.form.fGrossweight = this.fGrossweight
            // this.form.fQty = this.fQty
            let formData = new window.FormData()

            formData.append("warehouseBills", JSON.stringify(this.form));
            formData.append("warehousebillsitems", JSON.stringify(this.dataList));
            formData.append("tEnclosure", JSON.stringify(this.relevantAttachments));
            formData.append("warehousebillsfeesCr", JSON.stringify(this.warehouseCrList));
            formData.append("warehousebillsfeesDr", JSON.stringify(this.warehouseDrList));
            addGoodsTransfer(formData).then((response) => {
              this.msgSuccess('保存成功')
              this.form = response.data.warehouseBills
              this.$set(this.form, 'fBsdate', Date.parse(this.form.fBsdate))
              this.$set(this.form, 'fFeetunit',this.form.fFeetunit + '')
              this.$set(this.form, 'fStltypeid', this.form.fStltypeid + '')
              this.$set(this.form, 'fTrademodeid', this.form.fTrademodeid + '')
              this.$set(this.form, 'fChargedate', Date.parse(this.form.fChargedate))
              this.dataList = response.data.warehousebillsitems
              for (let li in this.dataList) {
                this.$set(this.dataList[li], 'fBsdate', Date.parse(this.dataList[li].fBsdate))
                this.$set(this.dataList[li], 'fBusinessType', this.dataList[li].fBusinessType + '')
              }
              this.getList()
            })
          }
        })
      },
      /** 提交按钮 */
      submitForm() {
        this.$refs['form'].validate((valid) => {
          if (this.form.fCorpid === this.form.fTocorpid) {
            this.$message.error('新货权方不得与货权方一致')
            return false
          }
          if (this.dataList.length === 0) {
            this.$message.error('请添加库存明细!')
            return false
          }
          for (let list in this.dataList) {
            if (!this.dataList[list].fQty || Number(this.dataList[list].fQty) === 0) {
              this.$message.error('请维护序号为' + (Number(list) + 1) + '的货转件数!')
              return false
            }
            if (!this.dataList[list].fGrossweight || Number(this.dataList[list].fGrossweight) === 0) {
              this.$message.error('请维护序号为' + (Number(list) + 1) + '的货转毛重(kg)!')
              return false
            }
          }
          if (this.relevantAttachments.length !== 0) {
            for (let relevant in this.relevantAttachments) {
              if (!this.relevantAttachments[relevant].fName) {
                this.$message.error('请输入附件名称!')
                return false
              }
            }
          }
          if (this.warehouseDrList.length !== 0) {
            for (let warehouseDr in this.warehouseDrList) {
              if (!this.warehouseDrList[warehouseDr].fAmount) {
                this.$message.error('收款信息序号为' + (Number(warehouseDr) + 1) + '的金额异常')
                return false
              }
            }
          }
          if (this.warehouseDrList.length !== 0) {
            for (let warehouseCr in this.warehouseCrList) {
              if (!this.warehouseCrList[warehouseCr].fAmount) {
                this.$message.error(
                  '付款信息序号为' + (Number(warehouseCr) + 1) + '的金额异常'
                )
                return false
              }
            }
          }
          if (valid) {
            // this.form.fBillstatus = 4
            let formData = new window.FormData()
            formData.append("warehouseBills", JSON.stringify(this.form));
            formData.append("warehousebillsitems", JSON.stringify(this.dataList));
            formData.append("tEnclosure", JSON.stringify(this.relevantAttachments));
            formData.append("warehousebillsfeesCr", JSON.stringify(this.warehouseCrList));
            formData.append("warehousebillsfeesDr", JSON.stringify(this.warehouseDrList));
            warehouseSubmission(formData).then((response) => {
              this.msgSuccess('提交成功')
              // this.browseStatus = true
              // this.notChange = true
              this.cancel()
              this.getList()
            })
          }
        })
      },
      /** 删除按钮操作 */
      handleDelete(row) {
        const fIds = row.fId || this.ids
        let tips = ''
        delgoodsTransfer_s(fIds).then( data =>{
          switch (data.msg) {
            case '0': {
              this.$message.error('当前数据已被其他操作员操作请刷新页面')
              break
            }
            case '1': {
              tips = '当前主表有数据从表无数据是否删除'
              this.delete_S(fIds, tips)
              break
            }
            case '2': {
              tips = '当前主表有数据从表有数据是否删除'
              this.delete_S(fIds, tips)
              break
            }
            default:{
              return this.$message.error('未知错误，无状态')
            }
          }
        })
      },
      delete_S(fIds,tips){
        this.$confirm(
          tips,
          '警告',
          {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
          }
        )
          .then(function() {
            return delGoodsTransfer(fIds)
          })
          .then(() => {
            this.getList()
            this.msgSuccess('删除成功')
          })
      },
      /** 导出按钮操作 */
      handleExport() {
        const queryParams = this.queryParams
        this.$confirm('是否确认导出所有仓库主(出入库)数据项?', '警告', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        })
          .then(function() {
            return exportgoodsTransfer(queryParams)
          })
          .then((response) => {
            this.download(response.msg)
          })
      },
      // 货转件数的计算
      qtyChange(row) {
        if (!row.fQty || row.fQty === '') {
          this.$set(row, 'fNetweight', 0)
          this.$set(row, 'fGrossweight', 0)
          return false
        }
        if (row.fPlanqty < row.fQty) {
          this.$message.error("货转件数超出结余件数!");
          this.$set(row, 'fQty', 0)
          this.$set(row, 'fNetweight', 0)
          this.$set(row, 'fGrossweight', 0)
          return false;
        }
        let netweight = parseFloat(Number(row.fPlannetweight) / Number(row.fPlanqty)).toFixed(2)
        let grossweigh = parseFloat(Number(row.fPlangrossweight) / Number(row.fPlanqty)).toFixed(2)
        this.$set(row, 'fNetweight', parseFloat(Number(netweight) * Number(row.fQty)).toFixed(2))
        this.$set(row, 'fGrossweight', parseFloat(Number(grossweigh) * Number(row.fQty)).toFixed(2))
      },
      // 修改毛重净重
      changeTransfer (row) {
        let fNetweight = 0;
        let fGrossweight = 0;
        if (row.fNetweight) {
          fNetweight = row.fNetweight
        }
        if (row.fGrossweight) {
          fGrossweight = row.fGrossweight
        }
        if (row.fPlannetweight < fNetweight) {
          this.$message({ message: '货转净重(kg)超出结余净重(kg)', type: 'warning' })
          return false
        }
        if (row.fPlangrossweight < fGrossweight) {
          this.$message({ message: '货转毛重(kg)超出结余毛重(kg)', type: 'warning' })
          return false
        }
      },
      deleteRow(index, rows) {
        rows.splice(index, 1)
        this.updateDeduplication()
      },
      // 变更计价单位
      changeFeeUnit(row) {
        if (!row.fFeeunitid) {
          return false
        }
        let fQty = 0;
        let fGrossweight = 0;
        let fNetweight = 0;
        let fCntqty = 0;
        let fixed = 1;
        for (let li in this.dataList) {
          if (this.dataList[li].fQty) {
            fQty = parseFloat(Number(fQty) + Number(this.dataList[li].fQty)).toFixed(2)
          }
          if (this.dataList[li].fGrossweight) {
            fGrossweight = parseFloat(Number(fGrossweight) + Number(this.dataList[li].fGrossweight)).toFixed(2)
          }
          if (this.dataList[li].fNetweight) {
            fNetweight = parseFloat(Number(fNetweight) + Number(this.dataList[li].fNetweight)).toFixed(2)
          }
          if (this.dataList[li].fCntqty) {
            fCntqty = parseFloat(Number(fCntqty) + Number(this.dataList[li].fCntqty))
          }
        }
        if (row.fFeeunitid === "1") {
          this.$set(row, "fQty", fQty);
        } else if (row.fFeeunitid === "2") {
          this.$set(row, 'fQty', (fGrossweight/1000).toFixed(2))
        }else if (row.fFeeunitid === "3") {
          this.$set(row, 'fQty', (fNetweight/1000).toFixed(2))
        }else if (row.fFeeunitid === "7") {

          this.$set(row, "fQty", fCntqty)
        }else {
          this.$set(row, "fQty", 0);
        }
        if (row.fUnitprice) {
          this.$set(row, 'fAmount', parseFloat(Number(row.fUnitprice) * Number(row.fQty)).toFixed(2))
        }
      },
      // 选择新货权方自动带出结算方式
      changefCorpid(row) {
        this.$set(row, "fSbu", row.fCorpid);
        for (let corp in this.fMblnoOptions) {
          if (row.fTocorpid === this.fMblnoOptions[corp].fId) {
            this.$set(this.form, "fStltypeid", this.fMblnoOptions[corp].fStltypeid + '');
          }
        }
      },
      /* 远程模糊查询用户 */
      corpsRemoteMethod(name) {
        if (name == null || name === '') {
          return false
        }
        let queryParams = { pageNum: 1, fName: name }
        listCorps(queryParams).then((response) => {
          this.fMblnoOptions = response.rows
          this.KHblnoOptions = response.rows
        })
      },
      /* 远程模糊查询商品 */
      goodsRemoteMethod(name) {
        if (name == null || name === '') {
          return false
        }
        let queryParams = { pageNum: 1,fName: name }
        listGoods(queryParams).then((response) => {
          this.goodsOptions = response.rows
        })
      },
      // 选择费用信息时获取计价单位
      changeFeeId (row) {
        for (let li in this.fWbuOptions) {
          if (row.fFeeid === this.fWbuOptions[li].fId) {
            this.$set(row, 'fFeeUnitid', this.fWbuOptions[li].fFeeunitid + '')
            this.changeFeeUnit(row)
            break
          }
        }
      },
      // 远程模糊查询费用名称
      fWRemoteMethod(name) {
        if (name == null || name === '') {
          return false
        }
        let queryParams = { pageNum: 1, fDc:'C',fName:name};
        listFees(queryParams).then((response) => {
          this.fCNameOptions = response.rows;
        });
        let query = { pageNum: 1, fDc:'D',fName:name};
        listFees(query).then((response) => {
          this.fDNameOptions = response.rows;
        });
      },
      /* 远程模糊查询经营单位 */
      fSbuRemoteMethod(name) {
        if (name == null || name === '') {
          return false
        }
        let queryParams = { pageNum: 1, fName: name }
        listCorps(queryParams).then((response) => {
          this.fSbuOptions = response.rows
        })
      },
      /* 远程模糊查询仓库 */
      warehouseRemoteMethod(name) {
        if (name == null || name === '') {
          return false
        }
        let queryParams = { pageNum: 1, fName: name }
        listWarehouse(queryParams).then((response) => {
          this.warehouseOptions = response.rows
        })
      },
      /* 远程模糊查询操作用户 */
      userRemoteMethod(name) {
        if (name == null || name === '') {
          return false
        }
        let queryParams = { pageNum: 1, userName: name }
        listUser(queryParams).then((response) => {
          this.userOptions = response.rows
        })
      }
    }
  }
</script>
<style lang="scss" scoped>
@import 'src/assets/styles/element-variables.scss';
  .juzhong > th {
    text-align: center;
  }

  .biaoge > tr > td {
    height: 30px;
    text-align: center;
    border-right: 1px solid #dfe6ec !important;
    border-bottom: 1px solid #dfe6ec !important;
    border-bottom: 1px solid #dfe6ec !important;
  }

  .el-table thead th {
    background: #1890ff;
    color: #fff;
  }

  .upload-demo {
    margin-left: 50px;
  }

  .el-form-item {
    margin-bottom: 5px !important;
  }

  .el-form-item__label {
    font-size: 12px !important;
  }

  .el-collapse-item__header{
    font-size: 16px;
    font-weight: bolder;
    padding-left: 5px;
  }

  .el-icon-s-home,.el-icon-s-order,.el-icon-circle-plus,.el-icon-remove{
    padding-right: 5px;
  }
  .el-table {
    .el-table__body-wrapper {
      z-index: 2;
    }
  }
  .tabSetting {
    display: flex;
    justify-content: flex-end;
  }
  .listStyle {
    display: flex;
    border-top: 1px solid #dcdfe6;
    border-left: 1px solid #dcdfe6;
    border-right: 1px solid #dcdfe6;
  }
  .listStyle:last-child {
    border-bottom: 1px solid #dcdfe6;
  }
  .progress {
    display: flex;
    align-items: center;
    padding: 2px;
    background-color: rgba(0, 0, 0, 0.05);
    height: 100%;
  }
  .avue-crud__dialog__header {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
  }
  .el-dialog__title {
    color: rgba(0,0,0,.85);
    font-weight: 500;
    word-wrap: break-word;
  }
  .avue-crud__dialog__menu {
    padding-right: 20px;
    float: left;
  }
  .avue-crud__dialog__menu i {
    color: #909399;
    font-size: 15px;
  }
  .el-icon-full-screen{
    cursor: pointer;
  }
  .el-icon-full-screen:before {
    content: "\e719";
  }
</style>
