浏览代码

新增快速出入库费用、导入

lichao 4 年之前
父节点
当前提交
64c38c52fc

+ 8 - 0
src/api/index.js

@@ -61,3 +61,11 @@ export function locationRanking(){
     method:'get'
   })
 }
+// 利润统计查询
+export function getProfitData(query){
+  return request({
+    url:'/shipping/profit/list',
+    method:'get',
+    params: query
+  })
+}

+ 419 - 86
src/components/fastStorage/fastInStock/index.vue

@@ -230,52 +230,59 @@
         <el-button type="primary" @click="save()">确 定</el-button>
       </span>
       </el-dialog>
-      <div style="margin: 10px 10px">
-        <el-button
-          size="small"
-          style="float:left;"
-          type="primary"
-          @click="addList"
-        >
-          录入明细
-        </el-button>
-        <el-button
-          icon="el-icon-setting"
-          size="mini"
-          circle
-          @click="showSetting = !showSetting"
-          style="float: right"
-        ></el-button>
-      </div>
-      <el-table
-        :data="detailList"
-        tooltip-effect="dark"
-        stripe
-        ref="multipleTables"
-        show-summary
-        :summary-method="getSummaries"
-        @selection-change="handleSelection"
-      >
-<!--        <el-table-column type="selection" width="50" align="center" fixed/>-->
-        <el-table-column
-          label="序号"
-          type="index"
-          width="50"
-          fixed
-          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"
-          :show-overflow-tooltip="true"
-          sortable
-        >
-          <template slot-scope="scope">
+      <el-tabs v-model="activeName">
+        <el-tab-pane label="入库明细" name="inStockList">
+          <div style="margin: 10px 10px">
+            <el-button
+              size="small"
+              style="float:left;"
+              type="primary"
+              @click="addList"
+            >
+              录入明细
+            </el-button>
+            <el-button type="primary" size="small" @click="downloadExcel">
+              下载模板
+            </el-button>
+            <el-button size="small" type="primary" @click="openUploadExcel"
+            >导入Execl</el-button>
+            <el-button
+              icon="el-icon-setting"
+              size="mini"
+              circle
+              @click="showSetting = !showSetting"
+              style="float: right"
+            ></el-button>
+          </div>
+          <el-table
+            :data="detailList"
+            tooltip-effect="dark"
+            stripe
+            ref="multipleTables"
+            show-summary
+            :summary-method="getSummaries"
+            @selection-change="handleSelection"
+          >
+            <!--        <el-table-column type="selection" width="50" align="center" fixed/>-->
+            <el-table-column
+              label="序号"
+              type="index"
+              width="50"
+              fixed
+              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"
+              :show-overflow-tooltip="true"
+              sortable
+            >
+              <template slot-scope="scope">
             <span v-if="item.label == 'fCntrno'">
               <el-input
                 v-model="scope.row.fCntrno"
@@ -283,14 +290,14 @@
                 clearable
               ></el-input>
             </span>
-            <span v-else-if="item.label == 'fSealno'">
+                <span v-else-if="item.label == 'fSealno'">
               <el-input
                 v-model="scope.row.fSealno"
                 placeholder="封号"
                 clearable
               ></el-input>
             </span>
-            <span v-else-if="item.label == 'fGoodsid'">
+                <span v-else-if="item.label == 'fGoodsid'">
               <el-select
                 filterable
                 clearable
@@ -305,7 +312,7 @@
               ></el-option>
             </el-select>
             </span>
-            <span v-else-if="item.label == 'fBusinessType'">
+                <span v-else-if="item.label == 'fBusinessType'">
               <el-select
                 filterable
                 v-model="scope.row.fBusinessType"
@@ -319,14 +326,14 @@
               />
             </el-select>
             </span>
-            <span v-else-if="item.label == 'fMarks'">
+                <span v-else-if="item.label == 'fMarks'">
               <el-input
                 v-model="scope.row.fMarks"
                 placeholder="属性详情"
                 clearable
               ></el-input>
             </span>
-            <span v-else-if="item.label == 'fWarehouseInformation'">
+                <span v-else-if="item.label == 'fWarehouseInformation'">
               <treeselect
                 v-model="scope.row.fWarehouseInformation"
                 :options="fWarehouseidOptions"
@@ -338,7 +345,7 @@
                 @select="(tree)=>{getAlltree(scope.row,tree)}"
               />
             </span>
-            <span v-else-if="item.label == 'fQty'">
+                <span v-else-if="item.label == 'fQty'">
               <el-input
                 v-model="scope.row.fQty"
                 placeholder="件数"
@@ -346,7 +353,7 @@
                 clearable
               ></el-input>
             </span>
-            <span v-else-if="item.label == 'fGrossweight'">
+                <span v-else-if="item.label == 'fGrossweight'">
               <el-input
                 v-model="scope.row.fGrossweight"
                 placeholder="毛重"
@@ -354,7 +361,7 @@
                 clearable
               ></el-input>
             </span>
-            <span v-else-if="item.label == 'fNetweight'">
+                <span v-else-if="item.label == 'fNetweight'">
               <el-input
                 v-model="scope.row.fNetweight"
                 placeholder="净重"
@@ -362,48 +369,282 @@
                 clearable
               ></el-input>
             </span>
-            <span v-else-if="item.label == 'remark'">
+                <span v-else-if="item.label == 'remark'">
               <el-input
                 v-model="scope.row.remark"
                 placeholder="备注"
                 clearable
               ></el-input>
             </span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          header-align="center"
-          align="center"
-          label="操作"
-          width="160px"
-          fixed="right"
-        >
-          <template slot-scope="scope">
+              </template>
+            </el-table-column>
+            <el-table-column
+              header-align="center"
+              align="center"
+              label="操作"
+              width="160px"
+              fixed="right"
+            >
+              <template slot-scope="scope">
+                <el-button
+                  type="text"
+                  @click.native.prevent="wDeleteRow(scope.$index, detailList)"
+                  size="small"
+                >移除
+                </el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-tab-pane>
+        <el-tab-pane label="收款信息" name="DrList">
+          <div style="margin: 10px 10px">
             <el-button
-              type="text"
-              @click.native.prevent="wDeleteRow(scope.$index, detailList)"
               size="small"
-            >移除
-            </el-button
+              style="float:left;"
+              type="primary"
+              @click="addDrList"
+            >
+              新行
+            </el-button>
+          </div>
+          <el-table
+            ref="DrTable"
+            :data="DrList"
+            tooltip-effect="dark"
+            stripe
+          >
+            <el-table-column label="序号" type="index" width="50" fixed></el-table-column>
+            <el-table-column
+              prop="fCorpid"
+              header-align="center"
+              align="center"
+              width="300px"
+              label="客户名称"
+            >
+              <template slot-scope="scope">
+                <el-select
+                  v-model="scope.row.fCorpid"
+                  filterable
+                  clearable
+                  placeholder="客户名称"
+                >
+                  <el-option
+                    v-for="(item, index) in fMblnoOptions"
+                    :key="index.fId"
+                    :label="item.fName"
+                    :value="item.fId"
+                  ></el-option>
+                </el-select>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="fFeeid"
+              header-align="center"
+              align="center"
+              width="240px"
+              label="费用名称"
+            >
+              <template slot-scope="scope">
+                <el-select
+                  v-model="scope.row.fFeeid"
+                  clearable
+                  filterable
+                  placeholder="费用名称"
+                >
+                  <el-option
+                    v-for="(item, index) in fDNameOptions"
+                    :key="index.fId"
+                    :label="item.fName"
+                    :value="item.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="请选择计价单位"
+                  clearable
+                  @change="changeFeeUnit(scope.row)"
+                >
+                  <el-option
+                    v-for="(item, index) in fFeetUnitOptions"
+                    :key="index.dictValue"
+                    :label="item.dictLabel"
+                    :value="item.dictValue"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="fQty"
+              header-align="center"
+              align="center"
+              width="130px"
+              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="数量"
+                  @change="changeContractAmt(scope.row)"
+                  show-word-limit
+                />
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="fUnitprice"
+              header-align="center"
+              align="center"
+              width="130px"
+              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="单价"
+                  @change="changeContractAmt(scope.row)"
+                  show-word-limit
+                />
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="fAmount"
+              header-align="center"
+              align="center"
+              width="130px"
+              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.fAmount"
+                  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"
+                  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"
+                  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"
+                  placeholder="品牌"
+                  show-word-limit
+                />
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="fSrcTypeId"
+              header-align="center"
+              align="center"
+              width="130px"
+              label="来源"
+            >
+              <template slot-scope="scope">
+                <span v-if="scope.row.fSrcTypeId === 0">录入</span>
+                <span v-if="scope.row.fSrcTypeId == 1">协议</span>
+                <span v-if="scope.row.fSrcTypeId == 10">变更</span>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="remark"
+              header-align="center"
+              align="center"
+              width="150px"
+              label="备注"
             >
-          </template>
-        </el-table-column>
-      </el-table>
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.remark"
+                  placeholder="备注"
+                  show-word-limit
+                />
+              </template>
+            </el-table-column>
+            <el-table-column
+              header-align="center"
+              align="center"
+              label="操作"
+              width="200px"
+              fixed="right"
+            >
+              <template slot-scope="scope">
+                <el-button
+                  @click.native.prevent="deleteDrRow(scope.$index, DrList)"
+                  size="small"
+                >移除
+                </el-button>
+                <el-button
+                  size="small"
+                  @click="listCheck(scope.row)"
+                  v-if="scope.row.fBillstatus < 6"
+                >请核</el-button>
+                <el-button
+                  size="small"
+                  @click="revokeListCheck(scope.row)"
+                  v-if="scope.row.fBillstatus == 6"
+                >撤销请核</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+<!--          导入Excel-->
+          <upload-excel
+            ref="upexcel"
+            :uploadExcelVisible="uploadExcel"
+            @changeShow="showAddOrUpdate2"
+            @adddetailList="adddetailList"
+          ></upload-excel>
+        </el-tab-pane>
+<!--        <el-tab-pane label="付款信息" name="CrList">-->
+<!--        </el-tab-pane>-->
+      </el-tabs>
     </div>
-<!--    <el-form :model="form" style="margin: 15px 0">-->
-<!--      <el-row>-->
-<!--        <el-col :span="24">-->
-<!--          <el-form-item label="备注" label-width="80px">-->
-<!--            <el-input-->
-<!--              type="textarea"-->
-<!--              :autosize="{ minRows: 2, maxRows: 4}"-->
-<!--              placeholder="请输入备注"-->
-<!--              v-model="form.remark">-->
-<!--            </el-input>-->
-<!--          </el-form-item>-->
-<!--        </el-col>-->
-<!--      </el-row>-->
-<!--    </el-form>-->
 
 <!--    打印-->
     <el-dialog
@@ -471,6 +712,7 @@
       </span>
     </el-dialog>
     <span slot="footer" class="dialog-footer">
+      <el-button type="success" @click="handleSave">暂存</el-button>
       <el-button type="warning" @click="openPrint" :disabled="detailList.length == 0">打印</el-button>
       <el-button type="primary" @click="handleConfirm" :disabled="detailList.length == 0">确认入库</el-button>
       <el-button @click="closeDialog">取消</el-button>
@@ -493,6 +735,8 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {queryUserVal} from "@/api/system/user";
 import print from "print-js";
 import {fastInStock} from "@/api/warehouseBusiness/fastInStock";
+import {listFees, getFees} from "@/api/basicdata/fees";
+import uploadExcel from "./uploadExcel";
 
 export default {
   name: "fastInStock",
@@ -500,9 +744,11 @@ export default {
   components: {
     draggable,
     Treeselect,
+    uploadExcel,
   },
   data() {
     return {
+      activeName: 'inStockList',
       visible: false,
       form: {},
       rules: {
@@ -529,6 +775,12 @@ export default {
       company: '',
       allfQty: 0,
       userVal:'',
+      DrList: [],
+      // 收费
+      fDNameOptions: [],
+      // 计价单位
+      fFeetUnitOptions: [],
+      uploadExcel: false,
 
       // 设置列开关
       showSetting: false,
@@ -624,10 +876,16 @@ export default {
     listGoods({fStatus: 0, delFlag: 0}).then((response) => {
       this.goodsOptions = response.rows;
     });
+    listFees({fDc: "D"}).then((response) => {
+      this.fDNameOptions = response.rows;
+    });
     this.getDicts("storage_type").then((response) => {
       this.fStorageTypeOptions = response.data;
       localStorage.setItem("fStorageTypeList", JSON.stringify(response.data));
     });
+    this.getDicts("data_unitfees").then((response) => {
+      this.fFeetUnitOptions = response.data;
+    });
     this.getConfigKey("show_fCustomno").then((response) => {
       this.showfCustomno = response.msg;
     });
@@ -776,6 +1034,33 @@ export default {
         }
       })
     },
+    // 新增应收明细
+    addDrList() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.DrList.push({
+            fCorpid: this.form.fCorpid,
+            fMblno: this.form.fMblno,
+            fFeeid: null,
+            fFeeUnitid: null,
+            fQty: null,
+            fUnitprice: null,
+            fAmount: null,
+            fProductName: this.form.fProductName,
+            fMarks: this.form.fMarks,
+            fCurrency: "RMB",
+            fExrate: "1",
+            fTaxrate: null,
+            fCxrate: null,
+            fRate: null,
+            fStltypeid: '1',
+            fSrcTypeId: 0,
+            fBusinessType: '0',
+            remarks: null,
+          })
+        }
+      })
+    },
     changefWarehouseid() {
       treeselect(this.form.fWarehouseid).then((response) => {
         this.fWarehouseidOptions = response.data;
@@ -909,6 +1194,51 @@ export default {
         });
       }
     },
+    // 暂存
+    handleSave() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {}
+      })
+    },
+    changeFeeUnit() {},
+    // 数量计算
+    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);
+    },
+    // 收费明细删除
+    deleteDrRow(index, rows) {
+      rows.splice(index, 1);
+    },
+    // 下载模板
+    downloadExcel() {
+      window.location.href = "http://121.36.212.131:8080/file/入库模板.xlsx";
+    },
+    openUploadExcel() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.uploadExcel = !this.uploadExcel;
+          this.$refs.upexcel.init(this.form, this.detailList);
+        }
+      })
+    },
+    showAddOrUpdate2(data) {
+      this.uploadExcel = data;
+    },
+    adddetailList(rows) {
+      rows.map((e) => {
+        e.fMblno = this.form.fMblno;
+        e.fBillstatus = 10;
+      });
+      this.detailList.push(...rows);
+    },
 
     //列设置全选
     allChecked() {
@@ -1010,4 +1340,7 @@ export default {
 .print_form {
   font-size: 12px;
 }
+/deep/ .el-tabs .el-tabs__content {
+  overflow-x: visible !important;
+}
 </style>

+ 664 - 0
src/components/fastStorage/fastInStock/uploadExcel.vue

@@ -0,0 +1,664 @@
+<template>
+  <el-dialog
+    title="提示"
+    :visible.sync="uploadVisible"
+    width="85%"
+    :close-on-click-modal="false"
+    @close="handleClose"
+    v-dialogDrag
+    append-to-body
+  >
+    <span>
+      <div
+        style="
+          display: flex;
+          justify-content: space-between;
+        "
+      >
+        <div style="display: flex;;margin-bottom: 10px;">
+          <el-upload
+            :action="actionUrl"
+            multiple
+            :on-progress="progress"
+            :headers="headers"
+            :show-file-list="false"
+            :on-success="
+              (res) => {
+                handleSucces(res);
+              }
+            "
+          >
+            <el-button size="small" type="primary">导入Excel</el-button>
+          </el-upload>
+          <el-button
+            v-if="false"
+            size="small"
+            type="primary"
+            @click="bathHandle"
+            :disabled="selection.length != 1"
+            style="margin-left:10px"
+            >批量处理属性(详情)</el-button
+          >
+        </div>
+        <div style="margin: 0 10px">
+          <el-button
+            icon="el-icon-setting"
+            size="mini"
+            circle
+            @click="showSetting = !showSetting"
+          ></el-button>
+        </div>
+      </div>
+      <el-table :data="excelList" @selection-change="Selectinventory" v-loading="loading" element-loading-text="努力加载中">
+        <el-table-column type="selection" width="50" align="center" fixed />
+        <el-table-column
+          label="序号"
+          type="index"
+          width="50"
+          fixed
+          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"
+          sortable
+        >
+          <template slot-scope="scope">
+            <span v-if="item.label == 'fBsdate'">
+              <el-date-picker
+                v-model="scope.row.fBsdate"
+                type="date"
+                style="width: 100%"
+                value-format="timestamp"
+                placeholder="入库日期"
+                @change="dateSelected(scope,'fBsdate')"
+              >
+              </el-date-picker>
+            </span>
+            <span v-else-if="item.label == 'fGoodsid'">
+              <el-select
+                filterable
+                v-model="scope.row.fGoodsid"
+                style="width: 100%"
+                placeholder="请选择品名"
+                @change="dateSelected(scope,'fGoodsid')"
+              >
+                <el-option
+                  v-for="(item, index) in goodsOptions"
+                  :key="index.fId"
+                  :label="item.fName"
+                  :value="item.fId"
+                ></el-option>
+              </el-select>
+            </span>
+            <span v-else-if="item.label == 'fBusinessType'">
+              <el-select
+                filterable
+                v-model="scope.row.fBusinessType"
+                style="width: 100%"
+                placeholder="请选择商品属性"
+                @change="dateSelected(scope,'fBusinessType')"
+              >
+                <el-option
+                  v-for="(item, index) in fStorageTypeOptions"
+                  :key="index.dictValue"
+                  :label="item.dictLabel"
+                  :value="item.dictValue"
+                />
+              </el-select>
+            </span>
+            <span v-else-if="item.label == 'fMarks'">
+              <el-input
+                v-model="scope.row.fMarks"
+                style="width: 100%"
+                placeholder="请填写属性描述"
+                @change="dateSelected(scope,'fMarks')"
+              />
+            </span>
+            <span v-else-if="item.label == 'fWarehouseInformation'">
+              <el-input
+                placeholder="请选择"
+                v-model="scope.row.fWarehouseInformation"
+                @focus="getTreeselect(scope)"
+              >
+              </el-input>
+            </span>
+            <span v-else-if="item.label == 'fQty'">
+              <el-input
+                v-input-limit="0"
+                v-model.number="scope.row.fQty"
+                style="width: 100%"
+                placeholder="件数"
+              />
+            </span>
+            <span v-else-if="item.label == 'fGrossweight'">
+              <el-input
+                v-model.number="scope.row.fGrossweight"
+                v-input-limit="2"
+                style="width: 100%"
+                placeholder="毛重"
+              />
+            </span>
+            <span v-else-if="item.label == 'fNetweight'">
+              <el-input
+                v-model.number="scope.row.fNetweight"
+                v-input-limit="2"
+                style="width: 100%"
+                placeholder="净重"
+              />
+            </span>
+            <span v-else-if="item.label == 'fPackagespecs'">
+              <el-input
+                v-model="scope.row.fPackagespecs"
+                style="width: 100%"
+                placeholder="包装规格"
+              />
+            </span>
+            <span v-else-if="item.label == 'fCntrno'">
+              <el-input
+                v-model="scope.row.fCntrno"
+                style="width: 100%"
+                placeholder="箱号"
+                v-Alphabet
+                @change="unRepeat(scope.row.fCntrno, scope.$index)"
+              />
+            </span>
+            <span v-else-if="item.label == 'fTruckno'">
+              <el-input
+                v-model="scope.row.fTruckno"
+                style="width: 100%"
+                placeholder="车号"
+                v-Alphabet
+              />
+            </span>
+            <span v-else>{{ scope.row[item.label] }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-dialog
+        title="自定义列显示"
+        :visible.sync="showSetting"
+        width="700px"
+        v-dialogDrag
+        :close-on-click-modal="false"
+        append-to-body
+      >
+        <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 @click="delRow" type="danger">重 置</el-button>
+          <el-button type="primary" @click="save()">确 定</el-button>
+        </span>
+      </el-dialog>
+    </span>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="uploadVisible = false">取 消</el-button>
+      <el-button type="primary" @click="importData">确 定</el-button>
+    </span>
+    <el-dialog
+      title="选择库位"
+      :data="treeselectList"
+      :visible.sync="choiceWarehouse"
+      width="30%"
+      :close-on-click-modal="false"
+      append-to-body
+    >
+      <treeselect
+        v-model="treeselectList.fWarehouselocid"
+        @select="getAlltree"
+        :options="fWarehouseidOptions"
+        :show-count="true"
+        :disable-branch-nodes="true"
+        placeholder="请选择归属库区"
+      />
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="choiceWarehouse = false">取 消</el-button>
+        <el-button type="primary" @click="confirm">确 定</el-button>
+      </span>
+    </el-dialog>
+  </el-dialog>
+</template>
+
+<script>
+import { getToken } from "@/utils/auth";
+import Cookies from "js-cookie";
+import { addSet, select, resetModule } from "@/api/system/set";
+import draggable from "vuedraggable";
+import Treeselect from "@riophae/vue-treeselect";
+import { listGoods } from "@/api/basicdata/goods";
+import { treeselect } from "@/api/basicdata/warehouse";
+export default {
+  name: "inStock",
+  props: {
+    uploadExcelVisible: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  components: {
+    draggable,
+    Treeselect,
+  },
+  data() {
+    return {
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      actionUrl:
+        process.env.VUE_APP_BASE_API +
+        "/warehouseBusiness/inStock/importInstock", // 上传的图片服务器地址
+      uploadVisible: false,
+      excelList: [],
+      drag: false,
+      loading:false,
+      setRowList: [],
+      getRowList: [],
+      allCheck: false,
+      showSetting: false,
+      tableDate: [
+        {
+          surface: "1",
+          label: "fBsdate",
+          name: "入库日期",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "2",
+          label: "fGoodsid",
+          name: "品名",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "3",
+          label: "fBusinessType",
+          name: "货物属性",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "4",
+          label: "fMarks",
+          name: "属性详情",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "5",
+          label: "fWarehouseInformation",
+          name: "库区",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "6",
+          label: "fQty",
+          name: "件数",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "7",
+          label: "fGrossweight",
+          name: "毛重(kg)",
+          checked: 0,
+          width: 100,
+        },
+
+        {
+          surface: "8",
+          label: "fNetweight",
+          name: "净重(kg)",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "9",
+          label: "fPackagespecs",
+          name: "包装规格",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "10",
+          label: "fCntrno",
+          name: "箱号",
+          checked: 0,
+          width: 100,
+        },
+        {
+          surface: "11",
+          label: "fTruckno",
+          name: "车号",
+          checked: 0,
+          width: 100,
+        },
+      ],
+      goodsOptions: [],
+      fStorageTypeOptions: [],
+      fWarehouseidOptions: [],
+      treeselectList: {
+        fWarehouselocid: null,
+      },
+      choiceWarehouse: false,
+      oldList: [],
+      form: {},
+      selection: [],
+    };
+  },
+  created() {
+    this.setRowList = this.tableDate;
+    this.getRowList = this.tableDate;
+    listGoods({ fStatus: 0, delFlag: 0 }).then((response) => {
+      this.goodsOptions = response.rows;
+    });
+    this.getDicts("storage_type").then((response) => {
+      this.fStorageTypeOptions = response.data;
+    });
+    this.getRow();
+  },
+  methods: {
+    dateSelected(scope,name){
+      if (name === 'fBsdate'){
+        this.excelList.forEach(item => {
+          if (!item.fBsdate) this.$set(item,'fBsdate',scope.row.fBsdate)
+        })
+      }else if (name === 'fGoodsid'){
+        this.excelList.forEach(item => {
+          if (!item.fGoodsid) this.$set(item,'fGoodsid',scope.row.fGoodsid)
+        })
+      }else if (name === 'fBusinessType'){
+        this.excelList.forEach(item => {
+          if (!item.fBusinessType) this.$set(item,'fBusinessType',scope.row.fBusinessType)
+        })
+      }else if (name === 'fMarks'){
+        this.excelList.forEach(item => {
+          if (!item.fMarks) this.$set(item,'fMarks',scope.row.fMarks)
+        })
+      }
+    },
+    init(row, list) {
+      this.oldList = [];
+      this.form = null;
+      this.excelList = [];
+      this.oldList = list;
+      this.form = row;
+      treeselect(row.fWarehouseid).then((response) => {
+        this.fWarehouseidOptions = response.data;
+      });
+    },
+    progress(event, file, fileList){
+      this.loading = true
+    },
+    handleSucces(res) {
+      this.loading = false
+      if (res.code) {
+        if (res.data.length) {
+          res.data.map((e) => {
+            e.fBsdate = this.form.fBsdate;
+            e.fGoodsid = this.form.fGoodsid;
+          });
+        }
+        this.excelList = res.data;
+      }
+    },
+    //列设置全选
+    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: "上传Excel",
+        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,
+              fixed: item.fixed,
+            });
+            return res;
+          }, []);
+        }
+      });
+    },
+    //重置列表
+    delRow() {
+      this.data = {
+        tableName: "上传Excel",
+        userId: Cookies.get("userName"),
+      };
+      resetModule(this.data).then((res) => {
+        if (res.code == 200) {
+          this.showSetting = false;
+          this.setRowList = this.$options.data().tableDate;
+          this.getRowList = this.$options.data().tableDate;
+        }
+      });
+    },
+    //保存列设置
+    save() {
+      this.showSetting = false;
+      this.data = {
+        tableName: "上传Excel",
+        userId: Cookies.get("userName"),
+        sysTableSetList: this.setRowList,
+      };
+      addSet(this.data).then((res) => {
+        if (res.code == 200) {
+          this.showSetting = false;
+          this.getRowList = this.setRowList.filter((e) => e.checked == 0);
+        }
+      });
+    },
+    //开始拖拽事件
+    onStart() {
+      this.drag = true;
+    },
+    //拖拽结束事件F
+    onEnd() {
+      this.drag = false;
+    },
+    getAlltree(tree) {
+      this.information = tree.fWarehouseInformation;
+    },
+    importData() {
+      if (this.excelList.length == 0) {
+        return this.$message.error("请上传Excel文件,并完善数据");
+      }
+      for (let item in this.excelList) {
+        if (this.excelList[item].fBsdate == null) {
+          return this.$message.error(
+            "请选择第" + (Number(item) + 1) + "行的入库日期"
+          );
+        }
+        if (this.excelList[item].fGoodsid == null) {
+          return this.$message.error(
+            "请选择第" + (Number(item) + 1) + "行的品名"
+          );
+        }
+        if (this.excelList[item].fBusinessType == null) {
+          return this.$message.error(
+            "请选择第" + (Number(item) + 1) + "行的货物属性"
+          );
+        }
+        if (this.excelList[item].fMarks == null) {
+          return this.$message.error(
+            "请输入第" + (Number(item) + 1) + "行的属性详情"
+          );
+        }
+        // if (this.excelList[item].fWarehouseInformation == null) {
+        //   return this.$message.error(
+        //     "请选择第" + (Number(item) + 1) + "行的库区"
+        //   );
+        // }
+        if (this.excelList[item].fQty == null) {
+          return this.$message.error(
+            "请输入第" + (Number(item) + 1) + "行的件数"
+          );
+        }
+        if (this.excelList[item].fGrossweight == null) {
+          return this.$message.error(
+            "请输入第" + (Number(item) + 1) + "行的毛重"
+          );
+        }
+        if (this.excelList[item].fNetweight == null) {
+          return this.$message.error(
+            "请输入第" + (Number(item) + 1) + "行的净重"
+          );
+        }
+        // if (this.excelList[item].fPackagespecs == null) {
+        //   return this.$message.error(
+        //     "请输入第" + (Number(item) + 1) + "行的包装规格"
+        //   );
+        // }
+        if (this.excelList[item].fCntrno == null) {
+          return this.$message.error(
+            "请输入第" + (Number(item) + 1) + "行的箱号"
+          );
+        }
+      }
+      this.$emit("adddetailList", this.excelList);
+      this.uploadVisible = false;
+    },
+    unRepeat(row, index) {
+      this.oldList.map((e) => {
+        if (row == e.fCntrno) {
+          this.excelList[index].fCntrno = null;
+          this.$message.error("该箱号和明细表上的存在重复");
+        }
+      });
+      this.excelList.map((e, i) => {
+        if (index != i) {
+          if (row && row == e.fCntrno) {
+            this.excelList[index].fCntrno = null;
+            this.$message.error("该箱号存在重复");
+          }
+        }
+      });
+    },
+    handleClose() {
+      this.$emit("changeShow", false);
+    },
+    getTreeselect(row) {
+      this.treeselectList.fWarehouselocid = row.row.fWarehouselocid
+        ? row.row.fWarehouselocid
+        : null;
+      this.TreeIndex = row.$index;
+      this.choiceWarehouse = true;
+    },
+    confirm() {
+      this.$set(
+        this.excelList[this.TreeIndex],
+        "fWarehouseInformation",
+        this.information
+      );
+      this.$set(
+        this.excelList[this.TreeIndex],
+        "fWarehouselocid",
+        this.treeselectList.fWarehouselocid
+      );
+      this.choiceWarehouse = false;
+    },
+    Selectinventory(selection) {
+      this.selection = selection;
+    },
+    bathHandle() {
+      this.excelList.map((e) => {
+        e.fBusinessType = this.selection[0].fBusinessType
+          ? this.selection[0].fBusinessType
+          : null;
+        e.fMarks = this.selection[0].fMarks ? this.selection[0].fMarks : null;
+      });
+    },
+  },
+  watch: {
+    uploadExcelVisible() {
+      this.uploadVisible = this.uploadExcelVisible;
+    },
+  },
+};
+</script>

+ 490 - 183
src/components/fastStorage/fastOutStock/index.vue

@@ -183,142 +183,144 @@
           </el-form-item>
         </el-col>
       </el-row>
-    <div style="margin: 10px 0">
-      <!--      列设置-->
-      <el-dialog title="提示" :visible.sync="showSetting" width="700px" v-dialogDrag append-to-body>
-        <template slot="title">
-          <div class="avue-crud__dialog__header">
+      <div style="margin: 10px 0">
+        <!--      列设置-->
+        <el-dialog title="提示" :visible.sync="showSetting" width="700px" v-dialogDrag append-to-body>
+          <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>
-        </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 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>
-                <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">
+              </transition-group>
+            </draggable>
+          </div>
+          <span slot="footer" class="dialog-footer">
         <el-button @click="showSetting = false">取 消</el-button>
         <el-button @click="delRow" type="danger">重 置</el-button>
         <el-button type="primary" @click="save()">确 定</el-button>
       </span>
-      </el-dialog>
-      <div style="margin: 10px 10px">
-        <el-button
-          size="small"
-          style="float:left;"
-          type="primary"
-          @click="addList"
-          :disabled="disabled"
-        >
-          检索
-        </el-button>
-        <el-button
-          size="small"
-          style="float:left;"
-          type="danger"
-          :disabled="selection.length == 0"
-          @click="batchDelete"
-        >
-          批量删除
-        </el-button>
-        <el-button
-          icon="el-icon-setting"
-          size="mini"
-          circle
-          @click="showSetting = !showSetting"
-          style="float: right"
-        ></el-button>
-      </div>
-      <el-table
-        :data="detailList"
-        tooltip-effect="dark"
-        stripe
-        ref="detailTable"
-        @selection-change="handleSelection"
-        show-summary
-        :summary-method="getSummaries"
-      >
-        <el-table-column type="selection" width="50" align="center" fixed/>
-        <el-table-column
-          label="序号"
-          type="index"
-          width="50"
-          fixed
-          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"
-          :show-overflow-tooltip="true"
-          sortable
-        >
-          <template slot-scope="scope">
+        </el-dialog>
+        <el-tabs v-model="activeName">
+          <el-tab-pane label="出库明细" name="outStockList">
+            <div style="margin: 10px 10px">
+              <el-button
+                size="small"
+                style="float:left;"
+                type="primary"
+                @click="addList"
+                :disabled="disabled"
+              >
+                检索
+              </el-button>
+              <el-button
+                size="small"
+                style="float:left;"
+                type="danger"
+                :disabled="selection.length == 0"
+                @click="batchDelete"
+              >
+                批量删除
+              </el-button>
+              <el-button
+                icon="el-icon-setting"
+                size="mini"
+                circle
+                @click="showSetting = !showSetting"
+                style="float: right"
+              ></el-button>
+            </div>
+            <el-table
+              :data="detailList"
+              tooltip-effect="dark"
+              stripe
+              ref="detailTable"
+              @selection-change="handleSelection"
+              show-summary
+              :summary-method="getSummaries"
+            >
+              <el-table-column type="selection" width="50" align="center" fixed/>
+              <el-table-column
+                label="序号"
+                type="index"
+                width="50"
+                fixed
+                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"
+                :show-overflow-tooltip="true"
+                sortable
+              >
+                <template slot-scope="scope">
             <span v-if="item.label == 'fGoodsid'">
-              {{scope.row.fGoodsids}}
+              {{ scope.row.fGoodsids }}
             </span>
-<!--            <span v-else-if="item.label == 'fCntrno'">-->
-<!--              <el-input-->
-<!--                v-model="scope.row.fCntrno"-->
-<!--                placeholder="请输入箱号"-->
-<!--                clearable-->
-<!--              ></el-input>-->
-<!--            </span>-->
-            <span v-else-if="item.label == 'fSealno'">
+                  <!--            <span v-else-if="item.label == 'fCntrno'">-->
+                  <!--              <el-input-->
+                  <!--                v-model="scope.row.fCntrno"-->
+                  <!--                placeholder="请输入箱号"-->
+                  <!--                clearable-->
+                  <!--              ></el-input>-->
+                  <!--            </span>-->
+                  <span v-else-if="item.label == 'fSealno'">
               <el-input
                 v-model="scope.row.fSealno"
                 placeholder="请输入封号"
                 clearable
               ></el-input>
             </span>
-            <span v-else-if="item.label == 'fBusinessType'">
+                  <span v-else-if="item.label == 'fBusinessType'">
               <el-select
                 v-model="scope.row.fBusinessType"
                 filterable
@@ -333,7 +335,7 @@
                 />
               </el-select>
             </span>
-            <span v-else-if="item.label == 'fQty'">
+                  <span v-else-if="item.label == 'fQty'">
               <el-input
                 v-input-limit="0"
                 @change="qtyChange(scope.row)"
@@ -341,7 +343,7 @@
                 placeholder="出库件数"
               />
             </span>
-            <span v-else-if="item.label == 'fGrossweight'">
+                  <span v-else-if="item.label == 'fGrossweight'">
               <el-input
                 v-input-limit="2"
                 v-model="scope.row.fGrossweight"
@@ -349,7 +351,7 @@
                 placeholder="出库毛重"
               />
             </span>
-            <span v-else-if="item.label == 'fNetweight'">
+                  <span v-else-if="item.label == 'fNetweight'">
               <el-input
                 v-input-limit="2"
                 v-model="scope.row.fNetweight"
@@ -357,37 +359,276 @@
                 placeholder="出库净重"
               />
             </span>
-            <span v-else-if="item.label == 'remark'">
+                  <span v-else-if="item.label == 'remark'">
               <el-input
                 v-model="scope.row.remark"
                 placeholder="备注"
               />
             </span>
-            <span v-else>{{ scope.row[item.label] }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          header-align="center"
-          align="center"
-          label="操作"
-          width="160px"
-          fixed="right"
-        >
-          <template slot-scope="scope">
-            <el-button
-              type="text"
-              @click.native.prevent="wDeleteRow(scope.$index, detailList)"
-              size="small"
-            >移除
-            </el-button
+                  <span v-else>{{ scope.row[item.label] }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                header-align="center"
+                align="center"
+                label="操作"
+                width="160px"
+                fixed="right"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    type="text"
+                    @click.native.prevent="wDeleteRow(scope.$index, detailList)"
+                    size="small"
+                  >移除
+                  </el-button
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="收款信息" name="DrList">
+            <div style="margin: 10px 10px">
+              <el-button
+                size="small"
+                style="float:left;"
+                type="primary"
+                @click="addDrList"
+              >
+                新行
+              </el-button>
+            </div>
+            <el-table
+              ref="DrTable"
+              :data="DrList"
+              tooltip-effect="dark"
+              stripe
             >
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
+              <el-table-column label="序号" type="index" width="50" fixed></el-table-column>
+              <el-table-column
+                prop="fCorpid"
+                header-align="center"
+                align="center"
+                width="300px"
+                label="客户名称"
+              >
+                <template slot-scope="scope">
+                  <el-select
+                    v-model="scope.row.fCorpid"
+                    filterable
+                    clearable
+                    placeholder="客户名称"
+                  >
+                    <el-option
+                      v-for="(item, index) in fMblnoOptions"
+                      :key="index.fId"
+                      :label="item.fName"
+                      :value="item.fId"
+                    ></el-option>
+                  </el-select>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="fFeeid"
+                header-align="center"
+                align="center"
+                width="240px"
+                label="费用名称"
+              >
+                <template slot-scope="scope">
+                  <el-select
+                    v-model="scope.row.fFeeid"
+                    clearable
+                    filterable
+                    placeholder="费用名称"
+                  >
+                    <el-option
+                      v-for="(item, index) in fDNameOptions"
+                      :key="index.fId"
+                      :label="item.fName"
+                      :value="item.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="请选择计价单位"
+                    clearable
+                    @change="changeFeeUnit(scope.row)"
+                  >
+                    <el-option
+                      v-for="(item, index) in fFeetUnitOptions"
+                      :key="index.dictValue"
+                      :label="item.dictLabel"
+                      :value="item.dictValue"
+                    />
+                  </el-select>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="fQty"
+                header-align="center"
+                align="center"
+                width="130px"
+                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="数量"
+                    @change="changeContractAmt(scope.row)"
+                    show-word-limit
+                  />
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="fUnitprice"
+                header-align="center"
+                align="center"
+                width="130px"
+                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="单价"
+                    @change="changeContractAmt(scope.row)"
+                    show-word-limit
+                  />
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="fAmount"
+                header-align="center"
+                align="center"
+                width="130px"
+                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.fAmount"
+                    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"
+                    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"
+                    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"
+                    placeholder="品牌"
+                    show-word-limit
+                  />
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="fSrcTypeId"
+                header-align="center"
+                align="center"
+                width="130px"
+                label="来源"
+              >
+                <template slot-scope="scope">
+                  <span v-if="scope.row.fSrcTypeId === 0">录入</span>
+                  <span v-if="scope.row.fSrcTypeId == 1">协议</span>
+                  <span v-if="scope.row.fSrcTypeId == 10">变更</span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="remark"
+                header-align="center"
+                align="center"
+                width="150px"
+                label="备注"
+              >
+                <template slot-scope="scope">
+                  <el-input
+                    v-model="scope.row.remark"
+                    placeholder="备注"
+                    show-word-limit
+                  />
+                </template>
+              </el-table-column>
+              <el-table-column
+                header-align="center"
+                align="center"
+                label="操作"
+                width="200px"
+                fixed="right"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    @click.native.prevent="deleteDrRow(scope.$index, DrList)"
+                    size="small"
+                  >移除
+                  </el-button>
+                  <el-button
+                    size="small"
+                    @click="listCheck(scope.row)"
+                    v-if="scope.row.fBillstatus < 6"
+                  >请核</el-button>
+                  <el-button
+                    size="small"
+                    @click="revokeListCheck(scope.row)"
+                    v-if="scope.row.fBillstatus == 6"
+                  >撤销请核</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
     </el-form>
 
-<!--    打印-->
+    <!--    打印-->
     <el-dialog
       append-to-body
       :close-on-click-modal="false"
@@ -395,56 +636,57 @@
       :visible.sync="printVisible"
     >
       <div id="print_ckd">
-        <div style="text-align: center;font-size: 24px;margin-bottom: 5px;">{{ company }}出库单</div>
+        <div style="text-align: center;font-size: 24px;margin-bottom: 5px;">出库单</div>
+        <div style="text-align: center;font-size: 24px;margin-bottom: 5px;">{{ company }}</div>
         <div class="print_table" style="display: flex">
           <table border="0" cellspacing="0" cellpadding="0" style="width: 100%; line-height: 30px">
             <tr>
-              <td>公司名称</td>
-              <td colspan="3" v-for="item in fMblnoOptions" v-if="item.fId == form.fCorpid">{{ item.fName }}</td>
-              <td>出库日期</td>
-              <td colspan="3">{{ form.fBsdate | fBsdateFormat }}</td>
+              <td>客户名</td>
+              <td v-for="item in fMblnoOptions" v-if="item.fId == form.fCorpid">{{ item.fName }}</td>
+              <td>日期</td>
+              <td>{{ form.fBsdate | fBsdateFormat }}</td>
+              <td>流水号</td>
+              <td colspan="2"></td>
+            </tr>
+            <tr>
+              <td>车号</td>
+              <td colspan="1">{{ form.fTruckno }}</td>
+              <td colspan="1">提单号</td>
+              <td colspan="4">{{ form.fMblno }}</td>
             </tr>
             <tr>
-              <td style="width: 15%">货物名称</td>
-              <td>提单号</td>
+              <td>货名</td>
               <td>箱号</td>
+              <td>铅封号</td>
               <td>件数</td>
-              <td>计量单位(吨)</td>
-              <td>封号</td>
-              <td>库位</td>
+              <td>规格</td>
+              <td>区位</td>
               <td>备注</td>
             </tr>
             <tr v-for="(item, index) in detailList" :key="index">
               <td v-for="row in goodsOptions" v-if="row.fId == item.fGoodsid">{{ row.fName }}</td>
-              <td>{{ item.fMblno }}</td>
               <td>{{ item.fCntrno }}</td>
-              <td>{{ item.fQty }}</td>
-              <td>{{ (item.fGrossweight / 1000).toFixed(4) }}</td>
               <td>{{ item.fSealno }}</td>
+              <td>{{ item.fQty }}</td>
+              <td>{{ item.fMarks }}</td>
               <td>{{ item.fWarehouseInformation }}</td>
               <td>{{ item.remark }}</td>
             </tr>
             <tr>
-              <td>车号</td>
-              <td colspan="2">{{ form.fTruckno }}</td>
-              <td colspan="2">身份证号</td>
-              <td colspan="3">{{ form.fDriverIdCar }}</td>
-            </tr>
-            <tr>
-              <td>地址</td>
-              <td colspan="7">{{ stockaddr }}</td>
-            </tr>
-            <tr>
               <td>备注</td>
-              <td colspan="7">{{ form.remark }}</td>
-            </tr>
-            <tr>
-              <td colspan="8">
-                雨/雪天装货司机自愿装车,出现货物水湿与仓库无关!数量准确无误,货物包装完好!
-              </td>
+              <td colspan="4">{{ form.remark }}</td>
+              <td>总件数</td>
+              <td>{{ allfQty }}</td>
             </tr>
           </table>
         </div>
+        <div style="display: flex; justify-content: space-between; font-size: 12px;margin-top: 8px">
+          <div>操作:</div>
+          <div>理货:</div>
+          <div>叉车:</div>
+          <div>司机:</div>
+          <div style="width: 150px">电话:</div>
+        </div>
       </div>
 
       <span slot="footer" class="dialog-footer">
@@ -460,6 +702,7 @@
       </span>
     </el-dialog>
     <span slot="footer" class="dialog-footer">
+      <el-button type="success" @click="handleSave">暂存</el-button>
       <el-button type="warning" @click="openPrint" :disabled="detailList.length == 0">打印</el-button>
       <el-button type="primary" @click="handleConfirm" :disabled="detailList.length == 0">确认出库</el-button>
       <el-button @click="closeDialog">取消</el-button>
@@ -479,8 +722,9 @@ import {listGoods} from "@/api/basicdata/goods";
 import {queryUserVal} from "@/api/system/user";
 import {listWhgenleg} from "@/api/reportManagement/whgenleg";
 import {addSet, resetModule, select} from '@/api/system/set';
-import {changeSelect,fastOutStock} from "@/api/warehouseBusiness/fastOutStock";
+import {changeSelect, fastOutStock} from "@/api/warehouseBusiness/fastOutStock";
 import print from "print-js";
+import {listFees, getFees} from "@/api/basicdata/fees";
 
 export default {
   name: "fastOutStock",
@@ -490,6 +734,7 @@ export default {
   },
   data() {
     return {
+      activeName: 'outStockList',
       disabled: false,
       visible: false,
       printVisible: false,
@@ -510,7 +755,11 @@ export default {
         fWarehouseid: [{required: true, message: " ", trigger: "blur"}],
         fTruckno: [{required: true, message: " ", trigger: "blur"}],
       },
-      selection:[],
+      selection: [],
+      allfQty: 0,
+      DrList: [],
+      fFeetUnitOptions: [],
+      fDNameOptions: [],
 
       // 设置列开关
       showSetting: false,
@@ -636,10 +885,16 @@ export default {
     listGoods({fStatus: 0, delFlag: 0}).then((response) => {
       this.goodsOptions = response.rows;
     });
+    listFees({fDc: "D"}).then((response) => {
+      this.fDNameOptions = response.rows;
+    });
     this.getDicts("storage_type").then((response) => {
       this.fStorageTypeOptions = response.data;
       localStorage.setItem("fStorageTypeList", JSON.stringify(response.data));
     });
+    this.getDicts("data_unitfees").then((response) => {
+      this.fFeetUnitOptions = response.data;
+    });
     this.getRow()
   },
   filters: {
@@ -699,9 +954,9 @@ export default {
     openPrint() {
       this.balance = 0;
       for (let item in this.detailList) {
-        if (!this.detailList[item].fCntrno) {
-          return this.$message.error('第' + (Number(item) + 1) + '行箱号不能为空')
-        }
+        // if (!this.detailList[item].fCntrno) {
+        //   return this.$message.error('第' + (Number(item) + 1) + '行箱号不能为空')
+        // }
         if (this.detailList[item].fPlanqty < this.detailList[item].fQty) {
           return this.$message.error("第" + (Number(item) + 1) + "行出库件数超出结余件数!");
         }
@@ -727,7 +982,7 @@ export default {
       })
       this.printVisible = true;
     },
-    handleConfirm(){
+    handleConfirm() {
       this.$refs["form"].validate(vaild => {
         if (vaild) {
           if (!this.form.fTruckno) return this.$message.error('车号不能为空')
@@ -855,6 +1110,34 @@ export default {
         this.disabled = false
       });
     },
+    // 新增应收明细
+    addDrList() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.DrList.push({
+            fCorpid: this.form.fCorpid,
+            fMblno: this.form.fMblno,
+            fFeeid: null,
+            fFeeUnitid: null,
+            fQty: null,
+            fUnitprice: null,
+            fAmount: null,
+            fProductName: this.form.fProductName,
+            fMarks: this.form.fMarks,
+            fCurrency: "RMB",
+            fExrate: "1",
+            fTaxrate: null,
+            fCxrate: null,
+            fRate: null,
+            fStltypeid: '1',
+            fSrcTypeId: 0,
+            fBusinessType: '0',
+            remarks: null,
+          })
+        }
+      })
+    },
+    changeFeeUnit() {},
     // 修改毛重净重
     changeOutStock(row) {
       this.$refs['detailTable'].clearSelection()
@@ -929,7 +1212,7 @@ export default {
     },
     // 批量删除
     batchDelete() {
-      this.$confirm('是否确认删除选中数据','提示',{
+      this.$confirm('是否确认删除选中数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
@@ -939,7 +1222,7 @@ export default {
           let index = this.detailList.findIndex(item1 => {
             return item1.deleteId == item.deleteId
           })
-          this.detailList.splice(index,1)
+          this.detailList.splice(index, 1)
         })
         this.$message({
           type: 'success',
@@ -994,11 +1277,11 @@ export default {
               })
             }
           })
-        }else {
-          listCorps({ type: 1 }).then((response) => {
+        } else {
+          listCorps({type: 1}).then((response) => {
             this.fMblnoOptions = response.rows
           })
-          listWarehousesss({ fStatus: 0, delFlag: 0 }).then((response) => {
+          listWarehousesss({fStatus: 0, delFlag: 0}).then((response) => {
             this.warehouseOptions = response.rows;
           })
           listGoods({fStatus: 0, delFlag: 0}).then((response) => {
@@ -1142,6 +1425,26 @@ export default {
       this.sums = sums;
       return sums;
     },
+    // 暂存
+    handleSave() {
+    },
+    // 数量计算
+    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);
+    },
+    // 收费明细删除
+    deleteDrRow(index, rows) {
+      rows.splice(index, 1);
+    },
+
 
     //列设置全选
     allChecked() {
@@ -1223,6 +1526,7 @@ export default {
 .print-div {
   color: #000;
 }
+
 .print_table {
   table {
     border-right: 1px solid #000;
@@ -1243,4 +1547,7 @@ export default {
 .print_form {
   font-size: 12px;
 }
+/deep/ .el-tabs .el-tabs__content {
+  overflow-x: visible !important;
+}
 </style>