Compare commits

...

3 Commits

Author SHA1 Message Date
5729f2ee1a Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-04-25 15:28:50 +08:00
511d5b7385 fix: 统一钢卷尺寸单位显示为毫米(mm)
修改多个组件中钢卷尺寸的单位显示,将"米(m)"统一改为"毫米(mm)",包括实测长度、宽度和厚度的标签及数值显示。同时调整了酸轧工序的标签名称从"酸轧工序"改为"酸连轧工序"以保持一致性。

在表格、表单、描述组件等多个地方进行了单位统一修改,确保整个系统中钢卷尺寸单位显示一致。添加了钢卷状态的行样式显示功能,根据不同类型显示不同背景色。
2026-04-25 15:28:47 +08:00
133817883d feat(钢卷信息): 添加暂存功能及暂存数据恢复功能
实现钢卷信息编辑的暂存功能,包括:
1. 添加暂存按钮及暂存逻辑
2. 添加暂存数据检测及恢复弹窗
3. 实现暂存数据的展示、使用和删除功能
2026-04-25 11:09:14 +08:00
16 changed files with 941 additions and 504 deletions

View File

@@ -69,15 +69,15 @@
</div>
<div class="param-row" v-if="coil.actualLength">
<span class="param-label">实测长度</span>
<span class="param-value">{{ coil.actualLength }}</span>
<span class="param-value">{{ coil.actualLength }}mm</span>
</div>
<div class="param-row" v-if="coil.actualThickness">
<span class="param-label">实测厚度</span>
<span class="param-value">{{ coil.actualThickness }}</span>
<span class="param-value">{{ coil.actualThickness }}mm</span>
</div>
<div class="param-row" v-if="coil.actualWidth">
<span class="param-label">实测宽度</span>
<span class="param-value">{{ coil.actualWidth }}</span>
<span class="param-value">{{ coil.actualWidth }}mm</span>
</div>
<div class="param-row" v-if="coil.temperGrade">
<span class="param-label">调制度</span>

View File

@@ -36,15 +36,15 @@
</div>
<div class="info-item" v-if="actualLength">
<span class="label">实测长度</span>
<span class="value">{{ actualLength }}</span>
<span class="value">{{ actualLength }}mm</span>
</div>
<div class="info-item" v-if="actualLength">
<span class="label">实测厚度</span>
<span class="value">{{ actualThickness }}</span>
<span class="value">{{ actualThickness }}mm</span>
</div>
<div class="info-item" v-if="actualWidth">
<span class="label">实测宽度</span>
<span class="value">{{ actualWidth }}</span>
<span class="value">{{ actualWidth }}mm</span>
</div>
<div class="info-item">
<span class="label">厂家卷号</span>

View File

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

View File

@@ -29,7 +29,7 @@ export default {
{
title: '酸轧加工',
name: 'typing',
label: '酸轧工序',
label: '酸轧工序',
tabs: [
{value: '1988150044862377986', label: '酸连轧原料库'},
{value: '1988150099140866050', label: '酸连轧成品库'},

View File

@@ -32,9 +32,9 @@
<el-descriptions-item label="原料材质">{{ coilInfo.packingStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="包装要求">{{ coilInfo.packagingRequirement || '-'
}}</el-descriptions-item>
<el-descriptions-item label="实测厚度(m)">{{ coilInfo.actualThickness || '-' }}
<el-descriptions-item label="实测厚度(mm)">{{ coilInfo.actualThickness || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="实测宽度(m)">{{ coilInfo.actualWidth || '-' }}
<el-descriptions-item label="实测宽度(mm)">{{ coilInfo.actualWidth || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="长度">{{ coilInfo.length || '-' }}
m</el-descriptions-item>

View File

@@ -50,7 +50,12 @@
<i class="el-icon-box"></i>
<p>暂无待领物料</p>
</div> -->
<KLPTable :data="materialCoilList" height="calc(100vh - 340px)" :floatLayer="true" :floatLayerConfig="floatLayerConfig">
<KLPTable :data="materialCoilList" height="calc(100vh - 340px)" :floatLayer="true" :floatLayerConfig="floatLayerConfig" :row-style="getRowStyle">
<el-table-column prop="status" label="钢卷状态" width="100" show-overflow-tooltip>
<template slot-scope="scope">
<el-tag size="small" :style="getBorderStyle(scope.row)">{{ getTypeLabel(scope.row) }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="currentCoilNo" label="当前钢卷号">
<template slot-scope="scope">
<current-coil-no :current-coil-no="scope.row.currentCoilNo" />
@@ -256,15 +261,15 @@
<el-form-item label="长度" prop="length">
<el-input v-model="form.length" placeholder="请输入长度" />
</el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength">
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-input-number :controls="false" v-model="form.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测宽度(m)" prop="actualWidth">
<el-form-item label="实测宽度(mm)" prop="actualWidth">
<el-input-number :controls="false" v-model="form.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测厚度(m)" prop="actualThickness">
<el-form-item label="实测厚度(mm)" prop="actualThickness">
<el-input-number :controls="false" v-model="form.actualThickness" placeholder="请输入实测厚度" type="number"
:step="0.01" />
</el-form-item>
@@ -512,9 +517,9 @@ export default {
{ label: '厂家', prop: 'manufacturer' },
{ label: '调制度', prop: 'temperGrade' },
{ label: '镀层种类', prop: 'coatingType' },
{ label: '实测长度(m)', prop: 'actualLength' },
{ label: '实测宽度(m)', prop: 'actualWidth' },
{ label: '实测厚度(m)', prop: 'actualThickness' },
{ label: '实测长度(mm)', prop: 'actualLength' },
{ label: '实测宽度(mm)', prop: 'actualWidth' },
{ label: '实测厚度(mm)', prop: 'actualThickness' },
{ label: '钢卷表面处理', prop: 'coilSurfaceTreatment' },
],
title: '详细信息'
@@ -688,6 +693,28 @@ export default {
}
return '未知'
},
getRowStyle(row) {
console.log('getRowStyle called with row:', row);
// 先尝试给所有行设置一个简单的背景色测试是否生效
if (row.status == 1) {
console.log('returning blue');
return { backgroundColor: '#e6f7ff' }
}
if (row.dataType == 0 || row.dataType == 2) {
console.log('returning gray');
return { backgroundColor: '#f4f4f5' }
}
if (row.dataType == 1) {
console.log('returning green');
return { backgroundColor: '#f0fdf4' }
}
if (row.dataType == 10) {
console.log('returning yellow');
return { backgroundColor: '#fffbe6' }
}
console.log('returning default');
return {}
},
/** 查询用户列表 */
getUsers() {
listUser({ pageNum: 1, pageSize: 1000 }).then(response => {

View File

@@ -38,7 +38,12 @@
<!-- 钢卷信息卡片 -->
<div v-loading="materialLoading">
<KLPTable :data="materialCoilList" height="calc(100vh - 340px)" :floatLayer="true"
:floatLayerConfig="floatLayerConfig">
:floatLayerConfig="floatLayerConfig" :row-style="getRowStyle">
<el-table-column prop="status" label="钢卷状态" width="100" show-overflow-tooltip>
<template slot-scope="scope">
<el-tag size="small" :style="getBorderStyle(scope.row)">{{ getTypeLabel(scope.row) }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="currentCoilNo" label="当前钢卷号">
<template slot-scope="scope">
<current-coil-no :current-coil-no="scope.row.currentCoilNo" />
@@ -49,6 +54,7 @@
<el-table-column prop="warehouseName" label="逻辑库区" show-overflow-tooltip></el-table-column>
<el-table-column prop="specification" label="规格" width="100" show-overflow-tooltip></el-table-column>
<el-table-column prop="netWeight" label="净重" width="100" show-overflow-tooltip></el-table-column>
<el-table-column prop="action" label="操作" width="400">
<template slot-scope="scope">
<el-button v-loading="buttonLoading" style="margin-left: 0px; padding: 4px !important;" type="default"
@@ -334,18 +340,18 @@
<el-form-item label="净重" prop="netWeight">
<el-input v-model="form.netWeight" placeholder="请输入净重" />
</el-form-item>
<el-form-item label="长度" prop="length">
<el-form-item label="长度(mm)" prop="length">
<el-input v-model="form.length" placeholder="请输入长度" />
</el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength">
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-input-number :controls="false" v-model="form.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测宽度(m)" prop="actualWidth">
<el-form-item label="实测宽度(mm)" prop="actualWidth">
<el-input-number :controls="false" v-model="form.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测厚度(m)" prop="actualThickness">
<el-form-item label="实测厚度(mm)" prop="actualThickness">
<el-input-number :controls="false" v-model="form.actualThickness" placeholder="请输入实测厚度" type="number"
:step="0.01" />
</el-form-item>
@@ -487,9 +493,9 @@ export default {
{ label: '厂家', prop: 'manufacturer' },
{ label: '调制度', prop: 'temperGrade' },
{ label: '镀层种类', prop: 'coatingType' },
{ label: '实测长度(m)', prop: 'actualLength' },
{ label: '实测宽度(m)', prop: 'actualWidth' },
{ label: '实测厚度(m)', prop: 'actualThickness' },
{ label: '实测长度(mm)', prop: 'actualLength' },
{ label: '实测宽度(mm)', prop: 'actualWidth' },
{ label: '实测厚度(mm)', prop: 'actualThickness' },
{ label: '钢卷表面处理', prop: 'coilSurfaceTreatment' },
],
title: '详细信息'
@@ -1012,6 +1018,26 @@ export default {
return '未知'
},
getRowStyle(row) {
// 已发货
if (row.status == 1) {
return { backgroundColor: '#e6f7ff' }
}
// 历史钢卷
if (row.dataType == 0 || row.dataType == 2) {
return { backgroundColor: '#f4f4f5' }
}
// 当前钢卷
if (row.dataType == 1) {
return { backgroundColor: '#f0fdf4' }
}
// 还未入库的钢卷
if (row.dataType == 10) {
return { backgroundColor: '#fffbe6' }
}
return {}
},
/** 根据操作类型获取图标 */
getActionIcon(actionType) {
const value = parseInt(actionType);

File diff suppressed because it is too large Load Diff

View File

@@ -187,25 +187,25 @@
<template slot="append"></template>
</el-input-number>
</el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength" class="form-item-half">
<el-form-item label="实测长度(mm)" 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"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
<el-form-item label="实测厚度(m)" prop="actualThickness" class="form-item-half">
<el-form-item label="实测厚度(mm)" prop="actualThickness" class="form-item-half">
<el-input-number :controls="false" v-model="targetCoil.actualThickness" placeholder="请输入实测厚度"
type="number" :step="0.01" :disabled="readonly">
<template slot="append"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
</div>
<div class="form-row">
<el-form-item label="实测宽度(m)" prop="actualWidth" class="form-item-half">
<el-form-item label="实测宽度(mm)" prop="actualWidth" class="form-item-half">
<el-input-number :controls="false" v-model="targetCoil.actualWidth" placeholder="请输入实测宽度"
type="number" :step="0.01" :disabled="readonly">
<template slot="append"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
<el-form-item label="调制度" prop="temperGrade" class="form-item-half">

View File

@@ -62,12 +62,12 @@
<el-descriptions-item label="原料材质">{{ coilInfo.packingStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="包装要求">{{ coilInfo.packagingRequirement || '-'
}}</el-descriptions-item>
<el-descriptions-item label="实测厚度(m)">{{ coilInfo.actualThickness || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="实测宽度(m)">{{ coilInfo.actualWidth || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="长度">{{ coilInfo.length || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="实测厚度(mm)">{{ coilInfo.actualThickness || '-' }}
mm</el-descriptions-item>
<el-descriptions-item label="实测宽度(mm)">{{ coilInfo.actualWidth || '-' }}
mm</el-descriptions-item>
<el-descriptions-item label="长度(mm)">{{ coilInfo.length || '-' }}
mm</el-descriptions-item>
<el-descriptions-item label="毛重">{{ coilInfo.grossWeight || '-' }} t</el-descriptions-item>
<el-descriptions-item label="净重">{{ coilInfo.netWeight || '-' }} t</el-descriptions-item>

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="60px">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
<el-form-item label="入场卷号" prop="enterCoilNo">
<el-input v-model="queryParams.enterCoilNo" placeholder="请输入入场钢卷号" clearable
@keyup.enter.native="handleQuery" />
@@ -266,21 +266,21 @@
</template>
</el-table-column>
<el-table-column label="实测宽度" align="center" prop="width" v-if="showWidthEdit" width="150">
<el-table-column label="实测宽度(mm)" align="center" prop="width" v-if="showWidthEdit" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.actualWidth" placeholder="请输入实测宽度"
@change="handleRowChange(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="实测厚度(m)" align="center" prop="actualThickness" v-if="showWidthEdit" width="150">
<el-table-column label="实测厚度(mm)" align="center" prop="actualThickness" v-if="showWidthEdit" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.actualThickness" placeholder="请输入实测厚度"
@change="handleRowChange(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="预留宽度" align="center" prop="width" v-if="showWidthEdit" width="150">
<el-table-column label="预留宽度(mm)" align="center" prop="width" v-if="showWidthEdit" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.reservedWidth" placeholder="请输入预留宽度"
@change="handleRowChange(scope.row)"></el-input>
@@ -433,15 +433,15 @@
<el-form-item label="长度" prop="length" v-if="showLength">
<el-input v-model="form.length" placeholder="请输入长度" />
</el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength">
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-input-number :controls="false" v-model="form.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测厚度(m)" prop="actualThickness" class="form-item-half">
<el-form-item label="实测厚度(mm)" prop="actualThickness" class="form-item-half">
<el-input-number :controls="false" v-model="form.actualThickness" placeholder="请输入实测厚度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测宽度(m)" prop="actualWidth">
<el-form-item label="实测宽度(mm)" prop="actualWidth">
<el-input-number :controls="false" v-model="form.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" />
</el-form-item>
@@ -561,12 +561,12 @@
<el-descriptions-item label="原料材质">{{ judgeForm.packingStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="包装要求">{{ judgeForm.packagingRequirement || '-'
}}</el-descriptions-item>
<el-descriptions-item label="实测厚度(m)">{{ judgeForm.actualThickness || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="实测宽度(m)">{{ judgeForm.actualWidth || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="长度">{{ judgeForm.length || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="实测厚度(mm)">{{ judgeForm.actualThickness || '-' }}
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="毛重">{{ judgeForm.grossWeight || '-' }} t</el-descriptions-item>
<el-descriptions-item label="净重">{{ judgeForm.netWeight || '-' }} t</el-descriptions-item>
@@ -935,9 +935,9 @@ export default {
{ label: '厂家', prop: 'manufacturer' },
{ label: '调制度', prop: 'temperGrade' },
{ label: '镀层种类', prop: 'coatingType' },
{ label: '实测长度(m)', prop: 'actualLength' },
{ label: '实测宽度(m)', prop: 'actualWidth' },
{ label: '实测厚度(m)', prop: 'actualThickness' },
{ label: '实测长度(mm)', prop: 'actualLength' },
{ label: '实测宽度(mm)', prop: 'actualWidth' },
{ label: '实测厚度(mm)', prop: 'actualThickness' },
{ label: '钢卷表面处理', prop: 'coilSurfaceTreatment' },
],
title: '详细信息'

View File

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

View File

@@ -38,9 +38,9 @@
<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="实测长度(m)">{{ coilInfo.actualLength || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测宽度(m)">{{ coilInfo.actualWidth || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测厚度(m)">{{ coilInfo.actualThickness || '-' }}</el-descriptions-item>
<el-descriptions-item label="实测长度(mm)">{{ 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>
<el-descriptions-item label="净重">{{ coilInfo.netWeight || '-' }} T</el-descriptions-item>
</el-descriptions>
@@ -166,15 +166,15 @@
<el-form-item label="长度" prop="length">
<el-input v-model="splitForm.length" placeholder="请输入长度" type="number" />
</el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength">
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-input-number :controls="false" v-model="splitForm.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测厚度(m)" prop="actualThickness">
<el-form-item label="实测厚度(mm)" prop="actualThickness">
<el-input-number :controls="false" v-model="splitForm.actualThickness" placeholder="请输入实测厚度"
type="number" :step="0.01" />
</el-form-item>
<el-form-item label="实测宽度(m)" prop="actualWidth">
<el-form-item label="实测宽度(mm)" prop="actualWidth">
<el-input-number :controls="false" v-model="splitForm.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" />
</el-form-item>
@@ -269,12 +269,14 @@
<el-descriptions-item label="原料材质">{{ selectedSplitItem.packingStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="包装要求">{{ selectedSplitItem.packagingRequirement || '-'
}}</el-descriptions-item>
<el-descriptions-item label="实测度(m)">{{ selectedSplitItem.actualThickness || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="实测度(m)">{{ selectedSplitItem.actualWidth || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="长度">{{ selectedSplitItem.length || '-' }}
m</el-descriptions-item>
<el-descriptions-item label="实测度(mm)">{{ selectedSplitItem.actualLength || '-' }}
mm</el-descriptions-item>
<el-descriptions-item label="实测度(mm)">{{ selectedSplitItem.actualThickness || '-' }}
mm</el-descriptions-item>
<el-descriptions-item label="实测宽度(mm)">{{ selectedSplitItem.actualWidth || '-' }}
mm</el-descriptions-item>
<el-descriptions-item label="长度(mm)">{{ selectedSplitItem.length || '-' }}
mm</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,22 +197,22 @@
<template slot="append"></template>
</el-input-number>
</el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength">
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-input-number :controls="false" v-model="item.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" :disabled="readonly">
<template slot="append"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
<el-form-item label="实测厚度(m)" prop="actualThickness" class="form-item-half">
<el-form-item label="实测厚度(mm)" prop="actualThickness" class="form-item-half">
<el-input-number :controls="false" v-model="item.actualThickness" placeholder="请输入实测厚度"
type="number" :step="0.01" :disabled="readonly">
<template slot="append"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
<el-form-item label="实测宽度(m)" prop="actualWidth">
<el-form-item label="实测宽度(mm)" prop="actualWidth">
<el-input-number :controls="false" v-model="item.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" :disabled="readonly">
<template slot="append"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
<el-form-item label="业务目的" prop="businessPurpose">

View File

@@ -7,6 +7,7 @@
<span>钢卷信息更新</span>
</div>
<div class="header-actions">
<el-button size="small" @click="saveTemp" :loading="loading">暂存内容</el-button>
<el-button type="primary" size="small" @click="handleSave" :loading="loading">保存更新</el-button>
</div>
</div>
@@ -193,24 +194,24 @@
</el-input-number>
</el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength">
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-input-number :controls="false" v-model="updateForm.actualLength" placeholder="请输入实测长度" type="number"
:step="0.001">
<template slot="append"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
<el-form-item label="实测厚度(m)" prop="actualThickness" class="form-item-half">
<el-form-item label="实测厚度(mm)" prop="actualThickness" class="form-item-half">
<el-input-number :controls="false" v-model="updateForm.actualThickness" placeholder="请输入实测厚度"
type="number" :step="0.01">
<template slot="append"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
<el-form-item label="实测宽度(m)" prop="actualWidth">
<el-form-item label="实测宽度(mm)" prop="actualWidth">
<el-input-number :controls="false" v-model="updateForm.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.001">
<template slot="append"></template>
<template slot="append">mm</template>
</el-input-number>
</el-form-item>
@@ -331,6 +332,38 @@
<el-button type="primary" @click="saveAbnormal"> </el-button>
</div>
</el-dialog>
<!-- 暂存数据展示弹窗 -->
<el-dialog title="发现暂存数据" :visible.sync="cacheDialogVisible" width="800px" append-to-body>
<div>
<el-alert title="检测到您之前有暂存的钢卷信息,是否恢复使用?" type="info" show-icon :closable="false"></el-alert>
<el-divider content-position="left">暂存的表单数据</el-divider>
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="当前钢卷号">{{ parsedCacheData && parsedCacheData.updateForm && parsedCacheData.updateForm.currentCoilNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="班组">{{ parsedCacheData && parsedCacheData.updateForm && parsedCacheData.updateForm.team || '-' }}</el-descriptions-item>
<el-descriptions-item label="材料类型">{{ parsedCacheData && parsedCacheData.updateForm && parsedCacheData.updateForm.materialType || '-' }}</el-descriptions-item>
<el-descriptions-item label="质量状态">{{ parsedCacheData && parsedCacheData.updateForm && parsedCacheData.updateForm.qualityStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="净重">{{ parsedCacheData && parsedCacheData.updateForm && parsedCacheData.updateForm.netWeight || '-' }}</el-descriptions-item>
<el-descriptions-item label="备注">{{ parsedCacheData && parsedCacheData.updateForm && parsedCacheData.updateForm.remark || '-' }}</el-descriptions-item>
</el-descriptions>
<el-divider v-if="parsedCacheData && parsedCacheData.abnormals && parsedCacheData.abnormals.length > 0" content-position="left">暂存的异常信息{{ parsedCacheData.abnormals.length }}</el-divider>
<div v-if="parsedCacheData && parsedCacheData.abnormals && parsedCacheData.abnormals.length > 0" class="abnormal-container" style="margin-bottom: 20px;">
<div v-for="(abnormal, index) in parsedCacheData.abnormals" :key="index" class="abnormal-item">
<div class="abnormal-content">
<div class="abnormal-info">
<div class="abnormal-position">{{ getAbnormalPositionText(abnormal.position) }}</div>
<div class="abnormal-code">{{ getAbnormalCodeText(abnormal.defectCode) }}</div>
</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="cacheDialogVisible = false">暂不使用</el-button>
<el-button type="danger" @click="deleteCache">删除暂存</el-button>
<el-button type="primary" @click="useCacheData">使用暂存数据</el-button>
</div>
</el-dialog>
</div>
</template>
@@ -339,6 +372,7 @@ import { getMaterialCoil, updateMaterialCoil, getMaterialCoilTrace } from '@/api
import { completeAction, getPendingAction } from '@/api/wms/pendingAction';
import { listWarehouse } from '@/api/wms/warehouse';
import { getAcidTypingPrefill } from '@/api/pocket/acidTyping';
import { saveCoilCache, getCoilCacheByCoilId, delCoilCache } from '@/api/wms/coilCache';
import ActualWarehouseSelect from "@/components/KLPService/ActualWarehouseSelect";
import RawMaterialSelect from "@/components/KLPService/RawMaterialSelect";
import ProductSelect from "@/components/KLPService/ProductSelect";
@@ -489,6 +523,10 @@ export default {
remark: null
},
contractList: [],
// 缓存相关
cacheDialogVisible: false,
currentCache: null,
parsedCacheData: null,
};
},
computed: {
@@ -625,6 +663,27 @@ export default {
if (actionId) {
this.actionId = actionId;
}
// 检测是否有暂存数据
if (coilId) {
try {
const res = await getCoilCacheByCoilId(coilId);
if (res.code === 200 && res.data) {
this.currentCache = res.data;
try {
this.parsedCacheData = JSON.parse(res.data.coilJson);
} catch (e) {
this.parsedCacheData = null;
this.$message.warning('暂存数据解析失败');
return;
}
// 显示缓存对话框
this.cacheDialogVisible = true;
}
} catch (error) {
console.error('查询暂存失败', error);
}
}
},
methods: {
// 处理材料类型变化
@@ -963,6 +1022,60 @@ export default {
if (!dict) return code;
const item = dict.find(item => item.value === code);
return item ? item.label : code;
},
// 暂存表单内容
async saveTemp() {
try {
this.loading = true;
const cacheData = {
updateForm: this.updateForm,
abnormals: this.abnormals
};
const data = {
coilId: this.currentInfo.coilId,
coilJson: JSON.stringify(cacheData)
};
const res = await saveCoilCache(data);
if (res.code === 200) {
this.$message.success('暂存成功');
} else {
this.$message.error('暂存失败:' + res.msg);
}
} catch (error) {
this.$message.error('暂存异常:' + error.message);
} finally {
this.loading = false;
}
},
// 使用暂存数据
useCacheData() {
if (this.parsedCacheData && this.parsedCacheData.updateForm) {
this.updateForm = { ...this.parsedCacheData.updateForm };
if (this.parsedCacheData.abnormals) {
this.abnormals = [...this.parsedCacheData.abnormals];
}
this.$message.success('已恢复暂存数据');
}
this.cacheDialogVisible = false;
},
// 删除暂存
async deleteCache() {
this.$confirm('确定要删除这个暂存吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
try {
await delCoilCache(this.currentCache.cacheId);
this.$message.success('删除暂存成功');
this.cacheDialogVisible = false;
} catch (error) {
this.$message.error('删除暂存失败:' + error.message);
}
});
}
}
};

View File

@@ -130,15 +130,15 @@
<el-form-item label="净重" prop="netWeight">
<el-input v-model="form.netWeight" placeholder="请输入净重" />
</el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength">
<el-form-item label="实测长度(mm)" prop="actualLength">
<el-input-number :controls="false" v-model="form.actualLength" placeholder="请输入实测长度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测厚度(m)" prop="actualThickness" class="form-item-half">
<el-form-item label="实测厚度(mm)" prop="actualThickness" class="form-item-half">
<el-input-number :controls="false" v-model="form.actualThickness" placeholder="请输入实测厚度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="实测宽度(m)" prop="actualWidth">
<el-form-item label="实测宽度(mm)" prop="actualWidth">
<el-input-number :controls="false" v-model="form.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" />
</el-form-item>
@@ -247,9 +247,9 @@ export default {
{ label: '厂家', prop: 'itemManufacturer' },
{ label: '调制度', prop: 'temperGrade' },
{ label: '镀层种类', prop: 'coatingType' },
{ label: '实测长度(m)', prop: 'actualLength' },
{ label: '实测宽度(m)', prop: 'actualWidth' },
{ label: '实测厚度(m)', prop: 'actualThickness' },
{ label: '实测长度(mm)', prop: 'actualLength' },
{ label: '实测宽度(mm)', prop: 'actualWidth' },
{ label: '实测厚度(mm)', prop: 'actualThickness' },
{ label: '钢卷表面处理', prop: 'coilSurfaceTreatment' },
],
title: '详细信息'