Răsfoiți Sursa

入库申请(江南WMS专用)

yijing 1 an în urmă
părinte
comite
55ef87b90e

+ 41 - 1
src/api/warehouseManagement/index.js

@@ -500,5 +500,45 @@ export default {
       return res.data.data;
     }
     return Promise.reject(new Error(res.data.message));
-  }
+  },
+
+  //江南-仓库入库申请
+
+  //入库申请列表
+  getStoreList: async (data) => {
+    const res = await request.get(`/wms/applystoragejn/page`, {
+      params: data
+    });
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  },
+  //入库申请保存
+  saveStoragejn: async (data) => {
+    const res = await request.post('/wms/applystoragejn/save', data);
+    console.log(res);
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  },
+  //入库申请信息
+  getStoragejnDetails: async (id) => {
+    const res = await request.get(`/wms/applystoragejn/getById/${id}`);
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  },
+  //入库申请提交
+  submitStoragejn: async (data) => {
+    const res = await request.post('/wms/applystoragejn/submit', data);
+    console.log(res);
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  },
+
 };

+ 1 - 0
src/views/warehouseManagement/components/outboundRequisitionDialog.vue

@@ -147,6 +147,7 @@ export default {
         {
           prop: 'categoryNames',
           label: '名称',
+          showOverflowTooltip: true,
           align: 'center'
         },
         { label: '型号', prop: 'modelType', width: '150' },

+ 23 - 13
src/views/warehouseManagement/stockManagement/add.vue

@@ -11,7 +11,7 @@
         </div>
       </header-title>
       <el-form :model="formData" ref="formName" label-width="110px" :rules="rules">
-        <el-row :gutter="20">
+        <el-row :gutter="24">
           <el-col :span="6">
             <el-form-item label="物品类型" prop="extInfo.assetType">
               <el-select style="width: 100%" multiple v-model="formData.extInfo.assetType" placeholder="请选择">
@@ -30,7 +30,7 @@
             <el-form-item label="单据来源" prop="sourceBizNo">
               <el-input placeholder="请选择" v-model="formData.sourceBizNo" @focus="openDocumentSourceDialog">
                 <template #append>
-                  <el-button @click.stop="clearSourceBizNo" slot="append" icon="el-icon-circle-close"></el-button>
+                  <el-button @click="clearSourceBizNo" slot="append" icon="el-icon-circle-close"></el-button>
                 </template>
               </el-input>
             </el-form-item>
@@ -472,7 +472,7 @@
         </el-table>
       </div>
       <div class="storage_btn">
-        <el-button type="primary" :loading="saveLoading" @click="storage">入库</el-button>
+        <el-button type="primary" :loading="saveLoading" @click="handleStorage">入库</el-button>
       </div>
     </el-card>
     <!-- 产品选择弹框 -->
@@ -547,7 +547,7 @@ export default {
         'extInfo.assetType': {
           required: true,
           message: '请选择物品类型',
-          trigger: 'blur'
+          trigger: ['change', 'blur']
         },
         bizType: {
           required: true,
@@ -1177,7 +1177,8 @@ export default {
     },
     // 清除单据来源
     clearSourceBizNo() {
-      this.formData.sourceBizNo = '';
+      this.$set(this.formData, 'sourceBizNo', '');
+      this.productList = []
     },
     // 返回
     back() {
@@ -1185,13 +1186,22 @@ export default {
     },
     // 添加产品
     addProduct() {
-      if (this.formData.extInfo.assetType.length <= 0) {
-        return this.$message.error('请选择物品类型');
-      }
-      if (!this.formData.bizType) {
-        return this.$message.error('请选择入库类型');
-      }
-      this.visibleDialog = true;
+      this.$refs.formName.validate((valid) => {
+        if (valid) {
+          this.visibleDialog = true;
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+
+      // if (this.formData.extInfo.assetType.length <= 0) {
+      //   return this.$message.error('请选择物品类型');
+      // }
+      // if (!this.formData.bizType) {
+      //   return this.$message.error('请选择入库类型');
+      // }
+
     },
     // 键盘移动
     moveFocus(event, index, key, type, row) {
@@ -1468,7 +1478,7 @@ export default {
         });
     },
     // 入库
-    storage() {
+    handleStorage() {
       let boolen = this.productList.every((item) => item.isSave);
       if (!boolen) {
         this.$message.warning('请先保存所有产品信息');

+ 17 - 8
src/views/warehouseManagement/stockManagement/index.vue

@@ -7,32 +7,39 @@
             <el-form-item label="入库时间" prop="time">
               <el-date-picker class="w100" size="small" v-model="formData.time" type="daterange" range-separator="至"
                 start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"></el-date-picker>
-            </el-form-item></el-col>
+            </el-form-item>
+          </el-col>
           <el-col :span="6">
             <el-form-item label="入库单号" prop="sourceBizNo">
               <el-input size="small" class="w100" placeholder="请输入" v-model="formData.sourceBizNo"></el-input>
-            </el-form-item></el-col>
+            </el-form-item>
+          </el-col>
           <el-col :span="6">
             <el-form-item label="入库类型" prop="bizType">
               <el-select style="width: 100%" filterable placeholder="请选择" v-model="formData.bizType" clearable>
                 <el-option v-for="item in sceneState" :key="item.code" :value="item.code + ''"
                   :label="item.label"></el-option>
-              </el-select> </el-form-item></el-col>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="6">
             <el-form-item label="物品编码" prop="categoryCode">
               <el-input size="small" class="w100" placeholder="请输入" v-model="formData.categoryCode"></el-input>
-            </el-form-item></el-col>
+            </el-form-item>
+          </el-col>
           <el-col :span="6">
             <el-form-item label="物品名称" prop="categoryName">
               <el-input size="small" class="w100" placeholder="请输入" v-model="formData.categoryName"></el-input>
-            </el-form-item></el-col>
-
+            </el-form-item>
+          </el-col>
           <el-col :span="6">
             <el-form-item label="状态" prop="status">
               <el-select filterable size="small" class="w100" v-model="formData.status" placeholder="请选择" clearable>
                 <el-option v-for="item in auditStatus" :key="item.code" :value="item.code"
                   :label="item.label"></el-option>
-              </el-select> </el-form-item></el-col>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <!-- <el-col :span="6">
             <el-form-item label="组织机构:" prop="deptIds">
               <auth-selection
@@ -45,7 +52,9 @@
             <el-form-item label="所属工厂" prop="factoryId">
               <el-select filterable placeholder="请选择" v-model="formData.factoryId" clearable class="w100">
                 <el-option v-for="item in factoryList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-              </el-select> </el-form-item></el-col>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <!-- <el-col :lg="6" :sm="8" :xs="8">
           <el-form-item label="创建时间" prop="time">
             <el-date-picker

+ 386 - 0
src/views/warehouseManagement/warehouseApplication/components/edit.vue

@@ -0,0 +1,386 @@
+<template>
+    <ele-modal :title="title" :visible.sync="visible" :before-close="handleClose" :close-on-click-modal="false"
+        :close-on-press-escape="false" append-to-body width="75%" :maxable="true">
+        <el-card shadow="never">
+            <el-form ref="formName" :model="formData" label-width="80px" :rules="rules">
+                <el-row :gutter="15">
+                    <el-col :span="6">
+                        <el-form-item label="编码:" prop="code">
+                            <el-input v-model="formData.code" placeholder="请输入内容" disabled></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="类型:" prop="sourceType">
+                            <el-select style="width: 100%;" v-model="formData.sourceType" placeholder="请选择类型"
+                                :disabled="this.title == '详情'">
+                                <el-option label="余料退库" value="SurplusReturn"></el-option>
+                                <el-option label="不良退库" value="UnqualifiedReturn"></el-option>
+                                <el-option label="完工入库" value="Finish"></el-option>
+                                <el-option label="暂存入库" value="Temp"></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="备注" prop="remark">
+                            <el-input v-model="formData.remark" placeholder="请输入内容"
+                                :disabled="this.title == '详情'"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <div style="margin-top: 12px;">
+                <ele-pro-table ref="eleTable" row-key="outInDetailId" :columns="columns" :datasource="datasource"
+                    height="calc(100vh - 405px)" full-height="calc(100vh - 116px)" tool-class="ele-toolbar-form"
+                    :pageSize="20" @selection-change="handleSelectionChange" :initLoad="false" @done="onDone">
+                    <template v-slot:measureQuantity="{ row }">
+                        <el-input v-model="row.measureQuantity" placeholder="请输入"
+                            @input="value => inputNum(value, row)"></el-input>
+                    </template>
+                    <template v-slot:purpose="{ row }">
+                        <el-input v-model="row.purpose" placeholder="请输入"></el-input>
+                    </template>
+                    <template v-slot:certificateNumber="{ row, $index }">
+                        <div>
+                            <el-input v-model="row.certificateNumber" placeholder="请输入"
+                                @blur="validateCertificate(row, $index)"
+                                :class="{ 'is-error': row.certificateError }"></el-input>
+                            <div v-if="row.certificateError" class="el-form-item__error">
+                                {{ row.certificateError }}
+                            </div>
+                        </div>
+                    </template>
+                </ele-pro-table>
+            </div>
+        </el-card>
+        <div class="btns" v-if="this.title != '详情'">
+            <el-button type="primary" size="small" @click="handleSave">确认</el-button>
+            <el-button size="small" @click="handleClose">取消</el-button>
+        </div>
+    </ele-modal>
+</template>
+<script>
+import storageApi from '@/api/warehouseManagement';
+import { getCode } from '@/api/codeManagement/index.js';
+import { re } from 'mathjs';
+export default {
+    props: {
+    },
+    data() {
+        return {
+            visible: false,
+            title: '',
+            formData: {
+                code: '',
+                sourceType: '',
+                remark: ''
+            },
+            columns: [
+                {
+                    columnKey: 'selection',
+                    type: 'selection',
+                    width: 45,
+                    align: 'center',
+                },
+                {
+                    columnKey: 'index',
+                    type: 'index',
+                    width: 50,
+                    align: 'center',
+                    label: '序号',
+                    showOverflowTooltip: true,
+                    fixed: 'left'
+                },
+                {
+                    prop: 'batchNo',
+                    label: '批次号',
+                    align: 'center',
+                    width: 100,
+                },
+                {
+                    prop: 'categoryCode',
+                    label: '物品编码',
+                    align: 'center',
+                    showOverflowTooltip: true,
+                    width: 100,
+                },
+                {
+                    slot: 'categoryName',
+                    prop: 'categoryName',
+                    label: '物品名称',
+                    align: 'center',
+                    showOverflowTooltip: true,
+                    minWidth: 160
+                },
+                {
+                    prop: 'inventoryCycle',
+                    label: '存货周期(天)',
+                    align: 'center',
+                    width: 120,
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'brandNum',
+                    label: '牌号',
+                    align: 'center',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'categoryModel',
+                    label: '型号',
+                    align: 'center',
+                    width: 120,
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'specification',
+                    label: '规格',
+                    align: 'center',
+                    width: 120,
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'supplierName',
+                    label: '供应商',
+                    showOverflowTooltip: true,
+                    width: 130,
+                    align: 'center'
+                },
+                {
+                    prop: 'level',
+                    label: '级别',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'certificateNumber',
+                    slot: 'certificateNumber',
+                    label: '合格证号',
+                    showOverflowTooltip: true,
+                    width: 160,
+                },
+                {
+                    prop: 'originalMeasureQuantity',
+                    label: '库存数量',
+                    sortable: 'custom',
+                    showOverflowTooltip: true,
+                    width: 130,
+                    align: 'center'
+                },
+                {
+                    prop: 'measureQuantity',
+                    slot: 'measureQuantity',
+                    label: '计量数量',
+                    sortable: 'custom',
+                    showOverflowTooltip: true,
+                    width: 130,
+                    align: 'center'
+                },
+                {
+                    prop: 'measureUnit',
+                    label: '计量单位',
+                    align: 'center'
+                },
+                {
+                    prop: 'weight',
+                    label: '重量',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'weightUnit',
+                    label: '重量单位',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'purpose',
+                    slot: 'purpose',
+                    label: '用途',
+                    showOverflowTooltip: true,
+                    width: 130,
+                },
+            ],
+            rules: {
+                sourceType: [
+                    { required: true, message: '请选择申请类型', trigger: 'change' }
+                ],
+            },
+            loading: false,
+            selectionList: [],
+            ids: [],
+            detailJnVOList: []
+        }
+    },
+
+    methods: {
+        async datasource({ page, where, limit }) {
+            const res = await storageApi.getBatchList({ ...where, page, limit });
+
+            const data = res.list.map(
+                (item) => {
+                    item.originalMeasureQuantity = item.measureQuantity;
+                    item.certificateError = '';
+                    item.outInDetailId = item.id;
+                    delete item.id;
+
+                    return {
+                        ...item
+                    };
+                }
+            );
+            return data;
+        },
+        reload(where) {
+            this.$nextTick(() => {
+                if (this.$refs.eleTable && this.$refs.eleTable.reload)
+                    this.$refs.eleTable.reload({ page: 1, where: where });
+            })
+        },
+        onDone() {
+            this.$nextTick(() => {
+                this.$refs.eleTable.setSelectedRowKeys(this.ids);
+            });
+
+            if (this.detailJnVOList.length > 0) {
+                let list = this.$refs.eleTable.getData();
+
+                for (let i = 0; i < list.length; i++) {
+                    for (let j = 0; j < this.detailJnVOList.length; j++) {
+                        if (list[i].outInDetailId == this.detailJnVOList[j].outInDetailId) {
+
+                            this.$set(list[i], 'certificateNumber', this.detailJnVOList[j].certificateNumber)
+                            this.$set(list[i], 'measureQuantity', this.detailJnVOList[j].measureQuantity)
+                            this.$set(list[i], 'purpose', this.detailJnVOList[j].purpose)
+
+                        }
+                    }
+                }
+            }
+        },
+        resetData() {
+            this.formData = {
+                code: '',
+                sourceType: '',
+                remark: ''
+            };
+            this.detailJnVOList = []
+        },
+        validateCertificate(row, index) {
+            let list = this.$refs.eleTable.getData();
+            if (!row.certificateNumber || row.certificateNumber.trim() === '') {
+                this.$set(list[index], 'certificateError', '证书号不能为空');
+            } else {
+                this.$set(list[index], 'certificateError', '');
+            }
+        },
+        async open(type, row) {
+            this.resetData();
+            this.visible = true;
+            this.title = type == 'add' ? '新增' : type == 'detail' ? '详情' : '编辑';
+
+            if (type == 'add') {
+                const code = await getCode('Storage_application');
+                this.formData.code = code;
+            } else if (row?.id) {
+                await this.getDraftDetail(row.id);
+            }
+            await this.reload();
+        },
+        async getDraftDetail(id) {
+            const res = await storageApi.getStoragejnDetails(id);
+            if (res) {
+                this.$set(this, 'formData', res)
+
+                this.ids = res.detailJnVOList?.map((item) => item.outInDetailId) || [];
+                this.detailJnVOList = res.detailJnVOList || [];
+            }
+
+        },
+        inputNum(value, row) {
+            const num = value.replace(/[^\d.]/g, '');
+            const oldValue = row.originalMeasureQuantity;
+
+            if (num > oldValue) {
+                this.$set(row, 'measureQuantity', oldValue);
+            } else {
+                this.$set(row, 'measureQuantity', num);
+            }
+        },
+        handleSelectionChange(selection) {
+            console.log(selection, '勾选')
+            this.selectionList = selection;
+        },
+        handleClose() {
+            this.visible = false;
+            this.resetData()
+        },
+        handleSave() {
+            this.$refs.formName.validate(async (valid) => {
+                if (valid) {
+                    if (this.selectionList.length == 0) return this.$message.warning('请选择入库物品')
+
+                    let isValid = true;
+                    this.selectionList.forEach(item => {
+                        if (!item.certificateNumber?.trim()) {
+                            isValid = false;
+                            this.$set(item, 'certificateError', '证书号不能为空');
+                        }
+                    })
+                    if (!isValid) {
+                        this.$message.error('请填写所有必填项');
+                        return;
+                    }
+
+                    let postData = {
+                        type: 1,
+                        code: this.formData.code,
+                        sourceType: this.formData.sourceType,
+                        detailJnAddPOList: this.selectionList,
+                        id: this.title == '编辑' ? this.formData.id : null,
+
+                    }
+                    this.loading = true;
+                    storageApi
+                        .saveStoragejn(postData)
+                        .then(async (res) => {
+                            if (res == 0) {
+                                try {
+                                    this.$message.success('保存成功');
+                                    this.loading = false;
+                                    this.visible = false;
+                                    this.$emit('success')
+                                } catch (error) {
+                                    this.visible = false;
+                                    console.log('失败', error);
+                                }
+                            }
+                        })
+                        .catch((err) => {
+                            console.log('申请失败', err);
+                            this.loading = false;
+                            this.visible = false;
+                        });
+                } else {
+                    return false;
+                }
+            });
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.btns {
+    text-align: center;
+    padding: 10px 0;
+}
+
+.el-form-item__error {
+    color: red;
+    font-size: 12px;
+    line-height: 1;
+    padding-top: 4px;
+    position: relative;
+}
+
+.is-error .el-input__inner {
+    border-color: red;
+}
+</style>

+ 98 - 0
src/views/warehouseManagement/warehouseApplication/components/search.vue

@@ -0,0 +1,98 @@
+<!-- 搜索表单 -->
+6
+<template>
+  <el-form label-width="77px" class="ele-form-search" @keyup.enter.native="search" @submit.native.prevent>
+    <el-row :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 8 } : { span: 4 }">
+        <el-form-item label="申请时间:">
+          <el-date-picker style="width: 100%;" size="small" v-model="where.time" type="daterange" range-separator="至"
+            start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"></el-date-picker>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 8 } : { span: 4 }">
+        <el-form-item label="申请单号:">
+          <el-input clearable v-model="where.sourceBizNo" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 8 } : { span: 4 }">
+        <el-form-item label="申请类型:">
+          <el-select style="width: 100%" filterable placeholder="请选择" v-model="where.bizType" clearable>
+            <el-option v-for="item in sceneState" :key="item.code" :value="item.code + ''"
+              :label="item.label"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 8 } : { span: 4 }">
+        <el-form-item label="物品编码:">
+          <el-input clearable v-model="where.categoryCode" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 8 } : { span: 4 }">
+        <el-form-item label="物品名称:">
+          <el-input clearable v-model="where.categoryName" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 8 } : { span: 4 }">
+        <el-form-item label="状态:">
+          <el-select filterable size="small" class="w100" v-model="where.status" placeholder="请选择" clearable>
+            <el-option v-for="item in auditStatus" :key="item.code" :value="item.code" :label="item.label"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-col>
+      <el-col style="display: flex; justify-content: flex-end"
+        v-bind="styleResponsive ? { lg: 12, md: 6 } : { span: 12 }">
+        <div class="ele-form-actions">
+          <el-button type="primary" icon="el-icon-search" class="ele-btn-icon" @click="search">
+            查询
+          </el-button>
+          <el-button @click="reset">重置</el-button>
+        </div>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+import {
+  sceneState,
+  auditStatus
+} from '@/utils/dict/index';
+export default {
+  data() {
+    // 默认表单数据
+    const defaultWhere = {
+      categoryCode: '',
+      categoryName: '',
+      sourceBizNo: '',
+      startTime: '',
+      endTime: '',
+      status: '',
+      time: []
+    };
+    return {
+      defaultWhere,
+      // 表单数据
+      where: { ...defaultWhere },
+      sceneState,
+      auditStatus
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  methods: {
+    /* 搜索 */
+    search() {
+      this.$emit('search', this.where);
+    },
+    /*  重置 */
+    reset() {
+      this.where = { ...this.defaultWhere };
+      this.search();
+    }
+  }
+};
+</script>

+ 146 - 0
src/views/warehouseManagement/warehouseApplication/index.vue

@@ -0,0 +1,146 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never">
+      <search ref="search" @search="reload"></search>
+      <ele-pro-table ref="table" :columns="columns" :datasource="datasource" :pageSize="20"
+        :pageSizes="[20, 30, 40, 50, 100]">
+        <!-- 表头工具栏 -->
+        <template v-slot:toolbar>
+          <el-button icon="el-icon-plus" type="primary" @click="handleMethod('add', {})">新建</el-button>
+        </template>
+
+        <template v-slot:code="{ row }">
+          <el-link type="primary" :underline="false" @click="handleMethod('detail', row)">
+            {{ row.code }}
+          </el-link>
+        </template>
+
+
+        <!-- 操作列 -->
+        <template v-slot:action="{ row }">
+          <el-link type="primary" :underline="false" @click="handleMethod('edit', row)">
+            修改
+          </el-link>
+          <el-link type="primary" :underline="false" @click="handleSubmit(row)" v-if="row.status == 0">
+            提交
+          </el-link>
+        </template>
+      </ele-pro-table>
+    </el-card>
+    <edit ref="editRefs" @success="reload"></edit>
+  </div>
+</template>
+<script>
+import search from './components/search.vue';
+import storageApi from '@/api/warehouseManagement';
+
+import edit from './components/edit.vue';
+
+export default {
+  components: {
+    search,
+    edit
+  },
+  data() {
+    return {
+      columns: [
+        {
+          columnKey: 'index',
+          label: '序号',
+          type: 'index',
+          width: 55,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left'
+        },
+        {
+          prop: 'code',
+          slot: 'code',
+          label: '编码',
+          showOverflowTooltip: true,
+          align: 'center',
+          minWidth: 100
+        },
+        {
+          prop: 'categoryNames',
+          label: '名称',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        {
+          label: '类型',
+          prop: 'sourceType',
+          align: 'center',
+          formatter: (row) => {
+            return row.sourceType === 'SurplusReturn' ? '余料退库' : row.sourceType === 'UnqualifiedReturn' ? '不良退库' : row.sourceType === 'Finish' ? '完工入库' : row.sourceType === 'Temp' ? '暂存入库' : '';
+          }
+        },
+        {
+          label: '合格证号',
+          prop: 'certificateNumber',
+          align: 'center'
+        },
+        {
+          prop: 'createUserName',
+          label: '申请人',
+          align: 'center'
+        },
+        {
+          prop: 'createTime',
+          label: '创建时间',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          slot: 'status',
+          label: '状态',
+          align: 'center',
+          formatter: (row) => {
+            return row.status === 0 ? '草稿' : '已申请';
+          }
+        },
+        {
+          slot: 'action',
+          label: '操作',
+          align: 'center',
+          fixed: 'right',
+          width: 120,
+        }
+      ]
+    };
+  },
+  created() {
+  },
+  methods: {
+    datasource({ page, where, limit }) {
+      if (where.time?.length) {
+        where.startTime = where.time[0];
+        where.endTime = where.time[1];
+      }
+      delete where.time;
+      return storageApi.getStoreList({
+        ...where,
+        pageNum: page,
+        size: limit
+      });
+    },
+
+    reload(where) {
+      this.$refs.table.reload({ page: 1, where });
+    },
+    handleMethod(type, row) {
+      this.$refs.editRefs.open(type, row)
+    },
+    async handleSubmit(row) {
+      this.$confirm('确定要提交该条数据吗?', '提示').then(() => {
+        const res = storageApi.submitStoragejn({ id: row.id });
+        if (res) {
+          this.$message.success('删除成功!');
+          this.reload();
+        }
+      });
+    },
+  }
+};
+</script>