Ver Fonte

添加仓储费计算页面

阿伏兔 há 4 anos atrás
pai
commit
d2ff285cc7

+ 80 - 0
src/api/warehouseBusiness/storageFeeCalculation.js

@@ -0,0 +1,80 @@
+import request from '@/utils/request'
+
+// 查询仓库主(出入库)列表
+export function listStorageFeeCalculation(query) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 计算仓储费
+export function calculateStorageFees(data) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation/calculateFees',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查询仓库主(出入库)详细
+export function getStorageFeeCalculation(fId) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation/' + fId,
+    method: 'get'
+  })
+}
+
+// 新增仓库主(出入库)
+export function addStorageFeeCalculation(data) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 撤销入库
+export function updateCredit(data) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation/updateCredit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 入库确认
+export function addWhgenleg(data) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation/addCredit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改仓库主(出入库)
+export function updateStorageFeeCalculation(data) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除仓库主(出入库)
+export function delStorageFeeCalculation(fId) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation/' + fId,
+    method: 'delete'
+  })
+}
+
+// 导出仓库主(出入库)
+export function exportStorageFeeCalculation(query) {
+  return request({
+    url: '/warehouseBusiness/storageFeeCalculation/export',
+    method: 'get',
+    params: query
+  })
+}

+ 1400 - 0
src/views/warehouseBusiness/storageFeeCalculation/index.vue

@@ -0,0 +1,1400 @@
+<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="请输入业务编号"
+          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: 80%"
+          :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="timeInterval">
+        <el-date-picker
+          v-model="queryParams.timeInterval"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          clearable
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          @keyup.enter.native="handleQuery"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="货权方" prop="fCorpid">
+        <el-select
+          v-model="queryParams.fCorpid"
+          filterable
+          remote
+          clearable
+          style="width: 80%"
+          @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="请输入提单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="唛头" prop="fMarks">
+        <el-input
+          v-model="queryParams.fMarks"
+          placeholder="请输入唛头"
+          clearable
+          size="small"
+          style="width: 80%"
+          @keyup.enter.native="handleQuery"
+        />
+      </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(false)"
+          v-hasPermi="['warehouseBusiness:warehousebills: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:warehousebills:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['warehouseBusiness:warehousebills:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['warehouseBusiness:warehousebills:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          :disabled="multiple"
+          v-hasPermi="['warehouseBusiness:warehousebills:export']"
+        >导入
+        </el-button>
+      </el-col>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+    <el-table
+      v-loading="loading"
+      :data="warehousebillsList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column type="index" label="行号" align="center"/>
+      <el-table-column
+        :show-overflow-tooltip="true"
+        label="货权方"
+        align="center"
+        prop="fCorpid"
+      />
+      <el-table-column label="提单号" align="center" prop="fMblno"/>
+      <el-table-column
+        label="唛头"
+        align="center"
+        prop="fMarks"
+      />
+      <el-table-column
+        label="出库日期"
+        align="center"
+        prop="createTime"
+        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="fWarehouseid"/>
+
+      <el-table-column label="出库件数" align="center" prop="fQty"/>
+      <!--      <el-table-column label="入库毛重" align="center" prop="fGrossweight"/>-->
+      <!-- <el-table-column label="货转客户名称" align="center" prop="fTocorpid" /> -->
+      <el-table-column label="出库毛重" align="center" prop="fGrossweight"/>
+      <el-table-column label="净重" 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
+        width="100"
+        label="费用状态"
+        align="center"
+        prop="fBillstatus">
+        <template slot-scope="scope">
+          <span v-if="scope.row.fBillstatus === '1'">录入</span>
+          <span v-if="scope.row.fBillstatus === '2'">录入</span>
+          <span v-if="scope.row.fBillstatus === '3'">驳回</span>
+          <span v-if="scope.row.fBillstatus === '4'">请核</span>
+          <span v-if="scope.row.fBillstatus === '5'">审核中</span>
+          <span v-if="scope.row.fBillstatus === '6'">全部入账</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        width="180"
+      >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            v-if="scope.row.fBillstatus === '6'"
+            @click="handleUpdate(scope.row, true)"
+            v-hasPermi="['warehouseBusiness:warehousebills:edit']"
+          >查看
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row, false)"
+            v-hasPermi="['warehouseBusiness:warehousebills:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['warehouseBusiness:warehousebills: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
+      :visible.sync="open"
+      :close-on-click-modal="false"
+      width="80%"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-row>
+          <el-col :span="5">
+            <el-form-item label="客户名称" prop="fCorpid">
+              <el-select
+                v-model="form.fCorpid"
+                filterable
+                remote
+                :disabled="browseStatus"
+                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="5">
+            <el-form-item label="货品名称" prop="fGoodsid">
+              <el-select
+                v-model="form.fGoodsid"
+                filterable
+                :disabled="browseStatus"
+                remote
+                :remote-method="goodsRemoteMethod"
+                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-col>
+          <el-col :span="5">
+            <el-form-item label="提单号" prop="fMblno">
+              <el-input
+                v-model="form.fMblno"
+                style="width: 80%"
+                :disabled="browseStatus"
+                placeholder="手工输入"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="5">
+            <el-form-item disabled label="仓储费截止日期" prop="fBillingDeadline">
+              <el-date-picker
+                v-model="form.fBillingDeadline"
+                size="large"
+                type="date"
+                :disabled="browseStatus"
+                value-format="timestamp"
+                placeholder="仓储费计算截止日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="5">
+            <el-form-item label="制单人" prop="createBy">
+              <el-input
+                disabled
+                v-model="form.createBy"
+                style="width: 80%"
+                placeholder="制单人"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="5">
+            <el-form-item disabled label="制单日期" prop="fbilldate">
+              <el-date-picker
+                v-model="form.createTime"
+                size="large"
+                type="date"
+                disabled
+                value-format="timestamp"
+                placeholder="制单日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div style="font-size:18px">
+        计费物资明细
+        <el-button @click="calculateCost">计算仓储费</el-button>
+      </div>
+      <div class="dialogTableTitle flex a-center jlr"
+           style="display:flex;justify-content:space-between;align-items:center;margin: 10px 0;">
+        <el-table
+          :data="dataList"
+          ref="tableList"
+          tooltip-effect="dark"
+          border
+          stripe
+          :summary-method="getSummaries"
+          show-summary
+        >
+          <el-table-column label="序号" type="index" width="80">
+          </el-table-column>
+          <el-table-column
+            prop="fBilltype"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="业务来源"
+          >
+            <template slot-scope="scope">
+              <el-select
+                v-model="scope.row.fBilltype"
+                filterable
+                disabled
+                remote
+                placeholder="业务来源"
+              >
+                <el-option
+                  v-for="(dict, index) in billtypeOptions"
+                  :key="index.fId"
+                  :label="dict.fName"
+                  :value="dict.fId"
+                ></el-option>
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="fBillno"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="业务单号"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="fGoodsid"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="货物名称"
+          >
+            <template slot-scope="scope">
+              <el-select
+                v-model="scope.row.fGoodsid"
+                filterable
+                disabled
+                remote
+                placeholder="请选择品名"
+              >
+                <el-option
+                  v-for="(dict, index) in goodsOptions"
+                  :key="index.fId"
+                  :label="dict.fName"
+                  :value="dict.fId"
+                ></el-option>
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="fBsdate"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="业务日期"
+          >
+            <template slot-scope="scope">
+              <el-date-picker
+                v-model="scope.row.fBsdate"
+                size="large"
+                type="date"
+                disabled
+                value-format="timestamp"
+                placeholder="业务日期"
+              >
+              </el-date-picker>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="fBillingway"
+            header-align="center"
+            align="center"
+            width="180px"
+            label="计费单位"
+          >
+            <template slot-scope="scope">
+              <el-select
+                v-model="scope.row.fBillingway"
+                placeholder="请选择计费单位"
+                disabled
+                clearable
+              >
+                <el-option
+                  v-for="dict in fFeetunitOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="fBillingQty"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="计费数量"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="fChargedate"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="计费起始日期"
+          >
+            <template slot-scope="scope">
+              <el-date-picker
+                v-model="scope.row.fChargedate"
+                size="large"
+                type="date"
+                disabled
+                value-format="timestamp"
+                placeholder="计费起始日期"
+              >
+              </el-date-picker>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="fBillingDeadline"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="计费截止日期"
+          >
+            <template slot-scope="scope">
+              <el-date-picker
+                v-model="scope.row.fBillingDeadline"
+                size="large"
+                type="date"
+                disabled
+                value-format="timestamp"
+                placeholder="计费截止日期"
+              >
+              </el-date-picker>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="fBillingDays"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="计费天数"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="fAmt"
+            header-align="center"
+            align="center"
+            width="140px"
+            label="计费金额"
+          >
+          </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>
+      </div>
+      <div style="font-size:18px">应收款明细</div>
+      <div class="dialogTableTitle flex a-center jlr"
+           style="display:flex;justify-content:space-between;align-items:center;margin: 10px 0;">
+        <el-table
+          :data="warehouseDrList"
+          ref="table"
+          tooltip-effect="dark"
+          border
+          stripe
+          show-summary
+          :summary-method="warehouseDrSummaries"
+        >
+          <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 fMblnoOptions"
+                  :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"
+                placeholder="费用名称"
+              >
+                <el-option
+                  v-for="dict in fWbuOptions"
+                  :key="dict.fId"
+                  :label="dict.fName"
+                  :value="dict.fId"
+                ></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"
+                clearable
+              >
+                <el-option
+                  v-for="dict in fFeetunitOptions"
+                  :key="dict.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\d\d).*$/, "$1$2.$3")'
+                v-model="scope.row.fQty"
+                @change="changeEstmateAmt(scope.row)"
+                :disabled="browseStatus"
+                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"
+                @change="changeContractAmt(scope.row)"
+                :disabled="browseStatus"
+                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="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="200px"
+            label="操作"
+          >
+            <template slot-scope="scope">
+              <el-button size="small">审核费用</el-button>
+              <el-button
+                @click.native.prevent="deleteRow(scope.$index, warehouseDrList)"
+                size="small"
+              >移除
+              </el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="success" prop="取 消" @click="cancel"
+        >取 消
+        </el-button>
+        <el-button type="warning" prop="保 存" @click="submitForm(2)"
+        >保 存
+        </el-button>
+        <el-button
+          :disabled="browseStatus"
+          style="background-color: #008000; color: #fff"
+          @click="submitForm(6)"
+        >请 核</el-button
+        >
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import {
+    calculateStorageFees,
+    getStorageFeeCalculation,
+    delStorageFeeCalculation,
+    addStorageFeeCalculation,
+    listStorageFeeCalculation,
+    updateStorageFeeCalculation,
+    exportStorageFeeCalculation,
+  } from "@/api/warehouseBusiness/storageFeeCalculation";
+  import { listUser, queryUserVal } from "@/api/system/user";
+  import { listGoods } from "@/api/basicdata/goods";
+  import { listFees } from "@/api/basicdata/fees";
+  import { listCorps } from "@/api/basicdata/corps";
+
+  export default {
+    name: "StorageFeeCalculation",
+    components: {},
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        userVal: {
+          userName: null,
+          nickName: null,
+          deptId: null,
+        },
+        queryForm: {},
+        // 库存总账表
+        whgenlegList: [],
+        dataList: [],
+        warehouseDrList: [],
+        browseStatus: false,
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 仓库主(出入库)表格数据
+        warehousebillsList: [],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 货品名
+        goodsOptions: [],
+        // 业务来源
+        billtypeOptions: [{
+          fId: 'SJRK',
+          fName: '入库'
+        }, {
+          fId: 'SJCK',
+          fName: '出库'
+        }, {
+          fId: 'CKZZ',
+          fName: '库存总账'
+        }],
+        // 货权方(客户数据)
+        fMblnoOptions: [],
+        // 操作员
+        userOptions: [],
+        // 制单部门
+        deptOptions: [],
+        // 计费单位(数据字典),下拉选择毛重或净重字典
+        fFeetunitOptions: [{
+          dictLabel: '件数',
+          dictValue: 1
+        }, {
+          dictLabel: '毛重',
+          dictValue: 2
+        }, {
+          dictLabel: '净重',
+          dictValue: 3
+        }, {
+          dictLabel: '尺码',
+          dictValue: 4
+        }, {
+          dictLabel: '固定',
+          dictValue: 5
+        }],
+        // 费用名称
+        fWbuOptions: [],
+        // 查询参数
+        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,
+        },
+        // 表单参数
+        form: {},
+        // 表单校验
+        rules: {
+          fCorpid: [{required: true, message: " ", trigger: "blur",}],
+          fBillingDeadline: [{required: true, message: " ", trigger: "blur",}]
+        }
+      };
+    },
+    created() {
+      this.getList();
+    },
+    methods: {
+      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, "fIfdamage", "1");
+            this.$set(this.form, "fIfweigh", "1");
+            this.$set(this.form, "fTrademodeid", "1");
+            this.$set(this.form, "createTime", Date.parse(new Date()));
+          }
+          if (response.dept !== null) {
+            this.deptOptions = [];
+            this.deptOptions.push(response.dept);
+          }
+        });
+      },
+      /** 查询仓库主(出入库)列表 */
+      getList() {
+        this.loading = true;
+        listStorageFeeCalculation(this.queryParams).then((response) => {
+          this.warehousebillsList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 计算仓储费
+      calculateCost() {
+        if (!this.form.fCorpid || !this.form.fBillingDeadline) {
+          this.$message({message: '请维护货权方以及,仓储费计算截止日期', type: 'warning'})
+          return false
+        }
+        if (this.dataList.length !== 0) {
+          this.$confirm(`仓储费已经存在,确定要删除重新计算吗?`, '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+            this.getStorageFee()
+          }).catch(() => {
+            return false
+          })
+        } else {
+          this.getStorageFee()
+        }
+      },
+      getStorageFee () {
+        calculateStorageFees(this.form).then((response) => {
+          this.dataList = []
+          this.warehouseDrList = []
+          this.form.fId = response.data.warehouseBills.fId
+          if (response.data.warehouseFeesList) {
+            this.warehouseDrList = response.data.warehouseFeesList
+          }
+          if (response.data.warehouseItemList) {
+            this.dataList = response.data.warehouseItemList
+            for (let li in this.dataList) {
+              this.$set(this.dataList[li], 'fBsdate', Date.parse(this.dataList[li].fBsdate))
+              this.$set(this.dataList[li], 'fChargedate', Date.parse(this.dataList[li].fChargedate))
+              this.$set(this.dataList[li], 'fBillingDeadline', Date.parse(this.dataList[li].fBillingDeadline))
+              this.$set(this.dataList[li], 'fOriginalbilldate', Date.parse(this.dataList[li].fOriginalbilldate))
+            }
+          }
+          if (response.data.feesList) {
+            this.fWbuOptions = response.data.feesList
+          }
+        });
+      },
+      /* 远程模糊查询商品 */
+      goodsRemoteMethod(name) {
+        if (name == null || name === "") {
+          return false;
+        }
+        let queryParams = { pageNum: 1, pageSize: 10, fName: name };
+        listGoods(queryParams).then((response) => {
+          this.goodsOptions = response.rows;
+        });
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          fId: null,
+          fBillno: 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,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+          remark: null,
+          fCreateby: null,
+          fCreatetime: null,
+          fGoodsid: null,
+          fCntrtype: null,
+          fCntqty: null,
+        };
+        this.deptOptions = [];
+        this.userOptions = [];
+        this.fWbuOptions = [];
+        this.fMblnoOptions = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection;
+        // this.ids = selection.map((item) => item.fId);
+        this.single = selection.length !== 1;
+        this.multiple = !selection.length;
+      },
+      /** 新增按钮操作 */
+      handleAdd(status) {
+        this.browseStatus = status;
+        this.reset();
+        this.queryUser();
+        this.open = true;
+        this.dataList = [];
+        this.warehouseCrList = [];
+        this.warehouseDrList = [];
+        this.relevantAttachments = [];
+        this.title = "出库单";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row, status) {
+        this.browseStatus = status;
+        this.reset();
+        let data = row || this.ids;
+        getStorageFeeCalculation(data.fId).then((response) => {
+          this.fMblnoOptions = []
+          if (response.data.corps) {
+            this.fMblnoOptions.push(response.data.corps)
+          }
+          if (response.data.warehouse) {
+            this.form = response.data.warehouse
+            this.$set(this.form, 'createTime', Date.parse(this.form.createTime))
+            this.$set(this.form, 'fBillingDeadline', Date.parse(this.form.fBillingDeadline))
+          }
+          if (response.data.warehouseItemsList) {
+            this.dataList = response.data.warehouseItemsList
+            for (let li in this.dataList) {
+              this.$set(this.dataList[li], 'fBsdate', Date.parse(this.dataList[li].fBsdate))
+              this.$set(this.dataList[li], 'fChargedate', Date.parse(this.dataList[li].fChargedate))
+              this.$set(this.dataList[li], 'fStorageFeeDeadline', Date.parse(this.dataList[li].fStorageFeeDeadline))
+            }
+          }
+          if (response.data.warehouseFeesList) {
+            this.warehouseDrList = response.data.warehouseFeesList
+          }
+          if (response.data.goodsList) {
+            this.goodsOptions = response.data.goodsList
+          }
+          if (response.data.feesList) {
+            this.fWbuOptions = response.data.feesList
+          }
+          this.userOptions = response.data.sysUser;
+          this.open = true;
+          this.title = "编辑仓储费计算";
+        });
+      },
+      // 数量计算
+      changeContractAmt(row) {
+        if (row.fUnitprice !== "") {
+          if (row.fQty !== "") {
+            this.$set(row, 'fAmount', Number(row.fUnitprice) * Number(row.fQty)).toFixed(2);
+          } else {
+            this.$set(row, 'fAmount', row.fUnitprice);
+          }
+        }
+      },
+      changeEstmateAmt(row) {
+        if (row.fUnitprice !== "") {
+          if (row.fQty !== "") {
+            this.$set(row, "fAmount", Number(row.fUnitprice) * Number(row.fQty)).toFixed(2);
+          } else {
+            this.$set(row, "fAmount", row.fUnitprice);
+          }
+        }
+      },
+      changefBsdate(row) {
+        if (this.dataList.length > 0) {
+          for (var i = 0; i < this.dataList.length; i++) {
+            this.$set(this.dataList[i], "fBsdate", row);
+          }
+        }
+      },
+      // 合计
+      getSummaries(param) {
+        console.log(param);
+        const {columns, data} = param;
+        const sums = [];
+        var values = [];
+        columns.forEach((column, index) => {
+          if (index === 0) {
+            sums[index] = "合计";
+            return;
+          }
+          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 === "fqty") {
+            values = data.map((item) => Number(item["fQty"]));
+          }
+          if (column.property === "fCntqty") {
+            values = data.map((item) => Number(item["fCntqty"]));
+          } // const values = data.map(item => Number(item[column.property]))
+          if (
+            column.property === "fgrossweight" ||
+            column.property === "fnetweight" ||
+            column.property === "fqty" ||
+            column.property === "fCntqty"
+          ) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr);
+              if (!isNaN(value)) {
+                if (column.property === "fgrossweight") {
+                  this.form.fGrossweight = prev + curr;
+                  this.fGrossweight = prev + curr;
+                }
+                if (column.property === "fnetweight") {
+                  this.form.fNetweight = prev + curr;
+                  this.fNetweight = prev + curr;
+                }
+                if (column.property === "fqty") {
+                  this.form.fQty = prev + curr;
+                  this.fQty = prev + curr;
+                }
+                if (column.property === "fCntqty") {
+                  this.fCntqty = prev + curr;
+                }
+                return prev + curr;
+              } else {
+                return prev;
+              }
+            }, 0); // sums[index]
+          }
+        });
+        this.sums = sums;
+        return sums;
+      },
+      // 付款合计
+      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]
+          }
+        });
+        return sums;
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const fIds = row.fId || this.ids.fId;
+        this.$confirm(
+          '是否确认删除仓库主(出入库)编号为"' + fIds + '"的数据项?',
+          "警告",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(function () {
+            return delWarehousebills(fIds);
+          })
+          .then(() => {
+            this.getList();
+            this.msgSuccess("删除成功");
+          });
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm("是否确认导出所有仓库主(出入库)数据项?", "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+          .then(function () {
+            return exportWarehousebills(queryParams);
+          })
+          .then((response) => {
+            this.download(response.msg);
+          });
+      },
+      deleteRow(index, rows) {
+        rows.splice(index, 1);
+      },
+      /* 远程模糊查询用户 */
+      corpsRemoteMethod(name) {
+        if (name == null || name === "") {
+          return false;
+        }
+        let queryParams = {pageNum: 1, pageSize: 10, fName: name};
+        listCorps(queryParams).then((response) => {
+          this.fMblnoOptions = response.rows;
+        });
+      },
+      // 远程模糊查询费用名称
+      fWRemoteMethod(name) {
+        if (name == null || name === "") {
+          return false;
+        }
+        let queryParams = {pageNum: 1, pageSize: 10, fName: name};
+        listFees(queryParams).then((response) => {
+          this.fWbuOptions = response.rows;
+        });
+      },
+      /* 远程模糊查询操作用户 */
+      userRemoteMethod(name) {
+        if (name == null || name === "") {
+          return false;
+        }
+        let queryParams = {pageNum: 1, pageSize: 10, userName: name};
+        listUser(queryParams).then((response) => {
+          this.userOptions = response.rows;
+        });
+      },
+      /** 提交按钮 */
+      submitForm(status) {
+        this.$refs["form"].validate((valid) => {
+          if (valid) {
+            if (status !== 2) {
+              if (this.dataList.length === 0) {
+                this.$message.error("请维护计费物资明细!");
+                return false;
+              }
+              if (this.warehouseDrList.length === 0) {
+                this.$message.error("请维护应收款明细!");
+                return false;
+              }
+            }
+            if (!this.form.fCorpid) {
+              this.$message({message: '请维护货权方', type: 'warning'})
+              return false
+            }
+            if (!this.form.fBillingDeadline) {
+              this.$message({message: '请维护仓储费计算截止日期', type: 'warning'})
+              return false
+            }
+            if (!this.form.fBillstatus) {
+              this.form.fBillstatus = status
+            }
+            let formData = new window.FormData();
+            formData.append("warehouseBills", JSON.stringify(this.form));
+            formData.append("warehouseItems", JSON.stringify(this.dataList));
+            formData.append("warehouseFees", JSON.stringify(this.warehouseDrList));
+            addStorageFeeCalculation(formData).then((response) => {
+              this.msgSuccess("操作成功");
+              if (status !== 2) {
+                this.open = false;
+                this.getList();
+              }
+            })
+          }
+        });
+      }
+    }
+  };
+</script>
+<style lang="scss">
+  .juzhong > th {
+    text-align: center;
+  }
+
+  .biaoge > tr > td {
+    height: 30px;
+    text-align: center;
+    border-right: 1px solid #dfe6ec !important;
+    order-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;
+  }
+</style>