refactor(wms): 重构物料信息展示逻辑,移除冗余组件

重构物料信息展示逻辑,统一使用itemName等字段替代原有的product和rawMaterial嵌套结构
删除不再使用的BomInfo、CategoryRenderer等冗余组件
新增report模块配置集中管理
优化代码结构,提升可维护性
This commit is contained in:
砂糖
2026-03-24 13:55:10 +08:00
parent 9738a32d9d
commit ae68b40ee6
65 changed files with 363 additions and 3479 deletions

View File

@@ -79,8 +79,8 @@
<el-table-column label="物料类型" align="center" prop="materialType" />
<el-table-column label="产品类型" align="center" width="250">
<template slot-scope="scope">
<ProductInfo v-if="scope.row.itemType == 'product'" :product="scope.row.product" />
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row.rawMaterial" />
<ProductInfo v-if="scope.row.itemType == 'product'" :product="scope.row" />
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row" />
</template>
</el-table-column>
<el-table-column label="长度 (米)" align="center" prop="length" />

View File

@@ -32,8 +32,8 @@
</el-table-column>
<el-table-column label="产品类型" align="center" min-width="250">
<template slot-scope="scope">
<ProductInfo v-if="scope.row.itemType === 'product'" :product="scope.row.product" />
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row.rawMaterial" />
<ProductInfo v-if="scope.row.itemType === 'product'" :product="scope.row" />
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row" />
</template>
</el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime">

View File

@@ -106,8 +106,8 @@
<!-- <el-table-column label="物料类型" align="center" prop="materialType" /> -->
<el-table-column label="产品类型" align="center" width="250">
<template slot-scope="scope">
<ProductInfo v-if="scope.row.itemType == 'product'" :product="scope.row.product" />
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row.rawMaterial" />
<ProductInfo v-if="scope.row.itemType == 'product'" :product="scope.row" />
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row" />
</template>
</el-table-column>
<el-table-column v-if="showAbnormal" label="异常数量" align="center" prop="abnormalCount"></el-table-column>
@@ -1039,9 +1039,8 @@ export default {
/** 预览标签 */
handlePreviewLabel(row) {
this.labelRender.visible = true;
const item = row.itemType === 'product' ? row.product : row.rawMaterial;
const itemName = row.itemType === 'product' ? item?.productName || '' : item?.rawMaterialName || '';
const itemName = row.itemName || '';
this.labelRender.type = row.itemType === 'product' ? '3' : '2';
this.labelRender.data = {
...row,
@@ -1367,8 +1366,7 @@ export default {
const selectedData = this.materialCoilList
.filter(item => this.ids.includes(item.coilId))
.map(row => {
const item = row.itemType === 'product' ? row.product : row.rawMaterial;
const itemName = row.itemType === 'product' ? item?.productName || '' : item?.rawMaterialName || '';
const itemName = row.itemName || '';
return {
...row,

View File

@@ -43,66 +43,34 @@
<div class="header-left">
<current-coil-no :current-coil-no="item.currentCoilNo"></current-coil-no>
<!-- <span class="material-type">{{ item.materialType || '原料' }}</span> -->
<el-popover v-if="item.rawMaterial || item.product" placement="top" width="280" trigger="hover"
<el-popover placement="top" width="280" trigger="hover"
popper-class="material-params-popover">
<div class="material-params-content">
<div class="params-title">
{{ item.itemType === 'raw_material' ? (item.rawMaterial && item.rawMaterial.rawMaterialName ||
'—') : (item.product && item.product.productName || '—') }}
{{ item.itemName || '—' }}
</div>
<div class="params-list">
<div class="param-item" v-if="item.itemType === 'raw_material' && item.rawMaterial">
<div class="param-row" v-if="item.rawMaterial.rawMaterialCode">
<span class="param-label">编号</span>
<span class="param-value">{{ item.rawMaterial.rawMaterialCode }}</span>
</div>
<div class="param-row" v-if="item.rawMaterial.specification">
<div class="param-item">
<div class="param-row" v-if="item.specification">
<span class="param-label">规格</span>
<span class="param-value">{{ item.rawMaterial.specification }}</span>
<span class="param-value">{{ item.specification }}</span>
</div>
<div class="param-row" v-if="item.rawMaterial.material">
<div class="param-row" v-if="item.material">
<span class="param-label">材质</span>
<span class="param-value">{{ item.rawMaterial.material }}</span>
<span class="param-value">{{ item.material }}</span>
</div>
<div class="param-row" v-if="item.rawMaterial.surfaceTreatment">
<div class="param-row" v-if="item.surfaceTreatmentDesc">
<span class="param-label">表面处理</span>
<span class="param-value">{{ item.rawMaterial.surfaceTreatment }}</span>
<span class="param-value">{{ item.surfaceTreatmentDesc }}</span>
</div>
<div class="param-row" v-if="item.rawMaterial.zincLayer">
<div class="param-row" v-if="item.zincLayer">
<span class="param-label">镀层质量</span>
<span class="param-value">{{ item.rawMaterial.zincLayer }}</span>
<span class="param-value">{{ item.zincLayer }}</span>
</div>
<div class="param-row" v-if="item.rawMaterial.manufacturer">
<div class="param-row" v-if="item.manufacturer">
<span class="param-label">厂家</span>
<span class="param-value">{{ item.rawMaterial.manufacturer }}</span>
</div>
</div>
<div class="param-item" v-else-if="item.itemType === 'product' && item.product">
<div class="param-row" v-if="item.product.productCode">
<span class="param-label">编号</span>
<span class="param-value">{{ item.product.productCode }}</span>
</div>
<div class="param-row" v-if="item.product.specification">
<span class="param-label">规格</span>
<span class="param-value">{{ item.product.specification }}</span>
</div>
<div class="param-row" v-if="item.product.material">
<span class="param-label">材质</span>
<span class="param-value">{{ item.product.material }}</span>
</div>
<div class="param-row" v-if="item.product.surfaceTreatment">
<span class="param-label">表面处理</span>
<span class="param-value">{{ item.product.surfaceTreatment }}</span>
</div>
<div class="param-row" v-if="item.product.zincLayer">
<span class="param-label">镀层质量</span>
<span class="param-value">{{ item.product.zincLayer }}</span>
</div>
<div class="param-row" v-if="item.product.manufacturer">
<span class="param-label">厂家</span>
<span class="param-value">{{ item.product.manufacturer }}</span>
<span class="param-value">{{ item.manufacturer }}</span>
</div>
</div>
<div class="param-divider"></div>
@@ -738,8 +706,7 @@ export default {
/** 预览标签 */
handlePreviewLabel(row) {
this.labelRender.visible = true;
const item = row.itemType === 'product' ? row.product : row.rawMaterial;
const itemName = row.itemType === 'product' ? item?.productName || '' : item?.rawMaterialName || '';
const itemName = row.itemName;
this.labelRender.type = row.itemType === 'product' ? '3' : '2'
this.labelRender.data = {
@@ -953,10 +920,8 @@ export default {
},
/** 获取物品名称 */
getItemName(item) {
if (item.itemType === 'product' && item.product) {
return item.product.productName || ''
} else if (item.itemType === 'raw_material' && item.rawMaterial) {
return item.rawMaterial.rawMaterialName || ''
if (item.itemName) {
return item.itemName
}
return '—'
},