fix: 统一长度单位显示为米并优化CoilInfo组件

将多处长度单位从毫米(mm)改为米(m),保持单位统一
重构CoilInfo组件为动态字段配置模式,提升可维护性
移除未使用的CoilInfoRender组件引用
This commit is contained in:
2026-04-27 10:26:13 +08:00
parent 8c0126d7f8
commit dd4ca3d380
19 changed files with 98 additions and 78 deletions

View File

@@ -65,11 +65,11 @@
</div>
<div class="param-row" v-if="coil.length">
<span class="param-label">长度</span>
<span class="param-value">{{ coil.length }}</span>
<span class="param-value">{{ coil.length }}m</span>
</div>
<div class="param-row" v-if="coil.actualLength">
<span class="param-label">实测长度</span>
<span class="param-value">{{ coil.actualLength }}mm</span>
<span class="param-value">{{ coil.actualLength }}m</span>
</div>
<div class="param-row" v-if="coil.actualThickness">
<span class="param-label">实测厚度</span>

View File

@@ -32,11 +32,11 @@
</div>
<div class="info-item" v-if="length">
<span class="label">长度</span>
<span class="value">{{ length }}</span>
<span class="value">{{ length }}m</span>
</div>
<div class="info-item" v-if="actualLength">
<span class="label">实测长度</span>
<span class="value">{{ actualLength }}mm</span>
<span class="value">{{ actualLength }}m</span>
</div>
<div class="info-item" v-if="actualLength">
<span class="label">实测厚度</span>

View File

@@ -49,6 +49,7 @@ import MemoInput from '@/components/MemoInput/index.vue'
import MutiSelect from '@/components/MutiSelect/index.vue'
import CurrentCoilNo from '@/components/KLPService/Renderer/CurrentCoilNo.vue'
import DictSelect from '@/components/DictSelect'
import CoilInfo from '@/views/wms/coil/components/CoilInfo.vue'
// 初始化所有列
import { initAllColumns } from '@/views/wms/report/js/column.js'
@@ -86,6 +87,7 @@ Vue.component('MutiSelect', MutiSelect)
Vue.component('DictSelect', DictSelect)
Vue.component('CurrentCoilNo', CurrentCoilNo)
Vue.component('CoilInfoRender', CoilInfo)
Vue.use(vueFlvPlayer)
Vue.use(directive)

View File

@@ -34,7 +34,7 @@ export const APS_SHEET_TEMPLATES = [
{ label: '成品宽度', prop: 'productWidth', width: 100, align: 'right' },
{ label: '扎制厚度', prop: 'rollingThick', width: 100, align: 'right' },
{ label: '标丝厚度', prop: 'markCoatThick', width: 100, align: 'right' },
{ label: '吨钢长度区间m', prop: 'tonSteelLengthRange', minWidth: 130 },
{ label: '吨钢长度区间(m)', prop: 'tonSteelLengthRange', minWidth: 130 },
{ label: '数量', prop: 'planQty', width: 90, align: 'right' },
{ label: '重量', prop: 'planWeight', width: 100, align: 'right' },
{ label: '表面处理', prop: 'surfaceTreatment', width: 110 },

View File

@@ -126,8 +126,9 @@ export default {
{ label: '厂家', prop: 'itemManufacturer' },
{ label: '调制度', prop: 'temperGrade' },
{ label: '镀层种类', prop: 'coatingType' },
{ label: '实测长度(mm)', prop: 'actualLength' },
{ label: '实测长度(m)', prop: 'actualLength' },
{ label: '实测宽度(mm)', prop: 'actualWidth' },
{ label: '实测厚度(mm)', prop: 'actualThickness' },
],
title: '详细信息'
},

View File

@@ -29,7 +29,7 @@ export default {
{ label: '成品卷数', value: res.coilCount }, // coilCount=总卷数,结合“成品总重/原料总重”场景,推测为成品卷数
{ label: '平均出口厚度[mm]', value: res.avgExitThickness }, // avgExitThickness=平均出口厚度,厚度用“平均”更符合实际(单卷厚度均匀,无“总厚度”概念)
{ label: '原料总重[t]', value: res.totalEntryWeight }, // totalEntryWeight=总入口重量,入口重量即原料重量
{ label: '总出口长度[mm]', value: res.totalExitLength }, // totalExitLength=总出口长度,补充原“去锌总重”(无对应字段)的空缺,符合卷材加工的核心维度
{ label: '总出口长度[m]', value: res.totalExitLength }, // totalExitLength=总出口长度,补充原“去锌总重”(无对应字段)的空缺,符合卷材加工的核心维度
{ label: '平均出口宽度[mm]', value: res.avgExitWidth }, // avgExitWidth=平均出口宽度,宽度用“平均”更合理(单卷宽度固定,“总宽度”无业务意义)
{ label: '成品总重[t]', value: res.totalActualWeight }, // totalActualWeight=总实际重量,实际重量即成品最终重量
{ label: '总理论重量[t]', value: res.totalTheoryWeight }, // totalTheoryWeight=总理论重量工业场景中常用“理论重量vs实际重量”对比

View File

@@ -62,7 +62,7 @@ export default {
{ label: '成品卷数', value: res.coilCount }, // coilCount=总卷数,结合“成品总重/原料总重”场景,推测为成品卷数
{ label: '平均出口厚度[mm]', value: res.avgExitThickness }, // avgExitThickness=平均出口厚度,厚度用“平均”更符合实际(单卷厚度均匀,无“总厚度”概念)
{ label: '原料总重[t]', value: res.totalEntryWeight }, // totalEntryWeight=总入口重量,入口重量即原料重量
{ label: '总出口长度[mm]', value: res.totalExitLength }, // totalExitLength=总出口长度,补充原“去锌总重”(无对应字段)的空缺,符合卷材加工的核心维度
{ label: '总出口长度[m]', value: res.totalExitLength }, // totalExitLength=总出口长度,补充原“去锌总重”(无对应字段)的空缺,符合卷材加工的核心维度
{ label: '平均出口宽度[mm]', value: res.avgExitWidth }, // avgExitWidth=平均出口宽度,宽度用“平均”更合理(单卷宽度固定,“总宽度”无业务意义)
{ label: '成品总重[t]', value: res.totalActualWeight }, // totalActualWeight=总实际重量,实际重量即成品最终重量
{ label: '总理论重量[t]', value: res.totalTheoryWeight }, // totalTheoryWeight=总理论重量工业场景中常用“理论重量vs实际重量”对比

View File

@@ -11,7 +11,7 @@
<el-table-column prop="entryWeight" label="重量(t)" align="center"></el-table-column>
<el-table-column prop="entryThick" label="厚度(mm)" align="center"></el-table-column>
<el-table-column prop="entryWidth" label="宽度(mm)" align="center"></el-table-column>
<el-table-column prop="entryLength" label="长度(mm)" align="center"></el-table-column>
<el-table-column prop="entryLength" label="长度(m)" align="center"></el-table-column>
<el-table-column prop="entryOuterDiameter" label="外径(mm)" align="center"></el-table-column>
<el-table-column prop="spmElongation" label="延伸率(%)" align="center"></el-table-column>
<el-table-column prop="spmRollforce" label="SPM轧制力" align="center"></el-table-column>
@@ -49,7 +49,7 @@
<el-descriptions-item label="宽度(mm)">
{{ currentRow.entryWidth }}
</el-descriptions-item>
<el-descriptions-item label="长度(mm)">
<el-descriptions-item label="长度(m)">
{{ currentRow.entryLength }}
</el-descriptions-item>
<el-descriptions-item label="外径(mm)">
@@ -117,7 +117,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="长度(mm)" prop="entryLength">
<el-form-item label="长度(m)" prop="entryLength">
<el-input v-model="form.entryLength" placeholder="请输入入口长度" type="number" step="1" min="0"></el-input>
</el-form-item>
</el-col>

View File

@@ -242,7 +242,7 @@
{{ selectedPlan.entryWeight ? selectedPlan.entryWeight + ' t' : '-' }}
</el-descriptions-item>
<el-descriptions-item label="入口长度">
{{ selectedPlan.entryLength ? selectedPlan.entryLength + ' mm' : '-' }}
{{ selectedPlan.entryLength ? selectedPlan.entryLength + ' m' : '-' }}
</el-descriptions-item>
<el-descriptions-item label="订单号">{{ selectedPlan.orderNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="机组号">{{ selectedPlan.unitCode || '-' }}</el-descriptions-item>

View File

@@ -1,44 +1,22 @@
<template>
<el-descriptions
:column="column"
:border="true"
:border="border"
size="small"
>
<el-descriptions-item label="入场卷号">{{ coilInfo.enterCoilNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="当前卷号">{{ coilInfo.currentCoilNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="厂家原料号">{{ coilInfo.supplierCoilNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="逻辑库位">{{ coilInfo.warehouseName || '-' }}</el-descriptions-item>
<el-descriptions-item label="实际库区">{{ coilInfo.actualWarehouseName || '-' }}</el-descriptions-item>
<el-descriptions-item label="班组">{{ coilInfo.team || '-' }}</el-descriptions-item>
<el-descriptions-item label="材料类型">{{ coilInfo.materialType || '-' }}</el-descriptions-item>
<el-descriptions-item label="产品/原料">{{ coilInfo.itemName || '-' }}</el-descriptions-item>
<el-descriptions-item label="规格">{{ coilInfo.specification || '-' }}</el-descriptions-item>
<el-descriptions-item label="材质">{{ coilInfo.material || '-' }}</el-descriptions-item>
<el-descriptions-item label="厂家">{{ coilInfo.manufacturer || '-' }}</el-descriptions-item>
<el-descriptions-item label="镀层质量">{{ coilInfo.zincLayer || '-' }}</el-descriptions-item>
<el-descriptions-item label="表面处理">{{ coilInfo.surfaceTreatmentDesc || '-' }}</el-descriptions-item>
<el-descriptions-item label="质量状态">
<span :class="getStatusClass(coilInfo.qualityStatus)">{{ coilInfo.qualityStatus || '-' }}</span>
<template slot="extra">
<slot name="extra"></slot>
</template>
<el-descriptions-item
v-for="(item, index) in filteredFields"
:key="index"
:label="item.label"
:span="item.span || 1"
>
<template>
{{ item.value || '-' }}
</template>
</el-descriptions-item>
<el-descriptions-item label="切边要求">{{ coilInfo.trimmingRequirement || '-' }}</el-descriptions-item>
<el-descriptions-item label="原料材质">{{ coilInfo.packingStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="包装要求">{{ coilInfo.packagingRequirement || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测厚度[mm]">{{ coilInfo.actualThickness || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测宽度[mm]">{{ coilInfo.actualWidth || '-' }}</el-descriptions-item>
<el-descriptions-item label="长度[mm]">{{ coilInfo.length || '-' }}</el-descriptions-item>
<el-descriptions-item label="毛重[t]">{{ coilInfo.grossWeight || '-' }}</el-descriptions-item>
<el-descriptions-item label="净重[t]">{{ coilInfo.netWeight || '-' }}</el-descriptions-item>
<el-descriptions-item label="生产开始">{{ coilInfo.productionStartTime || '-' }}</el-descriptions-item>
<el-descriptions-item label="生产结束">{{ coilInfo.productionEndTime || '-' }}</el-descriptions-item>
<el-descriptions-item label="调制度">{{ coilInfo.temperGrade || '-' }}</el-descriptions-item>
<el-descriptions-item label="镀层种类">{{ coilInfo.coatingType || '-' }}</el-descriptions-item>
<el-descriptions-item label="表面处理">{{ coilInfo.coilSurfaceTreatment || '-' }}</el-descriptions-item>
<el-descriptions-item label="备注" :span="column - 2">{{ coilInfo.remark || '-' }}</el-descriptions-item>
</el-descriptions>
</template>
@@ -54,22 +32,62 @@ export default {
type: Number,
default: 5
},
// 只显示有值的字段
border: {
type: Boolean,
default: false
},
// 只显示有值的字段
showOnlyValue: {
type: Boolean,
default: false
}
},
methods: {
getStatusClass(status) {
if (!status) return ''
const statusLower = status.toLowerCase()
if (statusLower.includes('合格')) return 'status-success'
if (statusLower.includes('不合格')) return 'status-danger'
if (statusLower.includes('待检')) return 'status-warning'
return ''
computed: {
fields() {
return [
{ label: '入场卷号', key: 'enterCoilNo' },
{ label: '当前卷号', key: 'currentCoilNo' },
{ label: '厂家原料号', key: 'supplierCoilNo' },
{ label: '逻辑库位', key: 'warehouseName' },
{ label: '实际库区', key: 'actualWarehouseName' },
{ label: '班组', key: 'team' },
{ label: '材料类型', key: 'materialType' },
{ label: '物料名', key: 'itemName' },
{ label: '规格', key: 'specification' },
{ label: '材质', key: 'material' },
{ label: '厂家', key: 'manufacturer' },
{ label: '镀层质量', key: 'zincLayer' },
{ label: '表面处理', key: 'surfaceTreatmentDesc' },
{ label: '质量状态', key: 'qualityStatus' },
{ label: '切边要求', key: 'trimmingRequirement' },
{ label: '原料材质', key: 'packingStatus' },
{ label: '包装要求', key: 'packagingRequirement' },
{ label: '实测厚度[mm]', key: 'actualThickness' },
{ label: '实测宽度[mm]', key: 'actualWidth' },
{ label: '长度[m]', key: 'length' },
{ label: '毛重[t]', key: 'grossWeight' },
{ label: '净重[t]', key: 'netWeight' },
{ label: '生产开始', key: 'productionStartTime' },
{ label: '生产结束', key: 'productionEndTime' },
{ label: '调制度', key: 'temperGrade' },
{ label: '镀层种类', key: 'coatingType' },
{ label: '钢卷表面处理', key: 'coilSurfaceTreatment' },
{ label: '备注', key: 'remark', span: this.column > 2 ? this.column - 2 : 1 }
]
},
filteredFields() {
let fields = this.fields.map(item => ({
...item,
value: this.coilInfo[item.key]
}))
if (this.showOnlyValue) {
fields = fields.filter(item => item.value !== undefined && item.value !== null && item.value !== '')
}
return fields
}
}
},
}
</script>

View File

@@ -340,10 +340,10 @@
<el-form-item label="净重" prop="netWeight">
<el-input v-model="form.netWeight" placeholder="请输入净重" />
</el-form-item>
<el-form-item label="长度(mm)" prop="length">
<el-form-item label="长度(m)" prop="length">
<el-input v-model="form.length" placeholder="请输入长度" />
</el-form-item>
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-form-item label="实测长度(m)" prop="actualLength">
<el-input-number :controls="false" v-model="form.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" />
</el-form-item>
@@ -493,7 +493,7 @@ export default {
{ label: '厂家', prop: 'manufacturer' },
{ label: '调制度', prop: 'temperGrade' },
{ label: '镀层种类', prop: 'coatingType' },
{ label: '实测长度(mm)', prop: 'actualLength' },
{ label: '实测长度(m)', prop: 'actualLength' },
{ label: '实测宽度(mm)', prop: 'actualWidth' },
{ label: '实测厚度(mm)', prop: 'actualThickness' },
{ label: '钢卷表面处理', prop: 'coilSurfaceTreatment' },

View File

@@ -194,7 +194,7 @@
</div>
<div class="param-row" v-if="item.length">
<span class="param-label">长度</span>
<span class="param-value">{{ item.length }}mm</span>
<span class="param-value">{{ item.length }}m</span>
</div>
<div class="param-row" v-if="item.temperGrade">
<span class="param-label">调制度</span>

View File

@@ -740,7 +740,6 @@ import { listTransferOrderItem } from '@/api/wms/transferOrderItem'
// 查询技术部改判调拨的记录
import { listCoilQualityRejudge } from '@/api/wms/coilQualityRejudge'
import CoilInfoRender from '@/views/wms/coil/components/CoilInfo.vue';
import AbnormalTable from '@/views/wms/coil/components/AbnormalTable.vue';
import FileList from "@/components/FileList";
@@ -748,7 +747,6 @@ import FileList from "@/components/FileList";
export default {
name: 'CoilInfo',
components: {
CoilInfoRender,
AbnormalTable,
FileList
},

View File

@@ -187,10 +187,10 @@
<template slot="append"></template>
</el-input-number>
</el-form-item>
<el-form-item label="实测长度(mm)" prop="actualLength" class="form-item-half">
<el-form-item label="实测长度(m)" prop="actualLength" class="form-item-half">
<el-input-number :controls="false" v-model="targetCoil.actualLength" placeholder="请输入实测长度"
type="number" :step="0.01" :disabled="readonly">
<template slot="append">mm</template>
<template slot="append">m</template>
</el-input-number>
</el-form-item>
<el-form-item label="实测厚度(mm)" prop="actualThickness" class="form-item-half">

View File

@@ -191,6 +191,7 @@
</template>
</el-table-column>
<el-table-column v-if="hasTransferType" label="实际库区" align="center" prop="actualWarehouseName" />
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
<el-table-column v-if="hasTransferType" label="调拨类型" align="center" prop="transferType" />
@@ -433,7 +434,7 @@
<el-form-item label="长度" prop="length" v-if="showLength">
<el-input v-model="form.length" placeholder="请输入长度" />
</el-form-item>
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-form-item label="实测长度(m)" prop="actualLength">
<el-input-number :controls="false" v-model="form.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" />
</el-form-item>
@@ -565,8 +566,8 @@
mm</el-descriptions-item>
<el-descriptions-item label="实测宽度(mm)">{{ judgeForm.actualWidth || '-' }}
mm</el-descriptions-item>
<el-descriptions-item label="长度(mm)">{{ judgeForm.length || '-' }}
mm</el-descriptions-item>
<el-descriptions-item label="长度(m)">{{ judgeForm.length || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="毛重">{{ judgeForm.grossWeight || '-' }} t</el-descriptions-item>
<el-descriptions-item label="净重">{{ judgeForm.netWeight || '-' }} t</el-descriptions-item>

View File

@@ -411,7 +411,7 @@ export default {
{ label: '厂家', prop: 'manufacturer' },
{ label: '调制度', prop: 'temperGrade' },
{ label: '镀层种类', prop: 'coatingType' },
{ label: '实测长度(mm)', prop: 'actualLength' },
{ label: '实测长度(m)', prop: 'actualLength' },
{ label: '实测宽度(mm)', prop: 'actualWidth' },
{ label: '实测厚度(mm)', prop: 'actualThickness' },
{ label: '钢卷表面处理', prop: 'coilSurfaceTreatment' },

View File

@@ -38,7 +38,7 @@
<el-descriptions-item label="材质">{{ coilInfo.material || '-' }}</el-descriptions-item>
<el-descriptions-item label="厂家">{{ coilInfo.manufacturer || '-' }}</el-descriptions-item>
<el-descriptions-item label="原料材质">{{ coilInfo.packingStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测长度(mm)">{{ coilInfo.actualLength || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测长度(m)">{{ coilInfo.actualLength || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测宽度(mm)">{{ coilInfo.actualWidth || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测厚度(mm)">{{ coilInfo.actualThickness || '-' }}</el-descriptions-item>
<el-descriptions-item label="钢卷表面处理">{{ coilInfo.coilSurfaceTreatment || '-' }}</el-descriptions-item>
@@ -166,7 +166,7 @@
<el-form-item label="长度" prop="length">
<el-input v-model="splitForm.length" placeholder="请输入长度" type="number" />
</el-form-item>
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-form-item label="实测长度(m)" prop="actualLength">
<el-input-number :controls="false" v-model="splitForm.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" />
</el-form-item>
@@ -269,10 +269,10 @@
<el-descriptions-item label="原料材质">{{ selectedSplitItem.packingStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="包装要求">{{ selectedSplitItem.packagingRequirement || '-'
}}</el-descriptions-item>
<el-descriptions-item label="实测长度(mm)">{{ selectedSplitItem.actualLength || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测长度(m)">{{ selectedSplitItem.actualLength || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测厚度(mm)">{{ selectedSplitItem.actualThickness || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测宽度(mm)">{{ selectedSplitItem.actualWidth || '-' }}</el-descriptions-item>
<el-descriptions-item label="长度(mm)">{{ selectedSplitItem.length || '-' }}</el-descriptions-item>
<el-descriptions-item label="长度(m)">{{ selectedSplitItem.length || '-' }}</el-descriptions-item>
<el-descriptions-item label="毛重">{{ selectedSplitItem.grossWeight || '-' }} t</el-descriptions-item>
<el-descriptions-item label="净重">{{ selectedSplitItem.netWeight || '-' }} t</el-descriptions-item>

View File

@@ -197,10 +197,10 @@
<template slot="append"></template>
</el-input-number>
</el-form-item>
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-form-item label="实测长度(m)" prop="actualLength">
<el-input-number :controls="false" v-model="item.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" :disabled="readonly">
<template slot="append">mm</template>
<template slot="append">m</template>
</el-input-number>
</el-form-item>
<el-form-item label="实测厚度(mm)" prop="actualThickness" class="form-item-half">

View File

@@ -194,10 +194,10 @@
</el-input-number>
</el-form-item>
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-form-item label="实测长度(m)" prop="actualLength">
<el-input-number :controls="false" v-model="updateForm.actualLength" placeholder="请输入实测长度" type="number"
:step="0.001">
<template slot="append">mm</template>
<template slot="append">m</template>
</el-input-number>
</el-form-item>