Browse Source

Merge branch 'master' of http://192.168.1.160:3000/zhaohanlin/rtk-web-wms-cloud

yesheng 1 month ago
parent
commit
c947d94b46

+ 1 - 1
.env.dev

@@ -8,7 +8,7 @@ VUE_APP_TITLE = WMS开发环境
 # VUE_APP_BASE_API = 'http://192.168.1.94:48080'
 # VUE_APP_BASE_API = 'http://127.0.0.1:48080'
 # VUE_APP_BASE_API = 'http://113.105.183.190:42699'
-VUE_APP_BASE_API = 'http://192.168.1.85:48080'
+VUE_APP_BASE_API = 'http://61.155.26.34:36936'
 # VUE_APP_ETM_URL = 'http://localhost:81/index'
 # VUE_APP_ETM_URL = 'http://192.168.1.163:8181/etm/'
 # VUE_APP_MES_URL = 'http://192.168.1.163:8181/mes/'

+ 53 - 0
src/api/rtkwms/inrequestpda/index.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 创建入库申请主
+export function createInRequest(data) {
+  return request({
+    url: '/rtkwms/in-request/create',
+    method: 'post',
+    data: data
+  })
+}
+
+// 更新入库申请主
+export function updateInRequest(data) {
+  return request({
+    url: '/rtkwms/in-request/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除入库申请主
+export function deleteInRequest(id) {
+  return request({
+    url: '/rtkwms/in-request/delete?id=' + id,
+    method: 'delete'
+  })
+}
+
+// 获得入库申请主
+export function getInRequest(id) {
+  return request({
+    url: '/rtkwms/in-request/get?id=' + id,
+    method: 'get'
+  })
+}
+
+// 获得入库申请主分页
+export function getInRequestPage(params) {
+  return request({
+    url: '/rtkwms/in-request/page',
+    method: 'get',
+    params
+  })
+}
+// 导出入库申请主 Excel
+export function exportInRequestExcel(params) {
+  return request({
+    url: '/rtkwms/in-request/export-excel',
+    method: 'get',
+    params,
+    responseType: 'blob'
+  })
+}

+ 61 - 29
src/api/wms/output/inrequest.js

@@ -2,52 +2,84 @@ import request from "@/utils/request";
 
 // 创建入库申请主
 export function createInRequest(data) {
-  return request({
-    url: "/rtkwms/inout-request/createOutRequestOrder",
-    method: "post",
-    data: data,
-  });
+    return request({
+        url: "/rtkwms/inout-request/createOutRequestOrder",
+        method: "post",
+        data: data,
+    });
+}
+// 创建入库申请主
+export function createRequest(data) {
+    return request({
+        url: "/rtkwms/in-request/createOutRequestOrder",
+        method: "post",
+        data: data,
+    });
+}
+// 创建入库申请主
+export function getSourceOrder(data) {
+    return request({
+        url: "/rtkwms/inout-request/getSourceOrder",
+        method: "post",
+        data: data,
+    });
 }
 
 // 更新入库申请主
 export function updateInRequest(data) {
-  return request({
-    url: "/rtkwms/inout-request/updateOutRequestOrder",
-    method: "put",
-    data: data,
-  });
+    return request({
+        url: "/rtkwms/inout-request/updateOutRequestOrder",
+        method: "put",
+        data: data,
+    });
+}
+// 更新入库申请主
+export function updateRequest(data) {
+    return request({
+        url: "/rtkwms/in-request/updateOutRequestOrder",
+        method: "put",
+        data: data,
+    });
 }
 
 // 删除入库申请主
 export function deleteInRequest(id) {
-  return request({
-    url: "/rtkwms/in-request/delete?id=" + id,
-    method: "delete",
-  });
+    return request({
+        url: "/rtkwms/inout-request/delete?id=" + id,
+        method: "delete",
+    });
 }
 
 // 获得入库申请主
 export function getInRequest(id) {
-  return request({
-    url: "/rtkwms/in-request/get?id=" + id,
-    method: "get",
-  });
+    return request({
+        url: "/rtkwms/inout-request/get?id=" + id,
+        method: "get",
+    });
 }
 
 // 获得入库申请主分页
 export function getInRequestPage(params) {
-  return request({
-    url: "/rtkwms/in-request/page",
-    method: "get",
-    params,
-  });
+    return request({
+        url: "/rtkwms/inout-request/page",
+        method: "get",
+        params,
+    });
 }
 // 导出入库申请主 Excel
 export function exportInRequestExcel(params) {
-  return request({
-    url: "/rtkwms/in-request/export-excel",
-    method: "get",
-    params,
-    responseType: "blob",
-  });
+    return request({
+        url: "/rtkwms/inout-request/export-excel",
+        method: "get",
+        params,
+        responseType: "blob",
+    });
 }
+
+export function getDictByOrderType(params) {
+    return request({
+        url: "/rtkwms/inout-request/getDictByOrderType",
+        method: "get",
+        params,
+    });
+}

+ 460 - 0
src/views/rtkwms/inrequest/InRequestForm.vue

@@ -0,0 +1,460 @@
+<template>
+  <div class="app-container">
+    <!-- 对话框(添加 / 修改) -->
+    <el-dialog
+      v-dialogDrag
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="75%"
+      append-to-body
+    >
+      <el-form
+        ref="formRef"
+        v-loading="formLoading"
+        :model="formData"
+        :rules="formRules"
+        label-width="150px"
+      >
+        <el-col :span="12"
+          ><el-form-item label="业务类型" prop="businessType">
+            <el-select
+              v-model="formData.businessType"
+              @change="changeBusinessType"
+              placeholder="请选择业务类型"
+            >
+              <el-option
+                v-for="dict in getDictDatas('inout_business_type')"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select> </el-form-item
+        ></el-col>
+        <el-col :span="12"
+          ><el-form-item label="业务分类名称" prop="businessDescribe">
+            <el-select
+              v-model="formData.businessDescribe"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请选择业务类型"
+              @change="changeBusinessDescribe"
+            >
+              <el-option
+                v-for="dict in businessDescribeList"
+                :key="dict.label"
+                :label="dict.label"
+                :value="dict.label"
+              />
+            </el-select> </el-form-item
+        ></el-col>
+
+        <el-col :span="12"
+          ><el-form-item label="优先级" prop="priority">
+            <el-select
+              v-model="formData.priority"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请选择优先级"
+            >
+              <el-option
+                v-for="dict in getDictDatas('priority')"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="供应商编码" prop="supplierCode">
+            <el-input
+              v-model="formData.supplierCode"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请输入供应商编码"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="客户编码" prop="customerCode">
+            <el-input
+              v-model="formData.customerCode"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请输入客户编码"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="源单编号" prop="sourceOrderNo">
+            <el-select
+              v-model="formData.sourceOrderNo"
+              filterable
+              remote
+              :disabled="formData.businessType ? false : true"
+              reserve-keyword
+              placeholder="请输入源单编号"
+              :remote-method="remoteMethod"
+              :loading="loading"
+              @change="changeSourceOrderNo"
+            >
+              <el-option
+                v-for="item in sourceOrderNoList"
+                :key="item.sourceOrderNo"
+                :label="item.sourceOrderNo"
+                :value="item.sourceOrderNo"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计出入库时间" prop="expectedTime">
+            <el-date-picker
+              v-model="formData.expectedTime"
+              :disabled="formData.businessType ? false : true"
+              clearable
+              type="date"
+              value-format="timestamp"
+              placeholder="选择预计出入库时间"
+            /> </el-form-item
+        ></el-col>
+        <el-col :span="12">
+          <el-form-item label="实际出入库时间" prop="actualTime">
+            <el-date-picker
+              v-model="formData.actualTime"
+              clearable
+              :disabled="formData.businessType ? false : true"
+              type="date"
+              value-format="timestamp"
+              placeholder="选择实际出入库时间"
+            /> </el-form-item
+        ></el-col>
+
+        <el-col :span="12">
+          <el-form-item label="备注" prop="remark">
+            <el-input
+              v-model="formData.remark"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请输入备注"
+            /> </el-form-item
+        ></el-col>
+      </el-form>
+      <el-table :data="formData.list" border size="mini">
+        <el-table-column
+          label="源单编号"
+          align="center"
+          prop="sourceRequestId"
+          width="160"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="物料编码"
+          align="center"
+          prop="materialNo"
+          width="160"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="物料名称"
+          align="center"
+          prop="materialName"
+          width="150"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="客户编码"
+          align="center"
+          prop="customerCode"
+          width="150"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="客户名称"
+          align="center"
+          prop="customerName"
+          width="160"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="本次出货数量"
+          align="center"
+          prop="nowDeliveredQty"
+        >
+          <template slot-scope="scope">
+            <el-input
+              v-model="scope.row.nowDeliveredQty"
+              @change="deliverChange"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="已出货数量"
+          align="center"
+          prop="deliveredQty"
+          width="120"
+        />
+        <el-table-column
+          label="应出货数量"
+          align="center"
+          prop="shouldDeliveredQty"
+          width="120"
+        />
+        <el-table-column
+          label="申请数量"
+          align="center"
+          prop="requireQty"
+          width="120"
+        />
+        <el-table-column
+          label="单位"
+          align="center"
+          prop="unitName"
+          width="150"
+          show-overflow-tooltip
+        />
+        <el-table-column label="行备注" align="center" prop="remark">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.remark" />
+          </template>
+        </el-table-column>
+      </el-table>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" :disabled="formLoading" @click="submitForm"
+          >确 定</el-button
+        >
+        <el-button @click="dialogVisible = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import * as InRequestApi from "@/api/wms/output/inrequest";
+// import ShipmentNotification from "./ShipmentNotification.vue";
+export default {
+  name: "InRequestForm",
+  components: {
+    // ShipmentNotification,
+  },
+  data() {
+    return {
+      sourceOrderNoList: [],
+      businessDescribeList: [],
+      loading: false,
+      // 弹出层标题
+      dialogTitle: "",
+      // 是否显示弹出层
+      dialogVisible: false,
+      // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+      formLoading: false,
+      // 表单参数
+      formData: {
+        id: undefined,
+        requestNo: undefined,
+        requestType: undefined,
+        businessType: undefined,
+        businessCategory: undefined,
+        businessDescribe: undefined,
+        businessSubType: undefined,
+        status: undefined,
+        priority: undefined,
+        warehouseId: undefined,
+        relatedWarehouseId: undefined,
+        supplierCode: undefined,
+        customerCode: undefined,
+        sourceOrderNo: undefined,
+        expectedTime: undefined,
+        actualTime: undefined,
+        totalQty: undefined,
+        totalSku: undefined,
+        totalLine: undefined,
+        remark: undefined,
+        extendInfo: undefined,
+        submitter: undefined,
+        submitTime: undefined,
+        auditor: undefined,
+        auditTime: undefined,
+        erpWriteFlag: undefined,
+        erpErrMsg: undefined,
+        erpBackId: undefined,
+        list: [],
+      },
+      // 表单校验
+      formRules: {
+        requestNo: [
+          { required: true, message: "申请单号不能为空", trigger: "blur" },
+        ],
+        requestType: [
+          {
+            required: true,
+            message: "申请类型(0入库 1出库)不能为空",
+            trigger: "change",
+          },
+        ],
+        businessType: [
+          {
+            required: true,
+            message:
+              "业务类型(0采购入库 3生产退料 4成品入库 6销售退货 8委外退料 9委外入库 11其他入库 13转移调拨 14仓库盘点)不能为空",
+            trigger: "change",
+          },
+        ],
+        businessSubType: [
+          {
+            required: true,
+            message: "业务子类型(0正常 1补料)不能为空",
+            trigger: "change",
+          },
+        ],
+        status: [
+          {
+            required: true,
+            message:
+              "状态(0草稿 1已提交 2已审核 3执行中 4已完成 5已取消)不能为空",
+            trigger: "blur",
+          },
+        ],
+        priority: [
+          {
+            required: true,
+            message: "优先级(0普通 1紧急 2加急)不能为空",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  methods: {
+    remoteMethod(query) {
+      if (query !== "") {
+        let that = this;
+        this.loading = true;
+        setTimeout(async () => {
+          this.loading = false;
+          let { data } = await InRequestApi.getSourceOrder({
+            businessType: that.formData.businessType,
+            sourceOrderNo: query,
+          });
+          this.sourceOrderNoList = data || [];
+        }, 200);
+      } else {
+        this.sourceOrderNoList = [];
+      }
+    },
+    changeSourceOrderNo(value) {
+      this.sourceOrderNoList.map((v) => {
+        if (v.sourceOrderNo == value) {
+          this.formData.list = v.list;
+        }
+      });
+    },
+    changeBusinessDescribe(e) {
+      this.businessDescribeList.map((v) => {
+        if (v.label == e) {
+          this.formData.businessCategory = v.value;
+        }
+      });
+    },
+    async changeBusinessType(value) {
+      this.formData = {
+        id: this.formData.id,
+        businessType: this.formData.businessType,
+      };
+      this.formData = { ...this.formData };
+      let { data } = await InRequestApi.getDictByOrderType({
+        orderType: this.formData.businessType,
+      });
+      this.businessDescribeList = data;
+    },
+    /** 打开弹窗 */
+    async open(id) {
+      this.dialogVisible = true;
+      this.reset();
+      // 修改时,设置数据
+      if (id) {
+        this.formLoading = true;
+        try {
+          const res = await InRequestApi.getInRequest(id);
+          res.data.businessType = res.data.businessType
+            ? res.data.businessType.toString()
+            : "0";
+          res.data.businessDescribe = res.data.businessDescribe
+            ? res.data.businessDescribe.toString()
+            : "";
+          res.data.priority = res.data.priority
+            ? res.data.priority.toString()
+            : "0";
+          this.formData = res.data;
+          this.dialogTitle = "修改";
+        } finally {
+          this.formLoading = false;
+        }
+      }
+      this.dialogTitle = "新增";
+    },
+    /** 提交按钮 */
+    async submitForm() {
+      // 校验主表
+      await this.$refs["formRef"].validate();
+      this.formLoading = true;
+      try {
+        // this.$refs.shipmentNotification.open = true;
+        const data = this.formData;
+        let arr = [];
+        data.list.filter((v) => {
+          if (v.nowDeliveredQty) {
+            arr.push(v);
+          }
+        });
+        data.list = arr;
+        // 修改的提交;
+        if (data.id) {
+          await InRequestApi.updateRequest(data);
+          this.$modal.msgSuccess("修改成功");
+          this.dialogVisible = false;
+          this.$emit("success");
+          return;
+        }
+        // 添加的提交
+        await InRequestApi.createRequest(data);
+        this.$modal.msgSuccess("新增成功");
+        this.dialogVisible = false;
+        this.$emit("success");
+      } finally {
+        this.formLoading = false;
+      }
+    },
+    /** 表单重置 */
+    reset() {
+      this.formData = {
+        id: undefined,
+        requestNo: undefined,
+        requestType: undefined,
+        businessType: undefined,
+        businessCategory: undefined,
+        businessDescribe: undefined,
+        businessSubType: undefined,
+        status: undefined,
+        priority: undefined,
+        warehouseId: undefined,
+        relatedWarehouseId: undefined,
+        supplierCode: undefined,
+        customerCode: undefined,
+        sourceOrderNo: undefined,
+        expectedTime: undefined,
+        actualTime: undefined,
+        totalQty: undefined,
+        totalSku: undefined,
+        totalLine: undefined,
+        remark: undefined,
+        extendInfo: undefined,
+        submitter: undefined,
+        submitTime: undefined,
+        auditor: undefined,
+        auditTime: undefined,
+        erpWriteFlag: undefined,
+        erpErrMsg: undefined,
+        erpBackId: undefined,
+      };
+      this.resetForm("formRef");
+    },
+  },
+};
+</script>

+ 331 - 0
src/views/rtkwms/inrequest/index.vue

@@ -0,0 +1,331 @@
+<template>
+  <div class="app-container">
+    <!-- 搜索工作栏 -->
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="申请单号" prop="requestNo">
+        <el-input
+          v-model="queryParams.requestNo"
+          placeholder="请输入申请单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <!-- 操作工具栏 -->
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="openForm(undefined)"
+          v-hasPermi="['rtkwms:in-request:create']"
+          >新增</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          :loading="exportLoading"
+          v-hasPermi="['rtkwms:in-request:export']"
+          >导出</el-button
+        >
+      </el-col>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="list"
+      :stripe="true"
+      :show-overflow-tooltip="true"
+    >
+      <!-- <el-table-column label="申请单ID" align="center" prop="id" /> -->
+      <el-table-column
+        label="申请单号"
+        align="center"
+        width="180px"
+        prop="requestNo"
+      />
+      <!-- <el-table-column label="申请类型" align="center" prop="requestType" /> -->
+      <el-table-column label="业务类型" align="center" prop="businessType" />
+      <el-table-column
+        label="业务分类编码"
+        align="center"
+        width="150px"
+        prop="businessCategory"
+      />
+      <el-table-column
+        label="业务分类名称"
+        align="center"
+        width="150px"
+        prop="businessDescribe"
+      />
+      <el-table-column
+        label="业务子类型"
+        width="150px"
+        align="center"
+        prop="businessSubType"
+      />
+      <el-table-column label="状态" align="center" prop="status" />
+      <el-table-column label="优先级" align="center" prop="priority" />
+      <!-- <el-table-column label="仓库ID" align="center" prop="warehouseId" />
+      <el-table-column
+        label="关联仓库ID"
+        align="center"
+        prop="relatedWarehouseId"
+      /> -->
+      <el-table-column
+        label="供应商编码"
+        align="center"
+        width="150px"
+        prop="supplierCode"
+      />
+      <el-table-column label="客户编码" align="center" prop="customerCode" />
+      <el-table-column
+        label="源单编号"
+        width="150px"
+        align="center"
+        prop="sourceOrderNo"
+      />
+      <el-table-column
+        label="预计出入库时间"
+        align="center"
+        prop="expectedTime"
+        width="180"
+      >
+        <template v-slot="scope">
+          <span>{{ parseTime(scope.row.expectedTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="实际出入库时间"
+        align="center"
+        prop="actualTime"
+        width="180"
+      >
+        <template v-slot="scope">
+          <span>{{ parseTime(scope.row.actualTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="总数量" align="center" prop="totalQty" />
+      <el-table-column label="总SKU数" align="center" prop="totalSku" />
+      <el-table-column label="总行数" align="center" prop="totalLine" />
+      <el-table-column
+        label="备注"
+        width="150px"
+        align="center"
+        prop="remark"
+      />
+      <el-table-column
+        label="创建时间"
+        align="center"
+        prop="createTime"
+        width="180"
+      >
+        <template v-slot="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="提交人" align="center" prop="submitter" />
+      <el-table-column
+        label="提交时间"
+        align="center"
+        prop="submitTime"
+        width="180"
+      >
+        <template v-slot="scope">
+          <span>{{ parseTime(scope.row.submitTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="审核人" align="center" prop="auditor" />
+      <el-table-column
+        label="审核时间"
+        align="center"
+        prop="auditTime"
+        width="180"
+      >
+        <template v-slot="scope">
+          <span>{{ parseTime(scope.row.auditTime) }}</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column
+        label="操作"
+        align="center"
+        fixed="right"
+        width="150px"
+        class-name="small-padding fixed-width"
+      >
+        <template v-slot="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="openForm(scope.row.id)"
+            v-hasPermi="['rtkwms:in-request:update']"
+            >修改</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['rtkwms:in-request:delete']"
+            >删除</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页组件 -->
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNo"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <!-- 对话框(添加 / 修改) -->
+    <InRequestForm ref="formRef" @success="getList" />
+  </div>
+</template>
+
+<script>
+import * as InRequestApi from "@/api/rtkwms/inrequestpda";
+import InRequestForm from "./InRequestForm.vue";
+export default {
+  name: "InRequest",
+  components: {
+    InRequestForm,
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 入库申请主列表
+      list: [],
+      // 是否展开,默认全部展开
+      isExpandAll: true,
+      // 重新渲染表格状态
+      refreshTable: true,
+      // 选中行
+      currentRow: {},
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        requestNo: null,
+        requestType: null,
+        businessType: null,
+        businessCategory: null,
+        businessDescribe: null,
+        businessSubType: null,
+        status: null,
+        priority: null,
+        warehouseId: null,
+        relatedWarehouseId: null,
+        supplierCode: null,
+        customerCode: null,
+        sourceOrderNo: null,
+        expectedTime: [],
+        actualTime: [],
+        totalQty: null,
+        totalSku: null,
+        totalLine: null,
+        remark: null,
+        extendInfo: null,
+        createTime: [],
+        submitter: null,
+        submitTime: [],
+        auditor: null,
+        auditTime: [],
+        erpWriteFlag: null,
+        erpErrMsg: null,
+        erpBackId: null,
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    async getList() {
+      try {
+        this.loading = true;
+        const res = await InRequestApi.getInRequestPage(this.queryParams);
+        this.list = res.data.list;
+        this.total = res.data.total;
+      } finally {
+        this.loading = false;
+      }
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 添加/修改操作 */
+    openForm(id) {
+      this.$refs["formRef"].open(id);
+    },
+    /** 删除按钮操作 */
+    async handleDelete(row) {
+      const id = row.id;
+      await this.$modal.confirm(
+        '是否确认删除入库申请主编号为"' + id + '"的数据项?'
+      );
+      try {
+        await InRequestApi.deleteInRequest(id);
+        await this.getList();
+        this.$modal.msgSuccess("删除成功");
+      } catch {}
+    },
+    /** 导出按钮操作 */
+    async handleExport() {
+      await this.$modal.confirm("是否确认导出所有入库申请主数据项?");
+      try {
+        this.exportLoading = true;
+        const data = await InRequestApi.exportInRequestExcel(this.queryParams);
+        this.$download.excel(data, "入库申请主.xls");
+      } catch {
+      } finally {
+        this.exportLoading = false;
+      }
+    },
+  },
+};
+</script>

+ 270 - 125
src/views/wms/output/inrequest/components/InRequestForm.vue

@@ -5,7 +5,7 @@
       v-dialogDrag
       :title="dialogTitle"
       :visible.sync="dialogVisible"
-      width="45%"
+      width="75%"
       append-to-body
     >
       <el-form
@@ -13,128 +13,208 @@
         v-loading="formLoading"
         :model="formData"
         :rules="formRules"
-        label-width="100px"
+        label-width="150px"
       >
-        <el-form-item label="申请单号" prop="requestNo">
-          <el-input v-model="formData.requestNo" placeholder="请输入申请单号" />
-        </el-form-item>
-        <el-form-item label="申请类型" prop="requestType">
-          <el-select
-            v-model="formData.requestType"
-            placeholder="请选择申请类型"
-          >
-            <el-option label="请选择字典生成" value="" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="业务类型" prop="businessType">
-          <el-select
-            v-model="formData.businessType"
-            placeholder="请选择业务类型"
-          >
-            <el-option label="请选择字典生成" value="" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="业务分类编码" prop="businessCategory">
-          <el-input
-            v-model="formData.businessCategory"
-            placeholder="请输入业务分类编码"
-          />
-        </el-form-item>
-        <el-form-item label="业务分类名称" prop="businessDescribe">
-          <el-input
-            v-model="formData.businessDescribe"
-            placeholder="请输入业务分类名称"
-          />
-        </el-form-item>
-        <el-form-item label="业务子类型" prop="businessSubType">
-          <el-select
-            v-model="formData.businessSubType"
-            placeholder="请选择业务子类型"
-          >
-            <el-option label="请选择字典生成" value="" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="状态" prop="status">
-          <el-select v-model="formData.status" placeholder="请选择状态">
-            <el-option label="请选择字典生成" value="" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="优先级" prop="priority">
-          <el-input v-model="formData.priority" placeholder="请输入优先级" />
-        </el-form-item>
-        <el-form-item label="供应商编码" prop="supplierCode">
-          <el-input
-            v-model="formData.supplierCode"
-            placeholder="请输入供应商编码"
-          />
-        </el-form-item>
-        <el-form-item label="客户编码" prop="customerCode">
-          <el-input
-            v-model="formData.customerCode"
-            placeholder="请输入客户编码"
-          />
-        </el-form-item>
-        <el-form-item label="源单编号" prop="sourceOrderNo">
-          <el-input
-            v-model="formData.sourceOrderNo"
-            placeholder="请输入源单编号"
-          />
-        </el-form-item>
-        <el-form-item label="预计出入库时间" prop="expectedTime">
-          <el-date-picker
-            v-model="formData.expectedTime"
-            clearable
-            type="date"
-            value-format="timestamp"
-            placeholder="选择预计出入库时间"
-          />
-        </el-form-item>
-        <el-form-item label="实际出入库时间" prop="actualTime">
-          <el-date-picker
-            v-model="formData.actualTime"
-            clearable
-            type="date"
-            value-format="timestamp"
-            placeholder="选择实际出入库时间"
-          />
-        </el-form-item>
-        <el-form-item label="总数量" prop="totalQty">
-          <el-input v-model="formData.totalQty" placeholder="请输入总数量" />
-        </el-form-item>
-        <el-form-item label="总SKU数" prop="totalSku">
-          <el-input v-model="formData.totalSku" placeholder="请输入总SKU数" />
-        </el-form-item>
-        <el-form-item label="总行数" prop="totalLine">
-          <el-input v-model="formData.totalLine" placeholder="请输入总行数" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="formData.remark" placeholder="请输入备注" />
-        </el-form-item>
-        <el-form-item label="提交人" prop="submitter">
-          <el-input v-model="formData.submitter" placeholder="请输入提交人" />
-        </el-form-item>
-        <el-form-item label="提交时间" prop="submitTime">
-          <el-date-picker
-            v-model="formData.submitTime"
-            clearable
-            type="date"
-            value-format="timestamp"
-            placeholder="选择提交时间"
-          />
-        </el-form-item>
-        <el-form-item label="审核人" prop="auditor">
-          <el-input v-model="formData.auditor" placeholder="请输入审核人" />
-        </el-form-item>
-        <el-form-item label="审核时间" prop="auditTime">
-          <el-date-picker
-            v-model="formData.auditTime"
-            clearable
-            type="date"
-            value-format="timestamp"
-            placeholder="选择审核时间"
-          />
-        </el-form-item>
+        <el-col :span="12"
+          ><el-form-item label="业务类型" prop="businessType">
+            <el-select
+              v-model="formData.businessType"
+              @change="changeBusinessType"
+              placeholder="请选择业务类型"
+            >
+              <el-option
+                v-for="dict in getDictDatas('inout_business_type')"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select> </el-form-item
+        ></el-col>
+        <el-col :span="12"
+          ><el-form-item label="业务分类名称" prop="businessDescribe">
+            <el-select
+              v-model="formData.businessDescribe"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请选择业务类型"
+              @change="changeBusinessDescribe"
+            >
+              <el-option
+                v-for="dict in businessDescribeList"
+                :key="dict.label"
+                :label="dict.label"
+                :value="dict.label"
+              />
+            </el-select> </el-form-item
+        ></el-col>
+
+        <el-col :span="12"
+          ><el-form-item label="优先级" prop="priority">
+            <el-select
+              v-model="formData.priority"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请选择优先级"
+            >
+              <el-option
+                v-for="dict in getDictDatas('priority')"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="供应商编码" prop="supplierCode">
+            <el-input
+              v-model="formData.supplierCode"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请输入供应商编码"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="客户编码" prop="customerCode">
+            <el-input
+              v-model="formData.customerCode"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请输入客户编码"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="源单编号" prop="sourceOrderNo">
+            <el-select
+              v-model="formData.sourceOrderNo"
+              filterable
+              remote
+              :disabled="formData.businessType ? false : true"
+              reserve-keyword
+              placeholder="请输入源单编号"
+              :remote-method="remoteMethod"
+              :loading="loading"
+              @change="changeSourceOrderNo"
+            >
+              <el-option
+                v-for="item in sourceOrderNoList"
+                :key="item.sourceOrderNo"
+                :label="item.sourceOrderNo"
+                :value="item.sourceOrderNo"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计出入库时间" prop="expectedTime">
+            <el-date-picker
+              v-model="formData.expectedTime"
+              :disabled="formData.businessType ? false : true"
+              clearable
+              type="date"
+              value-format="timestamp"
+              placeholder="选择预计出入库时间"
+            /> </el-form-item
+        ></el-col>
+        <el-col :span="12">
+          <el-form-item label="实际出入库时间" prop="actualTime">
+            <el-date-picker
+              v-model="formData.actualTime"
+              clearable
+              :disabled="formData.businessType ? false : true"
+              type="date"
+              value-format="timestamp"
+              placeholder="选择实际出入库时间"
+            /> </el-form-item
+        ></el-col>
+
+        <el-col :span="12">
+          <el-form-item label="备注" prop="remark">
+            <el-input
+              v-model="formData.remark"
+              :disabled="formData.businessType ? false : true"
+              placeholder="请输入备注"
+            /> </el-form-item
+        ></el-col>
       </el-form>
+      <el-table :data="formData.list" border size="mini">
+        <el-table-column
+          label="源单编号"
+          align="center"
+          prop="sourceRequestId"
+          width="160"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="物料编码"
+          align="center"
+          prop="materialNo"
+          width="160"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="物料名称"
+          align="center"
+          prop="materialName"
+          width="150"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="客户编码"
+          align="center"
+          prop="customerCode"
+          width="150"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="客户名称"
+          align="center"
+          prop="customerName"
+          width="160"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="本次出货数量"
+          align="center"
+          prop="nowDeliveredQty"
+        >
+          <template slot-scope="scope">
+            <el-input
+              v-model="scope.row.nowDeliveredQty"
+              @change="deliverChange"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="已出货数量"
+          align="center"
+          prop="deliveredQty"
+          width="120"
+        />
+        <el-table-column
+          label="应出货数量"
+          align="center"
+          prop="shouldDeliveredQty"
+          width="120"
+        />
+        <el-table-column
+          label="申请数量"
+          align="center"
+          prop="requireQty"
+          width="120"
+        />
+        <el-table-column
+          label="单位"
+          align="center"
+          prop="unitName"
+          width="150"
+          show-overflow-tooltip
+        />
+        <el-table-column label="行备注" align="center" prop="remark">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.remark" />
+          </template>
+        </el-table-column>
+      </el-table>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" :disabled="formLoading" @click="submitForm"
           >确 定</el-button
@@ -147,11 +227,17 @@
 
 <script>
 import * as InRequestApi from "@/api/wms/output/inrequest";
+// import ShipmentNotification from "./ShipmentNotification.vue";
 export default {
   name: "InRequestForm",
-  components: {},
+  components: {
+    // ShipmentNotification,
+  },
   data() {
     return {
+      sourceOrderNoList: [],
+      businessDescribeList: [],
+      loading: false,
       // 弹出层标题
       dialogTitle: "",
       // 是否显示弹出层
@@ -188,6 +274,7 @@ export default {
         erpWriteFlag: undefined,
         erpErrMsg: undefined,
         erpBackId: undefined,
+        list: [],
       },
       // 表单校验
       formRules: {
@@ -235,6 +322,47 @@ export default {
     };
   },
   methods: {
+    remoteMethod(query) {
+      if (query !== "") {
+        let that = this;
+        this.loading = true;
+        setTimeout(async () => {
+          this.loading = false;
+          let { data } = await InRequestApi.getSourceOrder({
+            businessType: that.formData.businessType,
+            sourceOrderNo: query,
+          });
+          this.sourceOrderNoList = data || [];
+        }, 200);
+      } else {
+        this.sourceOrderNoList = [];
+      }
+    },
+    changeSourceOrderNo(value) {
+      this.sourceOrderNoList.map((v) => {
+        if (v.sourceOrderNo == value) {
+          this.formData.list = v.list;
+        }
+      });
+    },
+    changeBusinessDescribe(e) {
+      this.businessDescribeList.map((v) => {
+        if (v.label == e) {
+          this.formData.businessCategory = v.value;
+        }
+      });
+    },
+    async changeBusinessType(value) {
+      this.formData = {
+        id: this.formData.id,
+        businessType: this.formData.businessType,
+      };
+      this.formData = { ...this.formData };
+      let { data } = await InRequestApi.getDictByOrderType({
+        orderType: this.formData.businessType,
+      });
+      this.businessDescribeList = data;
+    },
     /** 打开弹窗 */
     async open(id) {
       this.dialogVisible = true;
@@ -244,13 +372,22 @@ export default {
         this.formLoading = true;
         try {
           const res = await InRequestApi.getInRequest(id);
+          res.data.businessType = res.data.businessType
+            ? res.data.businessType.toString()
+            : "0";
+          res.data.businessDescribe = res.data.businessDescribe
+            ? res.data.businessDescribe.toString()
+            : "";
+          res.data.priority = res.data.priority
+            ? res.data.priority.toString()
+            : "0";
           this.formData = res.data;
-          this.title = "修改入库申请主";
+          this.dialogTitle = "修改";
         } finally {
           this.formLoading = false;
         }
       }
-      this.title = "新增入库申请主";
+      this.dialogTitle = "新增";
     },
     /** 提交按钮 */
     async submitForm() {
@@ -258,8 +395,16 @@ export default {
       await this.$refs["formRef"].validate();
       this.formLoading = true;
       try {
+        // this.$refs.shipmentNotification.open = true;
         const data = this.formData;
-        // 修改的提交
+        let arr = [];
+        data.list.filter((v) => {
+          if (v.nowDeliveredQty) {
+            arr.push(v);
+          }
+        });
+        data.list = arr;
+        // 修改的提交;
         if (data.id) {
           await InRequestApi.updateInRequest(data);
           this.$modal.msgSuccess("修改成功");

+ 270 - 0
src/views/wms/output/inrequest/components/ShipmentNotification.vue

@@ -0,0 +1,270 @@
+<template>
+  <el-dialog
+    v-dialogDrag
+    title="送货通知单"
+    :visible.sync="open"
+    width="1200px"
+    append-to-body
+    @close="dialogClose"
+    @open="dialogOpen"
+  >
+    <!-- 搜索工作栏 -->
+    <!-- <el-form
+      v-show="showSearch"
+      ref="queryForm"
+      :model="queryParams"
+      size="small"
+      label-width="68px"
+    >
+      <SearchBar :show-more="false" :collapse-span="6">
+        <template #header>
+          <el-col :span="6">
+            <el-form-item label="出货日期" prop="deliveryTime">
+              <el-date-picker
+                v-model="queryParams.deliveryTime"
+                format="yyyy-MM-dd HH:mm:ss"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                type="datetime"
+                placeholder="请选择出货日期"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="备注" prop="remark" label-width="88px">
+              <el-input
+                v-model="queryParams.remark"
+                placeholder="请输入备注"
+                clearable
+                @keyup.enter.native="handleQuery"
+              />
+            </el-form-item>
+          </el-col>
+        </template>
+      </SearchBar>
+    </el-form> -->
+
+    <!-- 列表 -->
+    <el-table v-loading="loading" :data="list" border size="mini">
+      <el-table-column
+        label="物料编码"
+        align="center"
+        prop="materialNo"
+        width="160"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="物料名称"
+        align="center"
+        prop="materialName"
+        width="150"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="客户编码"
+        align="center"
+        prop="customerCode"
+        width="150"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="客户名称"
+        align="center"
+        prop="customerName"
+        width="160"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="本次出货数量"
+        align="center"
+        prop="nowDeliveredQty"
+      >
+        <template slot-scope="scope">
+          <el-input
+            v-model="scope.row.nowDeliveredQty"
+            @change="deliverChange"
+          />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="已出货数量"
+        align="center"
+        prop="deliveredQty"
+        width="120"
+      />
+      <el-table-column
+        label="应出货数量"
+        align="center"
+        prop="shouldDeliveredQty"
+        width="120"
+      />
+      <el-table-column
+        label="单位"
+        align="center"
+        prop="unitName"
+        width="150"
+        show-overflow-tooltip
+      />
+    </el-table>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="cancel">取消</el-button>
+      <el-button
+        v-hasPermi="['wms:sale-out-order-master:create']"
+        type="primary"
+        :loading="ensureLoading"
+        @click="submitForm"
+        >确定</el-button
+      >
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { createSaleOutOrderMaster } from "@/api/wms/orders/sale";
+
+export default {
+  name: "DeliveryConfimation",
+  props: {
+    currentRows: {
+      type: Array,
+      default: () => [],
+    },
+    model: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: false,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      ensureLoading: false,
+      // 总条数
+      total: 0,
+      // ERP采购订单明细列表
+      list: [],
+      // 弹出层标题
+      title: "",
+      tokens: "",
+      baseUrl: "",
+      reportId: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        remark: null,
+        noticeDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+    };
+  },
+  methods: {
+    /** 取消按钮 */
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    /** 表单重置 */
+    reset() {
+      this.form = {
+        id: undefined,
+        detailErpId: undefined,
+        inStockId: undefined,
+        erpInStockOrderId: undefined,
+        erpInStockOrderNo: undefined,
+        detailNumber: undefined,
+        materialNo: undefined,
+        materialName: undefined,
+        materialQty: undefined,
+        materialModels: undefined,
+        unitName: undefined,
+        shouldReceiveAmount: undefined,
+        receiveQty: undefined,
+        returnQty: undefined,
+        materialStatus: undefined,
+        supplierCode: undefined,
+        supplierName: undefined,
+        batch: undefined,
+        price: undefined,
+        taxPrice: undefined,
+        allAmount: undefined,
+        taxRate: undefined,
+        comment: undefined,
+        deliveryTime: undefined,
+        erpMark: undefined,
+      };
+      this.resetForm("form");
+    },
+    dialogClose() {
+      this.queryParams.remark = null;
+      this.queryParams.noticeDate = null;
+      this.$emit("notificationClose", this.queryParams.remark);
+    },
+    dialogOpen() {
+      console.log(this.model);
+      this.list = this.model.list;
+      // this.list = this.currentRows.map(item => {
+      //   item.nowDeliveredQty = item.shouldDeliveredQty - item.deliveredQty
+      //   return item
+      // })
+    },
+    // 创建送货通知单
+    submitForm() {
+      const { deliveryTime, remark } = this.queryParams;
+      if (
+        (deliveryTime === undefined || deliveryTime === null) &&
+        (remark === null || remark === undefined)
+      ) {
+        this.$modal.msgWarning("请选择出货日期和填写备注");
+        return;
+      }
+      const noticeList = this.currentRows.map((item) => {
+        const {
+          customerCode,
+          customerName,
+          nowDeliveredQty,
+          id: saleOrderDetailId,
+          materialName,
+          materialNo,
+        } = item;
+        return {
+          customerCode,
+          customerName,
+          nowDeliveredQty,
+          saleOrderDetailId,
+          materialName,
+          materialNo,
+        };
+      });
+      const params = {
+        deliveryTime: this.queryParams.deliveryTime,
+        remark: this.queryParams.remark,
+        list: noticeList,
+      };
+      this.ensureLoading = true;
+      createSaleOutOrderMaster(params)
+        .then((res) => {
+          this.$modal.msgSuccess("创建成功!");
+          this.open = false;
+          this.$emit("createComplete");
+        })
+        .finally(() => {
+          this.ensureLoading = false;
+        });
+    },
+    deliverChange(v) {
+      if (typeof v === "string") {
+        v = parseFloat(v);
+      }
+    },
+  },
+};
+</script>

+ 39 - 9
src/views/wms/output/inrequest/index.vue

@@ -9,7 +9,7 @@
       label-width="68px"
     >
       <QueryFormWrapper>
-        <el-col :span="8">
+        <!-- <el-col :span="8">
           <el-form-item label="申请单号" prop="requestNo">
             <el-input
               v-model="queryParams.requestNo"
@@ -30,7 +30,7 @@
               <el-option label="请选择字典生成" value="" />
             </el-select>
           </el-form-item>
-        </el-col>
+        </el-col> -->
         <el-col :span="8">
           <el-form-item label="业务类型" prop="businessType">
             <el-select
@@ -39,7 +39,12 @@
               clearable
               size="small"
             >
-              <el-option label="请选择字典生成" value="" />
+              <el-option
+                v-for="dict in getDictDatas('inout_business_type')"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
             </el-select>
           </el-form-item>
         </el-col>
@@ -301,8 +306,13 @@
       :stripe="true"
       :show-overflow-tooltip="true"
     >
-      <el-table-column label="申请单ID" align="center" prop="id" />
-      <el-table-column label="申请单号" align="center" prop="requestNo">
+      <el-table-column
+        label="申请单号"
+        width="180px"
+        align="center"
+        prop="requestNo"
+      />
+      <!-- <el-table-column label="申请单号" align="center" prop="requestNo">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -312,28 +322,41 @@
           >
         </template>
       </el-table-column>
-      <el-table-column label="申请类型" align="center" prop="requestType" />
+      <el-table-column label="申请类型" align="center" prop="requestType" /> -->
       <el-table-column label="业务类型" align="center" prop="businessType" />
       <el-table-column
         label="业务分类编码"
         align="center"
+        width="150px"
         prop="businessCategory"
       />
       <el-table-column
         label="业务分类名称"
         align="center"
+        width="150px"
         prop="businessDescribe"
       />
       <el-table-column
         label="业务子类型"
         align="center"
+        width="150px"
         prop="businessSubType"
       />
       <el-table-column label="状态" align="center" prop="status" />
       <el-table-column label="优先级" align="center" prop="priority" />
-      <el-table-column label="供应商编码" align="center" prop="supplierCode" />
+      <el-table-column
+        label="供应商编码"
+        width="150px"
+        align="center"
+        prop="supplierCode"
+      />
       <el-table-column label="客户编码" align="center" prop="customerCode" />
-      <el-table-column label="源单编号" align="center" prop="sourceOrderNo" />
+      <el-table-column
+        label="源单编号"
+        width="150px"
+        align="center"
+        prop="sourceOrderNo"
+      />
       <el-table-column
         label="预计出入库时间"
         align="center"
@@ -357,7 +380,12 @@
       <el-table-column label="总数量" align="center" prop="totalQty" />
       <el-table-column label="总SKU数" align="center" prop="totalSku" />
       <el-table-column label="总行数" align="center" prop="totalLine" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column
+        label="备注"
+        width="150px"
+        align="center"
+        prop="remark"
+      />
       <el-table-column
         label="创建时间"
         align="center"
@@ -393,6 +421,8 @@
       <el-table-column
         label="操作"
         align="center"
+        fixed="right"
+        width="150px"
         class-name="small-padding fixed-width"
       >
         <template v-slot="scope">

+ 182 - 140
yarn.lock

@@ -1840,21 +1840,28 @@
   "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz"
   "version" "2.2.1"
 
-"ansi-styles@^3.1.0", "ansi-styles@^3.2.0", "ansi-styles@^3.2.1":
+"ansi-styles@^3.1.0":
   "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
   "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
   "version" "3.2.1"
   dependencies:
     "color-convert" "^1.9.0"
 
-"ansi-styles@^4.0.0":
-  "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
-  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
-  "version" "4.3.0"
+"ansi-styles@^3.2.0":
+  "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
+  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
+  "version" "3.2.1"
   dependencies:
-    "color-convert" "^2.0.1"
+    "color-convert" "^1.9.0"
+
+"ansi-styles@^3.2.1":
+  "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
+  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
+  "version" "3.2.1"
+  dependencies:
+    "color-convert" "^1.9.0"
 
-"ansi-styles@^4.1.0":
+"ansi-styles@^4.0.0", "ansi-styles@^4.1.0":
   "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
   "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
   "version" "4.3.0"
@@ -2255,6 +2262,11 @@
   "resolved" "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz"
   "version" "5.2.2"
 
+"bignumber.js@^9.0.0":
+  "integrity" "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="
+  "resolved" "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.3.1.tgz"
+  "version" "9.3.1"
+
 "binary-extensions@^1.0.0":
   "integrity" "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
   "resolved" "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz"
@@ -2265,13 +2277,6 @@
   "resolved" "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz"
   "version" "2.2.0"
 
-"bindings@^1.5.0":
-  "integrity" "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="
-  "resolved" "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz"
-  "version" "1.5.0"
-  dependencies:
-    "file-uri-to-path" "1.0.0"
-
 "bluebird@^3.1.1", "bluebird@^3.5.0", "bluebird@^3.5.5":
   "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
   "resolved" "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz"
@@ -2551,7 +2556,28 @@
   "resolved" "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz"
   "version" "3.1.2"
 
-"cacache@^12.0.2", "cacache@^12.0.3":
+"cacache@^12.0.2":
+  "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ=="
+  "resolved" "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz"
+  "version" "12.0.4"
+  dependencies:
+    "bluebird" "^3.5.5"
+    "chownr" "^1.1.1"
+    "figgy-pudding" "^3.5.1"
+    "glob" "^7.1.4"
+    "graceful-fs" "^4.1.15"
+    "infer-owner" "^1.0.3"
+    "lru-cache" "^5.1.1"
+    "mississippi" "^3.0.0"
+    "mkdirp" "^0.5.1"
+    "move-concurrently" "^1.0.1"
+    "promise-inflight" "^1.0.1"
+    "rimraf" "^2.6.3"
+    "ssri" "^6.0.1"
+    "unique-filename" "^1.1.1"
+    "y18n" "^4.0.0"
+
+"cacache@^12.0.3":
   "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ=="
   "resolved" "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz"
   "version" "12.0.4"
@@ -2744,7 +2770,7 @@
     "strip-ansi" "^3.0.0"
     "supports-color" "^2.0.0"
 
-"chalk@^2.0.1":
+"chalk@^2.0.1", "chalk@^2.4.2":
   "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
   "resolved" "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz"
   "version" "2.4.2"
@@ -2771,15 +2797,6 @@
     "escape-string-regexp" "^1.0.5"
     "supports-color" "^5.3.0"
 
-"chalk@^2.4.2":
-  "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
-  "resolved" "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz"
-  "version" "2.4.2"
-  dependencies:
-    "ansi-styles" "^3.2.1"
-    "escape-string-regexp" "^1.0.5"
-    "supports-color" "^5.3.0"
-
 "chalk@^3.0.0":
   "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg=="
   "resolved" "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz"
@@ -2849,7 +2866,12 @@
   optionalDependencies:
     "fsevents" "~2.3.2"
 
-"chownr@^1.1.1", "chownr@^1.1.2":
+"chownr@^1.1.1":
+  "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+  "resolved" "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz"
+  "version" "1.1.4"
+
+"chownr@^1.1.2":
   "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
   "resolved" "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz"
   "version" "1.1.4"
@@ -3010,7 +3032,14 @@
     "map-visit" "^1.0.0"
     "object-visit" "^1.0.0"
 
-"color-convert@^1.9.0", "color-convert@^1.9.3":
+"color-convert@^1.9.0":
+  "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
+  "resolved" "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz"
+  "version" "1.9.3"
+  dependencies:
+    "color-name" "1.1.3"
+
+"color-convert@^1.9.3":
   "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
   "resolved" "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz"
   "version" "1.9.3"
@@ -3024,16 +3053,16 @@
   dependencies:
     "color-name" "~1.1.4"
 
-"color-name@^1.0.0", "color-name@1.1.3":
-  "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
-  "resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
-  "version" "1.1.3"
-
-"color-name@~1.1.4":
+"color-name@^1.0.0", "color-name@~1.1.4":
   "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
   "resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
   "version" "1.1.4"
 
+"color-name@1.1.3":
+  "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+  "resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
+  "version" "1.1.3"
+
 "color-string@^1.6.0":
   "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="
   "resolved" "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz"
@@ -3062,7 +3091,17 @@
   dependencies:
     "delayed-stream" "~1.0.0"
 
-"commander@^2.18.0", "commander@^2.19.0", "commander@^2.20.0":
+"commander@^2.18.0":
+  "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+  "resolved" "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
+  "version" "2.20.3"
+
+"commander@^2.19.0":
+  "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+  "resolved" "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
+  "version" "2.20.3"
+
+"commander@^2.20.0":
   "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
   "resolved" "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
   "version" "2.20.3"
@@ -3950,7 +3989,7 @@
   "resolved" "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz"
   "version" "1.0.8"
 
-"domutils@^1.5.1", "domutils@^1.7.0":
+"domutils@^1.5.1":
   "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg=="
   "resolved" "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
   "version" "1.7.0"
@@ -3958,16 +3997,15 @@
     "dom-serializer" "0"
     "domelementtype" "1"
 
-"domutils@^2.5.2":
-  "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="
-  "resolved" "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
-  "version" "2.8.0"
+"domutils@^1.7.0":
+  "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg=="
+  "resolved" "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
+  "version" "1.7.0"
   dependencies:
-    "dom-serializer" "^1.0.1"
-    "domelementtype" "^2.2.0"
-    "domhandler" "^4.2.0"
+    "dom-serializer" "0"
+    "domelementtype" "1"
 
-"domutils@^2.8.0":
+"domutils@^2.5.2", "domutils@^2.8.0":
   "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="
   "resolved" "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
   "version" "2.8.0"
@@ -4173,7 +4211,7 @@
   dependencies:
     "stackframe" "^1.3.4"
 
-"es-abstract@^1.17.2", "es-abstract@^1.22.1":
+"es-abstract@^1.22.1":
   "integrity" "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA=="
   "resolved" "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.3.tgz"
   "version" "1.22.3"
@@ -4923,19 +4961,6 @@
   "resolved" "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
   "version" "1.0.0"
 
-"fsevents@^1.2.7":
-  "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw=="
-  "resolved" "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz"
-  "version" "1.2.13"
-  dependencies:
-    "bindings" "^1.5.0"
-    "nan" "^2.12.1"
-
-"fsevents@~2.3.2":
-  "integrity" "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="
-  "resolved" "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz"
-  "version" "2.3.3"
-
 "function-bind@^1.1.2":
   "integrity" "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
   "resolved" "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz"
@@ -5043,7 +5068,14 @@
     "is-glob" "^3.1.0"
     "path-dirname" "^1.0.0"
 
-"glob-parent@^5.0.0", "glob-parent@~5.1.2":
+"glob-parent@^5.0.0":
+  "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
+  "resolved" "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
+  "version" "5.1.2"
+  dependencies:
+    "is-glob" "^4.0.1"
+
+"glob-parent@~5.1.2":
   "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
   "resolved" "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
   "version" "5.1.2"
@@ -5233,7 +5265,7 @@
   "resolved" "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz"
   "version" "1.0.1"
 
-"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3":
+"has-symbols@^1.0.2", "has-symbols@^1.0.3":
   "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
   "resolved" "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
   "version" "1.0.3"
@@ -5565,7 +5597,15 @@
     "caller-path" "^2.0.0"
     "resolve-from" "^3.0.0"
 
-"import-fresh@^3.0.0", "import-fresh@^3.2.1":
+"import-fresh@^3.0.0":
+  "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="
+  "resolved" "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
+  "version" "3.3.0"
+  dependencies:
+    "parent-module" "^1.0.0"
+    "resolve-from" "^4.0.0"
+
+"import-fresh@^3.2.1":
   "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="
   "resolved" "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
   "version" "3.3.0"
@@ -5811,15 +5851,7 @@
     "is-accessor-descriptor" "^1.0.1"
     "is-data-descriptor" "^1.0.1"
 
-"is-descriptor@^1.0.0":
-  "integrity" "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw=="
-  "resolved" "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.3.tgz"
-  "version" "1.0.3"
-  dependencies:
-    "is-accessor-descriptor" "^1.0.1"
-    "is-data-descriptor" "^1.0.1"
-
-"is-descriptor@^1.0.2":
+"is-descriptor@^1.0.0", "is-descriptor@^1.0.2":
   "integrity" "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw=="
   "resolved" "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.3.tgz"
   "version" "1.0.3"
@@ -5842,6 +5874,11 @@
   "resolved" "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz"
   "version" "0.1.1"
 
+"is-extendable@^0.1.1":
+  "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
+  "resolved" "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz"
+  "version" "0.1.1"
+
 "is-extendable@^1.0.1":
   "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA=="
   "resolved" "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz"
@@ -6038,7 +6075,7 @@
   dependencies:
     "is-docker" "^2.0.0"
 
-"isarray@^1.0.0", "isarray@~1.0.0", "isarray@1.0.0":
+"isarray@^1.0.0":
   "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
   "resolved" "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
   "version" "1.0.0"
@@ -6048,6 +6085,16 @@
   "resolved" "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz"
   "version" "2.0.5"
 
+"isarray@~1.0.0":
+  "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+  "resolved" "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
+  "version" "1.0.0"
+
+"isarray@1.0.0":
+  "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+  "resolved" "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
+  "version" "1.0.0"
+
 "isexe@^2.0.0":
   "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
   "resolved" "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz"
@@ -6163,6 +6210,13 @@
   "resolved" "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz"
   "version" "0.5.0"
 
+"json-bigint@^1.0.0":
+  "integrity" "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="
+  "resolved" "https://registry.npmmirror.com/json-bigint/-/json-bigint-1.0.0.tgz"
+  "version" "1.0.0"
+  dependencies:
+    "bignumber.js" "^9.0.0"
+
 "json-parse-better-errors@^1.0.1", "json-parse-better-errors@^1.0.2":
   "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
   "resolved" "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
@@ -6510,7 +6564,15 @@
   "resolved" "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz"
   "version" "1.1.4"
 
-"lru-cache@^4.1.2", "lru-cache@^4.1.5":
+"lru-cache@^4.1.2":
+  "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="
+  "resolved" "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
+  "version" "4.1.5"
+  dependencies:
+    "pseudomap" "^1.0.2"
+    "yallist" "^2.1.2"
+
+"lru-cache@^4.1.5":
   "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="
   "resolved" "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
   "version" "4.1.5"
@@ -6766,7 +6828,7 @@
   "resolved" "https://registry.npmmirror.com/min-dash/-/min-dash-3.8.1.tgz"
   "version" "3.8.1"
 
-"min-dash@^3.1.0", "min-dash@^3.5.2", "min-dash@^3.8.1":
+"min-dash@^3.1.0":
   "integrity" "sha512-evumdlmIlg9mbRVPbC4F5FuRhNmcMS5pvuBUbqb1G9v09Ro0ImPEgz5n3khir83lFok1inKqVDjnKEg3GpDxQg=="
   "resolved" "https://registry.npmmirror.com/min-dash/-/min-dash-3.8.1.tgz"
   "version" "3.8.1"
@@ -6776,11 +6838,21 @@
   "resolved" "https://registry.npmmirror.com/min-dash/-/min-dash-3.8.1.tgz"
   "version" "3.8.1"
 
+"min-dash@^3.5.2":
+  "integrity" "sha512-evumdlmIlg9mbRVPbC4F5FuRhNmcMS5pvuBUbqb1G9v09Ro0ImPEgz5n3khir83lFok1inKqVDjnKEg3GpDxQg=="
+  "resolved" "https://registry.npmmirror.com/min-dash/-/min-dash-3.8.1.tgz"
+  "version" "3.8.1"
+
 "min-dash@^3.7.0":
   "integrity" "sha512-evumdlmIlg9mbRVPbC4F5FuRhNmcMS5pvuBUbqb1G9v09Ro0ImPEgz5n3khir83lFok1inKqVDjnKEg3GpDxQg=="
   "resolved" "https://registry.npmmirror.com/min-dash/-/min-dash-3.8.1.tgz"
   "version" "3.8.1"
 
+"min-dash@^3.8.1":
+  "integrity" "sha512-evumdlmIlg9mbRVPbC4F5FuRhNmcMS5pvuBUbqb1G9v09Ro0ImPEgz5n3khir83lFok1inKqVDjnKEg3GpDxQg=="
+  "resolved" "https://registry.npmmirror.com/min-dash/-/min-dash-3.8.1.tgz"
+  "version" "3.8.1"
+
 "min-dash@4.0.0":
   "integrity" "sha512-piIvVJ/nxuA4+LpnYIzF6oCtRvdtDvQJteSC+H768H2UvPKFKIt5oiJnUVtr0ZdchneXTcvUZ91vIrvWVIN0AA=="
   "resolved" "https://registry.npmmirror.com/min-dash/-/min-dash-4.0.0.tgz"
@@ -6799,18 +6871,7 @@
     "component-query" "^0.0.3"
     "domify" "^1.3.1"
 
-"min-dom@^3.1.0":
-  "integrity" "sha512-v6YCmnDzxk4rRJntWTUiwggLupPw/8ZSRqUq0PDaBwVZEO/wYzCH4SKVBV+KkEvf3u0XaWHly5JEosPtqRATZA=="
-  "resolved" "https://registry.npmmirror.com/min-dom/-/min-dom-3.2.1.tgz"
-  "version" "3.2.1"
-  dependencies:
-    "component-event" "^0.1.4"
-    "domify" "^1.3.1"
-    "indexof" "0.0.1"
-    "matches-selector" "^1.2.0"
-    "min-dash" "^3.8.1"
-
-"min-dom@^3.1.3":
+"min-dom@^3.1.0", "min-dom@^3.1.3":
   "integrity" "sha512-v6YCmnDzxk4rRJntWTUiwggLupPw/8ZSRqUq0PDaBwVZEO/wYzCH4SKVBV+KkEvf3u0XaWHly5JEosPtqRATZA=="
   "resolved" "https://registry.npmmirror.com/min-dom/-/min-dom-3.2.1.tgz"
   "version" "3.2.1"
@@ -7022,11 +7083,6 @@
     "object-assign" "^4.0.1"
     "thenify-all" "^1.0.0"
 
-"nan@^2.12.1":
-  "integrity" "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w=="
-  "resolved" "https://registry.npmmirror.com/nan/-/nan-2.18.0.tgz"
-  "version" "2.18.0"
-
 "nanoid@^3.3.7":
   "integrity" "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
   "resolved" "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz"
@@ -7284,7 +7340,7 @@
     "define-properties" "^1.2.0"
     "es-abstract" "^1.22.1"
 
-"object.getownpropertydescriptors@^2.0.3", "object.getownpropertydescriptors@^2.1.0":
+"object.getownpropertydescriptors@^2.0.3":
   "integrity" "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g=="
   "resolved" "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz"
   "version" "2.1.7"
@@ -8675,7 +8731,14 @@
   "resolved" "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz"
   "version" "1.0.0"
 
-"rimraf@^2.5.4", "rimraf@^2.6.3", "rimraf@2.6.3":
+"rimraf@^2.5.4":
+  "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="
+  "resolved" "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz"
+  "version" "2.6.3"
+  dependencies:
+    "glob" "^7.1.3"
+
+"rimraf@^2.6.3":
   "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="
   "resolved" "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz"
   "version" "2.6.3"
@@ -8696,6 +8759,13 @@
   dependencies:
     "glob" "^7.1.3"
 
+"rimraf@2.6.3":
+  "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="
+  "resolved" "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz"
+  "version" "2.6.3"
+  dependencies:
+    "glob" "^7.1.3"
+
 "ripemd160@^2.0.0", "ripemd160@^2.0.1":
   "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA=="
   "resolved" "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz"
@@ -8809,12 +8879,7 @@
   dependencies:
     "chokidar" ">=3.0.0 <4.0.0"
 
-"sax@^1.2.4":
-  "integrity" "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
-  "resolved" "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz"
-  "version" "1.3.0"
-
-"sax@~1.2.4":
+"sax@^1.2.4", "sax@~1.2.4":
   "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
   "resolved" "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
   "version" "1.2.4"
@@ -9253,22 +9318,7 @@
   "resolved" "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz"
   "version" "0.5.7"
 
-"source-map@^0.6.0":
-  "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-  "resolved" "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
-  "version" "0.6.1"
-
-"source-map@^0.6.1":
-  "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-  "resolved" "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
-  "version" "0.6.1"
-
-"source-map@~0.6.0":
-  "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-  "resolved" "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
-  "version" "0.6.1"
-
-"source-map@~0.6.1":
+"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1":
   "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
   "resolved" "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
   "version" "0.6.1"
@@ -9540,21 +9590,21 @@
   dependencies:
     "ansi-regex" "^4.1.0"
 
-"strip-ansi@^5.1.0", "strip-ansi@^5.2.0":
+"strip-ansi@^5.1.0":
   "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="
   "resolved" "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz"
   "version" "5.2.0"
   dependencies:
     "ansi-regex" "^4.1.0"
 
-"strip-ansi@^6.0.0":
-  "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
-  "resolved" "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz"
-  "version" "6.0.1"
+"strip-ansi@^5.2.0":
+  "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="
+  "resolved" "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz"
+  "version" "5.2.0"
   dependencies:
-    "ansi-regex" "^5.0.1"
+    "ansi-regex" "^4.1.0"
 
-"strip-ansi@^6.0.1":
+"strip-ansi@^6.0.0", "strip-ansi@^6.0.1":
   "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
   "resolved" "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz"
   "version" "6.0.1"
@@ -9623,14 +9673,7 @@
   dependencies:
     "has-flag" "^3.0.0"
 
-"supports-color@^7.0.0":
-  "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
-  "resolved" "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
-  "version" "7.2.0"
-  dependencies:
-    "has-flag" "^4.0.0"
-
-"supports-color@^7.1.0":
+"supports-color@^7.0.0", "supports-color@^7.1.0":
   "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
   "resolved" "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
   "version" "7.2.0"
@@ -9786,7 +9829,16 @@
     "terser" "^5.3.4"
     "webpack-sources" "^1.4.3"
 
-"terser@^4.1.2", "terser@^4.6.12":
+"terser@^4.1.2":
+  "integrity" "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw=="
+  "resolved" "https://registry.npmmirror.com/terser/-/terser-4.8.1.tgz"
+  "version" "4.8.1"
+  dependencies:
+    "commander" "^2.20.0"
+    "source-map" "~0.6.1"
+    "source-map-support" "~0.5.12"
+
+"terser@^4.6.12":
   "integrity" "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw=="
   "resolved" "https://registry.npmmirror.com/terser/-/terser-4.8.1.tgz"
   "version" "4.8.1"
@@ -10293,17 +10345,7 @@
   "resolved" "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
   "version" "1.0.2"
 
-"util.promisify@~1.0.0":
-  "integrity" "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA=="
-  "resolved" "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz"
-  "version" "1.0.1"
-  dependencies:
-    "define-properties" "^1.1.3"
-    "es-abstract" "^1.17.2"
-    "has-symbols" "^1.0.1"
-    "object.getownpropertydescriptors" "^2.1.0"
-
-"util.promisify@1.0.0":
+"util.promisify@~1.0.0", "util.promisify@1.0.0":
   "integrity" "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA=="
   "resolved" "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz"
   "version" "1.0.0"