feat(wms): 新增钢卷状态管理和库位查询功能

refactor(warehouse): 将仓库相关术语统一修改为库位
style(warehouse): 优化库位管理界面表单布局
fix(warehouse): 修复树形组件数据展示问题

新增钢卷状态管理功能,支持在列表中直接修改状态
为钢卷管理添加库位查询条件,优化数据展示逻辑
统一将仓库相关术语修改为库位,保持系统一致性
移除部分无用代码和注释,优化界面布局
This commit is contained in:
砂糖
2025-10-31 15:07:03 +08:00
parent 6028f90246
commit 77f43fa334
8 changed files with 812 additions and 54 deletions

View File

@@ -9,11 +9,14 @@
<el-input v-model="queryParams.currentCoilNo" placeholder="请输入当前钢卷号" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="数据状态">
<!-- <el-form-item label="数据状态">
<el-select v-model="queryParams.dataType" placeholder="请选择数据状态" clearable>
<el-option :value="0" label="历史数据">历史数据</el-option>
<el-option :value="1" label="当前数据">当前数据</el-option>
</el-select>
</el-form-item> -->
<el-form-item label="所在库位" prop="warehouseId" v-if="!hideWarehouseQuery">
<warehouse-select v-model="queryParams.warehouseId" placeholder="请选择仓库/库区/库位" style="width: 100%; display: inline-block;" clearable />
</el-form-item>
<el-form-item label="厂家卷号" prop="supplierCoilNo">
<el-input v-model="queryParams.supplierCoilNo" placeholder="请输入厂家原料卷号" clearable
@@ -52,7 +55,7 @@
<el-table-column label="入场钢卷号" align="center" prop="enterCoilNo" />
<el-table-column label="当前钢卷号" align="center" prop="currentCoilNo" />
<el-table-column label="厂家卷号" align="center" prop="supplierCoilNo" />
<el-table-column label="仓库" align="center" prop="warehouseName" />
<el-table-column label="仓库" align="center" prop="warehouseName" v-if="!hideWarehouseQuery"/>
<el-table-column label="物料类型" align="center" prop="itemType">
<template slot-scope="scope">
{{ scope.row.itemType == 'product' ? '成品' : '原料' }}
@@ -72,27 +75,30 @@
</RawMaterialInfo>
</template>
</el-table-column>
<el-table-column label="数据类型" align="center" prop="dataType">
<!-- <el-table-column label="数据类型" align="center" prop="dataType">
<template slot-scope="scope">
{{ scope.row.dataType == 0 ? '历史数据' : '当前数据' }}
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="更新时间" align="center" prop="updateTime" />
<el-table-column label="二维码" v-if="qrcode">
<template slot-scope="scope">
<QRCode :content="scope.row.qrcodeRecordId" :size="50" />
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<el-select v-model="scope.row.status" placeholder="请选择状态" @change="handleStatusChange(scope.row)">
<el-option v-for="item in dict.type.product_coil_status" :key="item.value" :value="parseInt(item.value)" :label="item.label" />
</el-select>
</template>
</el-table-column>
<el-table-column label="班组" align="center" prop="team" />
<el-table-column label="毛重" align="center" prop="grossWeight" />
<el-table-column label="净重" align="center" prop="netWeight" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-download" @click="handleDownloadQRCode(scope.row)"
v-if="qrcode">
下载二维码
</el-button> -->
<el-button size="mini" type="text" icon="el-icon-view" @click="handlePreviewLabel(scope.row)">
导出标签
</el-button>
@@ -118,14 +124,14 @@
<el-form-item v-if="!form.coilId" label="厂家原料卷号" prop="supplierCoilNo">
<el-input v-model="form.supplierCoilNo" placeholder="请输入厂家原料卷号" />
</el-form-item>
<el-form-item label="所在库" prop="warehouseId">
<el-form-item label="所在库" prop="warehouseId">
<warehouse-select v-model="form.warehouseId" placeholder="请选择仓库/库区/库位" style="width: 100%;" clearable />
</el-form-item>
<el-form-item label="班组" prop="team">
<el-input v-model="form.team" placeholder="请输入班组" />
</el-form-item>
<el-form-item label="物料类型" prop="itemType">
<el-select v-model="form.itemType" placeholder="请选择库区" @change="form.itemId = undefined">
<el-select v-model="form.itemType" placeholder="请选择物料类型" @change="form.itemId = undefined">
<el-option label="成品" value="product" />
<el-option label="原料" value="raw_material" />
</el-select>
@@ -135,7 +141,7 @@
style="width: 100%;" clearable />
<raw-material-select v-else-if="form.itemType == 'raw_material'" v-model="form.itemId" placeholder="请选择原料ID"
style="width: 100%;" clearable />
<div v-else>请先选择产品类型</div>
<div v-else>请先选择物料类型</div>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
@@ -167,7 +173,7 @@
<script>
import { listMaterialCoil, getMaterialCoil, delMaterialCoil, addMaterialCoil, updateMaterialCoilSimple, getMaterialCoilTrace } from "@/api/wms/coil";
import WarehouseSelect from "@/components/WarehouseSelect";
import WarehouseSelect from "@/components/KLPService/WarehouseSelect";
import QRCode from "../../print/components/QRCode.vue";
import * as XLSX from 'xlsx'
import { saveAsImage } from '@/utils/klp';
@@ -196,6 +202,7 @@ export default {
CoilTraceResult,
LabelRender
},
dicts: ['product_coil_status'],
props: {
qrcode: {
type: Boolean,
@@ -208,6 +215,14 @@ export default {
labelType: {
type: String,
default: '2'
},
hideWarehouseQuery: {
type: Boolean,
default: false,
},
showStatus: {
type: Boolean,
default: false,
}
},
data() {
@@ -238,7 +253,6 @@ export default {
traceResult: null,
// 查询参数
queryParams: {
...this.querys,
pageNum: 1,
pageSize: 10,
enterCoilNo: undefined,
@@ -253,6 +267,7 @@ export default {
itemId: undefined,
status: undefined,
updateTime: undefined,
...this.querys,
},
// 表单参数
form: {},
@@ -297,6 +312,16 @@ export default {
this.loading = false;
});
},
/** 状态改变时触发 */
handleStatusChange(row) {
updateMaterialCoilSimple(row).then(res => {
this.$message.success('状态更新成功');
this.getList(); // 刷新列表
}).catch(err => {
console.error('状态更新失败:', err);
this.$message.error('状态更新失败,请重试');
});
},
/** 追溯按钮操作 */
handleTrace(row) {
this.traceOpen = true;