feat(工单物料领用): 添加炉号显示列并调整表单提交数据

移除炉号输入表单项,改为在表格中显示炉号列
调整表单提交数据,将炉号替换为批次号
This commit is contained in:
2026-02-11 14:55:57 +08:00
parent 3ad2d3accb
commit 470bf51114
2 changed files with 204 additions and 643 deletions

View File

@@ -126,568 +126,92 @@
</el-table>
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 入库单dialog -->
<el-dialog :title="title" :lock-scroll="false" v-model="openStorage">
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
<el-row :gutter="20">
<el-col :lg="12">
<el-form-item label="物料编码" prop="materialCode">
<el-select
value-key="id"
@change="handleMaterialChange"
v-model="form.materialCode"
filterable
placeholder="请选择"
:disabled="opertype == 3">
<el-option
v-for="(item, index) in options"
:key="item.id"
:label="`${item.type || ''} ${item.materialCode || ''} ${item.materialName || ''} [${item.supplierName || ''}]`"
:value="item">
<span style="float: left"
>{{ item.type || '' }} {{ item.materialCode || '' }} {{ item.materialName || '' }} [{{ item.supplierName || '' }}]</span
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<!-- 入库对话框 -->
<InventoryStorageDialog
v-model:dialogVisible="openStorage"
:title="title"
:form="form"
:rules="rules"
:opertype="opertype"
:options="options"
:transactionOptions="transactionOptions"
:locationOptions="locationOptions"
@submit="submitStorage"
@cancel="cancel"
@material-change="handleMaterialChange"
@location-change="handleLocationChange" />
<el-col :lg="12">
<el-form-item label="物料名称" prop="materialName">
<el-input :disabled="true" v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
</el-col>
<!-- 出库对话框 -->
<InventoryOutStorageDialog
v-model:dialogVisible="openOutStorage"
:title="title"
:form="form"
:rules="rulesOut"
:opertype="opertype"
:options="options"
:transactionOptions="transactionOptions"
:locationOptions="locationOptions"
@submit="submitOutStorage"
@cancel="cancel"
@material-change="handleMaterialChange"
@location-change="handleLocationChange" />
<el-col :lg="12">
<el-form-item label="标号" prop="type">
<el-input :disabled="true" v-model="form.type" placeholder="标号" />
</el-form-item>
</el-col>
<!-- 出货对话框 -->
<InventoryShipmentDialog
v-model:dialogVisible="openShipment"
:title="title"
:form="form"
:rules="rulesOut"
:opertype="opertype"
:options="options"
:transactionOptions="transactionOptions"
:locationOptions="locationOptions"
@submit="submitShipment"
@cancel="cancel"
@material-change="handleMaterialChange"
@location-change="handleLocationChange" />
<el-col :lg="12">
<el-form-item label="供应商名称" prop="supplierName">
<el-input :disabled="true" v-model="form.supplierName" placeholder="供应商名称" />
</el-form-item>
</el-col>
<!-- 更新对话框 -->
<InventoryUpdateDialog
v-model:dialogVisible="openUpdate"
:title="title"
:form="form"
:rules="rulesUpdate"
:opertype="opertype"
:options="options"
:locationOptions="locationOptions"
@submit="submitUpdateForm"
@cancel="cancel"
@material-change="handleMaterialChange"
@location-change="handleLocationChange" />
<el-col :lg="12">
<el-form-item label="库位编码" prop="locationCode">
<el-select value-key="locationCode" @change="handleLocationChange" v-model="form.locationCode" filterable placeholder="请选择">
<el-option v-for="item in locationOptions" :key="item.locationCode" :label="item.locationCode" :value="item">
<span style="float: left">{{ item.locationCode }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.locationName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<!-- 出入库记录对话框 -->
<InventoryRecordDialog
v-model:dialogVisible="openRecord"
:title="title"
:queryParams="queryParamsRecord"
:recordData="recordData"
:recordTotal="recordTotal"
:transactionOptions="transactionOptions"
:loading="loading"
@update:dialogVisible="(val) => (openRecord = val)"
@queryRecord="queryRecord"
@resetQuery="resetQueryRecord"
@sortChange="sortChange"
@handleCancel="handleCancel"
@handleRecordFlagChange="handleRecordFlagChange" />
<el-col :lg="12">
<el-form-item label="库位名称" prop="locationName">
<el-input :disabled="true" v-model="form.locationName" placeholder="请输入库位名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="仓库编码" prop="warehouseCode">
<el-input :disabled="true" v-model="form.warehouseCode" placeholder="请输入仓库编码" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="入库类型" prop="transactionType">
<el-select v-model="form.transactionType" filterable placeholder="请选择" :disabled="opertype == 3">
<el-option v-for="item in transactionOptions" :key="item.id" :label="item.typeCode" :value="item.typeName"> </el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="入库数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入入库数量" :disabled="opertype == 3" style="font-weight: bold" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="原材料批次号" prop="batchNo">
<el-input v-model="form.batchNo" placeholder="请输入原材料批次号" />
<!-- <el-select v-model="form.batchNo" filterable placeholder="请选择" :disabled="opertype == 3">
<el-option v-for="item in options.batchNoOptions" :key="item.id" :label="item.typeCode" :value="item.typeName"> </el-option>
</el-select> -->
</el-form-item>
</el-col>
<el-col :lg="12" v-if="form.transactionType !== '采购入库'">
<el-form-item label="制造工单号" prop="workorder">
<el-input v-model="form.workorder" placeholder="请输入制造工单号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="炉号" prop="stoveCode">
<el-input v-model="form.stoveCode" placeholder="请输入炉号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="操作员" prop="operator">
<el-select value-key="locationCode" @change="handleLocationChange" v-model="form.locationCode" filterable placeholder="请选择">
<el-option v-for="item in locationOptions" :key="item.locationCode" :label="item.locationCode" :value="item">
<span style="float: left">{{ item.locationCode }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.locationName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer v-if="opertype != 3">
<el-button text @click="cancel">{{ $t('btn.cancel') }}</el-button>
<el-button type="primary" @click="submitInboundForm">{{ $t('btn.submit') }}</el-button>
</template>
</el-dialog>
<!-- 出库单dialog -->
<el-dialog :title="title" :lock-scroll="false" v-model="openOutStorage">
<el-form ref="formRef" :model="form" :rules="rulesOut" label-width="120px">
<el-row :gutter="20">
<!-- <el-col :lg="12" v-if="opertype != 1">
<el-form-item label="主键ID" prop="id">
<el-input-number v-model.number="form.id" controls-position="right" placeholder="请输入主键ID" :disabled="true" />
</el-form-item>
</el-col> -->
<!-- <el-col :lg="12" v-if="opertype == 1">
<el-form-item label="出库单号" prop="outboundNo">
<el-input v-model="form.outboundNo" placeholder="请输入出库单号" :disabled="opertype == 3" />
</el-form-item>
</el-col> -->
<el-col :lg="12">
<el-form-item label="物料编码" prop="materialCode">
<el-select
value-key="id"
@change="handleMaterialChange"
v-model="form.materialCode"
filterable
placeholder="请选择"
:disabled="opertype == 2">
<el-option
v-for="(item, index) in options"
:key="item.id"
:label="`${item.type || ''} ${item.materialCode} ${item.materialName} [${item.supplierName || ''}]`"
:value="item">
<span style="float: left"
>{{ item.type || '' }} {{ item.materialCode }} {{ item.materialName }} [{{ item.supplierName || '' }}]</span
>
</el-option>
<!-- <el-option v-for="item in options" :key="item.materialCode" :label="item.materialCode" :value="item.materialCode"> </el-option> -->
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :lg="12">
<el-form-item label="物料分类编码" prop="categoryCode">
<el-input v-model="form.categoryCode" placeholder="请输入物料分类编码" />
</el-form-item>
</el-col> -->
<el-col :lg="12">
<el-form-item label="物料名称" prop="materialName">
<el-input :disabled="true" v-model="form.materialName" placeholder="物料名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="标号" prop="type">
<el-input :disabled="true" v-model="form.type" placeholder="标号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="供应商名称" prop="supplierName">
<el-input :disabled="true" v-model="form.supplierName" placeholder="供应商名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="库位编码" prop="locationCode">
<el-select value-key="locationCode" @change="handleLocationChange" v-model="form.locationCode" filterable placeholder="请选择">
<el-option v-for="item in locationOptions" :key="item.locationCode" :label="item.locationCode" :value="item">
<span style="float: left">{{ item.locationCode }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.locationName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="库位名称" prop="locationName">
<el-input :disabled="true" v-model="form.locationName" placeholder="库位名称" />
</el-form-item>
</el-col>
<el-col :lg="12" v-if="opertype == 1">
<el-form-item label="出库数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入出库数量" :disabled="opertype == 2" style="font-weight: bold" />
</el-form-item>
</el-col>
<el-col :lg="12" v-if="opertype == 2">
<el-form-item label="库存数量" prop="currentQty">
<el-input v-model="form.currentQty" :disabled="opertype == 2" />
</el-form-item>
</el-col>
<!-- <el-col :lg="12">
<el-form-item label="规格型号" prop="specificationModel">
<el-input v-model="form.specificationModel" placeholder="请输入规格型号" />
</el-form-item>
</el-col> -->
<el-col :lg="12" v-if="opertype == 1">
<el-form-item label="出库类型" prop="transactionType">
<el-select v-model="form.transactionType" filterable placeholder="请选择" :disabled="opertype == 2">
<el-option v-for="item in transactionOptions" :key="item.id" :label="item.typeCode" :value="item.typeName"> </el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="仓库编码" prop="warehouseCode">
<el-input :disabled="true" v-model="form.warehouseCode" placeholder="仓库编码" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="原材料批次号" prop="batchNo">
<!-- <el-select v-model="form.batchNo" filterable placeholder="请选择" :disabled="opertype == 3">
<el-option v-for="item in options.batchNoOptions" :key="item.id" :label="item.typeCode" :value="item.typeName"> </el-option>
</el-select> -->
<el-input v-model="form.batchNo" placeholder="请输入原材料批次号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="制造工单号" prop="workorder">
<el-input v-model="form.workorder" placeholder="请输入制造工单号" />
</el-form-item>
</el-col>
<!-- <el-col :lg="12">
<el-form-item label="制造工单号" prop="orderNo">
<el-input v-model="form.orderNo" placeholder="请输入制造工单号" />
</el-form-item>
</el-col> -->
<el-col :lg="12">
<el-form-item label="操作员" prop="operator">
<el-select value-key="locationCode" @change="handleLocationChange" v-model="form.locationCode" filterable placeholder="请选择">
<el-option v-for="item in locationOptions" :key="item.locationCode" :label="item.locationCode" :value="item">
<span style="float: left">{{ item.locationCode }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.locationName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :lg="12">
<el-form-item label="生产日期" prop="productionDate">
<el-date-picker v-model="form.productionDate" type="datetime" placeholder="选择日期时间" value-format="YYYY-MM-DD HH:mm:ss">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="有效期至" prop="expiryDate">
<el-date-picker v-model="form.expiryDate" type="datetime" placeholder="选择日期时间" value-format="YYYY-MM-DD HH:mm:ss">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="最后更新时间" prop="lastUpdatedTime">
<el-date-picker v-model="form.lastUpdatedTime" type="datetime" placeholder="选择日期时间" value-format="YYYY-MM-DD HH:mm:ss">
</el-date-picker>
</el-form-item>
</el-col> -->
<!-- <el-col :lg="12" v-if="opertype != 1">
<el-form-item label="创建时间" prop="createdTime">
<el-date-picker
v-model="form.createdTime"
type="datetime"
placeholder="选择日期时间"
value-format="YYYY-MM-DD HH:mm:ss"
:disabled="opertype == 3">
</el-date-picker>
</el-form-item>
</el-col> -->
</el-row>
</el-form>
<template #footer v-if="opertype != 3">
<el-button text @click="cancel">{{ $t('btn.cancel') }}</el-button>
<el-button type="primary" @click="submitOutboundForm">{{ $t('btn.submit') }}</el-button>
</template>
</el-dialog>
<!-- 用户导入对话框 -->
<el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
<el-upload
name="file"
ref="uploadRef"
:limit="1"
accept=".xlsx,.xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag>
<el-icon class="el-icon--upload">
<upload-filled />
</el-icon>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<template #tip>
<div class="el-upload__tip text-center">
<!-- <div class="el-upload__tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> -->
<span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">下载模板</el-link>
</div>
</template>
</el-upload>
<template #footer>
<el-button @click="upload.open = false">{{ $t('btn.cancel') }}</el-button>
<el-button type="primary" @click="submitFileForm">{{ $t('btn.submit') }}</el-button>
</template>
</el-dialog>
<!-- 修改弹窗 -->
<el-dialog :title="title" :lock-scroll="false" v-model="openUpdate">
<el-form ref="formRef" :model="form" :rules="rulesUpdate" label-width="100px">
<el-row :gutter="20">
<el-col :lg="12">
<el-form-item label="物料编码" prop="materialCode">
<el-select value-key="id" @change="handleMaterialChange" v-model="form.materialCode" filterable placeholder="请选择">
<el-option
v-for="(item, index) in options"
:key="`${item.materialCode}-${item.supplierCode || 'none'}`"
:label="`${item.type || ''} ${item.materialCode} ${item.materialName} [${item.supplierName || ''}]`"
:value="item">
<span style="float: left"
>{{ item.type || '' }} {{ item.materialCode }} {{ item.materialName }} [{{ item.supplierName || '' }}]</span
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="物料名称" prop="materialName">
<el-input :disabled="true" v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="标号" prop="type">
<el-input :disabled="true" v-model="form.type" placeholder="标号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="供应商名称" prop="supplierName">
<el-input :disabled="true" v-model="form.supplierName" placeholder="供应商名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="库位编码" prop="locationCode">
<el-select @change="handleLocationChange" v-model="form.locationCode" filterable placeholder="请选择">
<el-option v-for="item in locationOptions" :key="item.locationCode" :label="item.locationCode" :value="item">
<span style="float: left">{{ item.locationCode }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.locationName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="库位名称" prop="locationName">
<el-input :disabled="true" v-model="form.locationName" placeholder="请输入库位名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="仓库编码" prop="warehouseCode">
<el-input :disabled="true" v-model="form.warehouseCode" placeholder="请输入仓库编码" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="原材料批次号" prop="batchNo">
<el-input v-model="form.batchNo" placeholder="请输入原材料批次号" />
</el-form-item>
</el-col>
<!-- <el-col :lg="12">
<el-form-item label="炉号" prop="stoveCode">
<el-input v-model="form.stoveCode" placeholder="请输入炉号" />
</el-form-item>
</el-col> -->
<el-col :lg="12">
<el-form-item label="库存数量" prop="currentQty">
<el-input v-model="form.currentQty" placeholder="请输入库存数量" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="操作员" prop="operator">
<el-input v-model="form.operator" placeholder="请输入操作员" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button text @click="cancel">{{ $t('btn.cancel') }}</el-button>
<el-button type="primary" @click="submitUpdateForm">{{ $t('btn.submit') }}</el-button>
</template>
</el-dialog>
<!-- 进出库记录弹出框 -->
<el-dialog :title="title" v-model="openRecord" width="90%" top="5vh">
<el-form :model="queryParamsRecord" label-position="right" inline ref="queryRecordRef" @submit.prevent>
<el-form-item label="出入库" prop="searchType">
<el-select @change="handleRecordFlagChange" v-model="queryParamsRecord.recordFlag" filterable placeholder="请选择出入库">
<el-option label="入库" value="入库"> </el-option>
<el-option label="出库" value="出库"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="出入库类别" prop="transactionType">
<el-select v-model="queryParamsRecord.transactionType" filterable placeholder="请选择出入库类别">
<el-option label="全部" value=""> </el-option>
<el-option v-for="item in transactionOptions" :key="item.id" :label="item.typeCode" :value="item.typeName"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="创建日期" prop="createdTime">
<el-date-picker
v-model="queryParamsRecord.createdTime"
type="datetimerange"
:shortcuts="dateOptions"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
placeholder="请选择添加时间"
align="right">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon="search" type="primary" @click="queryRecord">{{ $t('btn.search') }}</el-button>
<el-button icon="refresh" @click="resetQueryRecord">{{ $t('btn.reset') }}</el-button>
</el-form-item>
</el-form>
<el-table
v-if="inoroutFlag == '出库'"
:data="recordData"
height="64vh"
v-loading="loading"
ref="table"
border
header-cell-class-name="el-table-header-cell"
highlight-current-row
@sort-change="sortChange"
:default-sort="{ prop: 'createdTime', order: 'descending' }">
<!-- <el-table-column prop="id" label="主键ID" align="center" v-if="columns.showColumn('id')" /> -->
<el-table-column prop="createdTime" sortable label="创建时间" align="center" v-if="columns.showColumn('createdTime')" />
<el-table-column prop="outboundNo" label="出库单号" align="center" />
<el-table-column prop="materialCode" label="物料编码" align="center" />
<el-table-column prop="materialName" label="物料名称" align="center" v-if="columns.showColumn('materialName')" />
<el-table-column prop="locationCode" label="库位编码" align="center" v-if="columns.showColumn('locationCode')" />
<el-table-column prop="locationName" label="库位名称" align="center" v-if="columns.showColumn('locationName')" />
<el-table-column prop="quantity" label="出库数量" align="center" v-if="columns.showColumn('quantity')">
<template #default="scope">
<span style="font-weight: bold">{{ scope.row.quantity }}</span>
</template>
</el-table-column>
<el-table-column prop="transactionType" label="出库类型" align="center" v-if="columns.showColumn('transactionType')" />
<el-table-column prop="unit" label="计量单位" align="center" v-if="columns.showColumn('unit')" />
<el-table-column prop="batchNo" label="原材料批次号" align="center" v-if="columns.showColumn('batchNo')" />
<!-- <el-table-column prop="orderNo" label="关联订单号" align="center" v-if="columns.showColumn('orderNo')" /> -->
<el-table-column prop="workorder" label="工单号" align="center" v-if="columns.showColumn('workorder')" />
<el-table-column prop="operator" label="操作员" align="center" v-if="columns.showColumn('operator')" />
<el-table-column prop="remarks" label="备注" align="center" v-if="columns.showColumn('remarks')" />
<el-table-column label="操作">
<template #default="scope">
<el-button
v-if="scope.row.remarks == '已撤销' || scope.row.transactionType == '出库红单'"
type="info"
size="small"
title="已撤销"
v-hasPermi="['mmrecordinbound:delete']"
disabled
>已撤销</el-button
>
<el-button v-else type="info" size="small" title="撤销" v-hasPermi="['mmrecordinbound:delete']" @click="handleCancel(scope.row)"
>撤销</el-button
>
</template>
</el-table-column>
</el-table>
<el-table
v-if="inoroutFlag == '入库'"
:data="recordData"
height="64vh"
v-loading="loading"
ref="table"
border
header-cell-class-name="el-table-header-cell"
highlight-current-row
@sort-change="sortChange"
:default-sort="{ prop: 'createdTime', order: 'descending' }">
<!-- <el-table-column prop="id" label="主键ID" align="center" v-if="columns.showColumn('id')" /> -->
<el-table-column prop="createdTime" sortable label="创建时间" align="center" v-if="columns.showColumn('createdTime')" />
<el-table-column prop="inboundNo" label="入库单号" align="left" v-if="columns.showColumn('inboundNo')" />
<el-table-column prop="materialCode" label="物料编码" align="left" v-if="columns.showColumn('materialCode')" />
<el-table-column prop="materialName" label="物料名称" align="left" v-if="columns.showColumn('materialName')" />
<el-table-column prop="stoveCode" label="炉号" align="center" />
<el-table-column prop="supplierCode" label="供应商编码" align="center" v-if="columns.showColumn('supplierCode')" />
<el-table-column prop="supplierName" label="供应商名称" align="center" v-if="columns.showColumn('supplierName')" />
<el-table-column prop="locationCode" label="库位编码" align="center" v-if="columns.showColumn('locationCode')" />
<el-table-column prop="locationName" label="库位名称" align="center" v-if="columns.showColumn('locationName')" />
<el-table-column prop="quantity" label="入库数量" align="center" v-if="columns.showColumn('quantity')">
<template #default="scope">
<span style="font-weight: bold">{{ scope.row.quantity }}</span>
</template>
</el-table-column>
<el-table-column prop="transactionType" label="入库类型" align="center" v-if="columns.showColumn('transactionType')" />
<el-table-column prop="batchNo" label="原材料批次号" align="center" v-if="columns.showColumn('batchNo')" />
<el-table-column prop="workorder" label="工单号" align="center" />
<el-table-column prop="operator" label="操作员" align="center" />
<el-table-column prop="remarks" label="备注" align="center" />
<el-table-column label="操作">
<template #default="scope">
<el-button
v-if="scope.row.remarks == '已撤销' || scope.row.transactionType == '入库红单'"
type="info"
size="small"
title="撤销"
v-hasPermi="['mmrecordinbound:delete']"
@click="handleCancel(scope.row)"
disabled
>已撤销</el-button
>
<el-button
v-else
type="info"
size="small"
icon="refresh-left"
title="撤销"
v-hasPermi="['mmrecordinbound:delete']"
@click="handleCancel(scope.row)"
>撤销</el-button
>
</template>
</el-table-column>
</el-table>
<pagination :total="recordTotal" v-model:page="queryParamsRecord.pageNum" v-model:limit="queryParamsRecord.pageSize" @pagination="queryRecord" />
</el-dialog>
<!-- 导入对话框 -->
<InventoryImportDialog
v-model:dialogVisible="upload.open"
:title="upload.title"
:upload="upload"
@update:dialogVisible="(val) => (upload.open = val)"
@cancel="cancel"
@submitFileForm="submitFileForm"
@importTemplate="importTemplate"
@handleFileSuccess="handleFileSuccess"
@handleFileUploadProgress="handleFileUploadProgress" />
</div>
</template>
@@ -695,8 +219,6 @@
import { ref, reactive, onMounted, getCurrentInstance, toRefs } from 'vue'
import {
listMmInventory,
addMmInventory,
delMmInventory,
updateMmInventory,
getMmInventory,
getMaterialOption,
@@ -707,7 +229,6 @@ import {
cancelMmInventory
} from '@/api/materialManagement/productionMaterial/mminventory.js'
import { listMmTransactionType } from '@/api/materialManagement/productionMaterial/mmtransactiontype.js'
import { warehouseOptions } from '@/utils/warehouse.js'
import useUserStore from '@/store/modules/user'
import { exportMmInventory } from '@/api/materialManagement/productionMaterial/mminventory.js'
import { getToken } from '@/utils/auth'
@@ -748,7 +269,6 @@ const columns = ref([
const total = ref(0)
const dataList = ref([])
const queryRef = ref()
const defaultTime = ref([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)])
/*** 用户导入参数 */
const upload = reactive({
@@ -766,8 +286,6 @@ const upload = reactive({
url: import.meta.env.VITE_APP_BASE_API + '/mes/productionMaterial/MmInventory/importData'
})
var dictParams = []
function getList() {
loading.value = true
try {
@@ -835,8 +353,6 @@ const openShipment = ref(false)
const openUpdate = ref(false)
const openRecord = ref(false)
const state = reactive({
single: true,
multiple: true,
form: {},
rules: {
materialCode: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
@@ -889,8 +405,7 @@ const state = reactive({
recordData: []
})
const { form, rules, rulesOut, rulesUpdate, options, transactionOptions, locationOptions, supplierOptions, single, multiple, inOrOut, recordData } =
toRefs(state)
const { form, rules, rulesOut, rulesUpdate, options, transactionOptions, locationOptions, supplierOptions, inOrOut, recordData } = toRefs(state)
// 关闭dialog
function cancel() {
@@ -929,42 +444,88 @@ function reset() {
// 填入库单操作
function handleStorage(data) {
reset()
openStorage.value = true
title.value = '填写入库单信息'
opertype.value = 1
inOrOut.value = '入库'
getTypeOfWarehousingList(inOrOut.value)
openStorage.value = true
// 如果有数据传递过来,填充表单
if (data) {
state.form = {
...data
...state.form,
materialCode: data.materialCode,
materialName: data.materialName,
supplierCode: data.supplierCode,
supplierName: data.supplierName,
warehouseCode: data.warehouseCode,
warehouseName: data.warehouseName,
locationCode: data.locationCode,
locationName: data.locationName,
batchNo: data.batchNo,
unit: data.unit
}
}
// 获取入库类型列表
getTypeOfWarehousingList('入库')
}
// 出库操作
function handleOutStorage(data) {
reset()
openOutStorage.value = true
title.value = '填写出库单信息'
opertype.value = 1
inOrOut.value = '出库'
getTypeOfWarehousingList(inOrOut.value)
openOutStorage.value = true
// 如果有数据传递过来,填充表单
if (data) {
state.form = {
...data
...state.form,
materialCode: data.materialCode,
materialName: data.materialName,
supplierCode: data.supplierCode,
supplierName: data.supplierName,
warehouseCode: data.warehouseCode,
warehouseName: data.warehouseName,
locationCode: data.locationCode,
locationName: data.locationName,
batchNo: data.batchNo,
currentQty: data.currentQty,
unit: data.unit
}
}
// 获取出库类型列表
getTypeOfWarehousingList('出库')
}
// 出货操作
function handleShipment(data) {
reset()
openShipment.value = true
title.value = '填写出货单信息'
opertype.value = 1
inOrOut.value = '出库'
getTypeOfWarehousingList(inOrOut.value)
openShipment.value = true
// 如果有数据传递过来,填充表单
if (data) {
state.form = {
...data
...state.form,
materialCode: data.materialCode,
materialName: data.materialName,
supplierCode: data.supplierCode,
supplierName: data.supplierName,
warehouseCode: data.warehouseCode,
warehouseName: data.warehouseName,
locationCode: data.locationCode,
locationName: data.locationName,
batchNo: data.batchNo,
currentQty: data.currentQty,
unit: data.unit
}
state.form.transactionType = '出货出库'
}
// 获取出库类型列表(出货属于出库的一种)
getTypeOfWarehousingList('出库')
}
// 修改按钮操作
function handleUpdate(row) {
reset()
@@ -1052,42 +613,6 @@ function resetQueryRecord() {
queryRecord()
}
// 添加&修改 表单提交
function submitInboundForm(formData) {
try {
createInboundReceipt(formData || state.form).then((res) => {
const { code, msg } = res
if (code == 200) {
proxy.$modal.msgSuccess('入库成功')
openStorage.value = false
getList()
} else {
proxy.$modal.msgError(msg || '入库失败')
}
})
} catch (error) {
proxy.$modal.msgError(error.message || '入库失败')
}
}
function submitOutboundForm(formData) {
try {
createOutboundReceipt(formData || state.form).then((res) => {
const { code, msg } = res
if (code == 200) {
proxy.$modal.msgSuccess('出库成功')
openOutStorage.value = false
openShipment.value = false
getList()
} else {
proxy.$modal.msgError(msg || '出库失败')
}
})
} catch (error) {
proxy.$modal.msgError(error.message || '出库失败')
}
}
function submitUpdateForm(formData) {
try {
updateMmInventory(formData || state.form).then((res) => {
@@ -1105,25 +630,6 @@ function submitUpdateForm(formData) {
}
}
// 删除按钮操作
function handleDelete(row) {
const Ids = row.id || ids.value
proxy
.$confirm('是否确认删除参数编号为"' + Ids + '"的数据项?', '警告', {
confirmButtonText: proxy.$t('common.ok'),
cancelButtonText: proxy.$t('common.cancel'),
type: 'warning'
})
.then(function () {
return delMmInventory(Ids)
})
.then(() => {
getList()
proxy.$modal.msgSuccess('删除成功')
})
}
// 物料编码列表
function getMaterialCodeList() {
try {
@@ -1178,6 +684,60 @@ function handleMaterialChange(val) {
state.form.supplierName = val.supplierName || ''
}
// 入库提交操作
function submitStorage(formData) {
try {
createInboundReceipt(formData).then((res) => {
const { code, msg } = res
if (code == 200) {
proxy.$modal.msgSuccess('入库成功')
openStorage.value = false
getList()
} else {
proxy.$modal.msgError(msg || '入库失败')
}
})
} catch (error) {
proxy.$modal.msgError(error.message || '入库失败')
}
}
// 出库提交操作
function submitOutStorage(formData) {
try {
createOutboundReceipt(formData).then((res) => {
const { code, msg } = res
if (code == 200) {
proxy.$modal.msgSuccess('出库成功')
openOutStorage.value = false
getList()
} else {
proxy.$modal.msgError(msg || '出库失败')
}
})
} catch (error) {
proxy.$modal.msgError(error.message || '出库失败')
}
}
// 出货提交操作
function submitShipment(formData) {
try {
createOutboundReceipt(formData).then((res) => {
const { code, msg } = res
if (code == 200) {
proxy.$modal.msgSuccess('出货成功')
openShipment.value = false
getList()
} else {
proxy.$modal.msgError(msg || '出货失败')
}
})
} catch (error) {
proxy.$modal.msgError(error.message || '出货失败')
}
}
// 库位编码选择器改变事件
function handleLocationChange(val) {
state.form.locationCode = val.locationCode
@@ -1200,7 +760,6 @@ const handleFileUploadProgress = (event, file, fileList) => {
upload.isUploading = true
}
/** 文件上传成功处理 */
/** 文件上传成功处理 */
const handleFileSuccess = (response, file, fileList) => {
const { code, msg, data } = response
upload.open = false

View File

@@ -25,6 +25,7 @@
<el-table-column prop="supplierCode" label="供应商编码" width="100" />
<el-table-column prop="supplierName" label="供应商名称" width="100" />
<el-table-column prop="batchNo" label="原材料批次号" width="120" />
<el-table-column prop="stoveCode" label="炉号" width="140" />
<el-table-column prop="workorderRaw" label="领料工单号" width="120" />
<el-table-column prop="quantity" label="领料数量" />
<el-table-column label="操作">
@@ -148,9 +149,9 @@
</el-select>
</el-form-item>
<el-form-item label="炉号" prop="stoveCode">
<!-- <el-form-item label="炉号" prop="stoveCode">
<el-input v-model="formData.stoveCode" placeholder="请输入炉号" />
</el-form-item>
</el-form-item> -->
</el-form>
<template #footer>
<el-button text @click="showPickForm = false">取消</el-button>
@@ -513,7 +514,8 @@ function submitForm() {
workorder: formData.workorder,
quantity: formData.pickQuantity,
materialInventoryId: formData.materialId,
stoveCode: formData.stoveCode,
feedOrder: formData.batchNo || '',
operator: formData.operator,
workorderRaw: formData.workorderRaw || ''
}