feat(wms): 新增钢卷异常管理功能

添加钢卷异常信息管理模块,包括异常记录、查询和展示功能
- 新增异常信息列表页面和详情页面
- 在钢卷管理页面添加异常数量显示和操作入口
- 实现异常信息的增删改查API接口
- 在领料页面添加异常标记和操作按钮
- 添加相关字典数据用于异常信息分类
This commit is contained in:
砂糖
2025-12-04 16:22:03 +08:00
parent 24b2381046
commit 01d8c87bc9
7 changed files with 558 additions and 12 deletions

View File

@@ -99,6 +99,7 @@
</RawMaterialInfo>
</template>
</el-table-column>
<el-table-column v-if="showAbnormal" label="异常数量" align="center" prop="abnormalCount"></el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime" />
<el-table-column label="发货时间" align="center" v-if="showExportTime" prop="exportTime" />
<el-table-column label="更新人" align="center" prop="updateBy" />
@@ -147,6 +148,7 @@
<el-button size="mini" v-if="showStatus" type="text" icon="el-icon-upload" @click="handleExportCoil(scope.row)">
发货
</el-button>
<el-button size="mini" v-if="showAbnormal" type="text" icon="el-icon-upload" @click="handleAbnormal(scope.row)">查看异常</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleCheck(scope.row)" v-if="showControl">修正</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-if="showControl">删除</el-button>
<el-button size="mini" type="text" icon="el-icon-search" @click="handleTrace(scope.row)">追溯</el-button>
@@ -311,6 +313,10 @@ export default {
type: Boolean,
default: false,
},
showAbnormal: {
type: Boolean,
default: false,
},
},
data() {
return {
@@ -509,6 +515,14 @@ export default {
this.$message.error('保存图片失败,请稍后重试');
}
},
handleAbnormal (row) {
this.$router.push({
path: '/quality/detail',
query: {
coilId: row.coilId,
}
})
},
// 取消按钮
cancel() {
this.open = false;

View File

@@ -37,7 +37,8 @@
<p>暂无待领物料</p>
</div>
<div v-for="(item, index) in materialCoilList" :key="item.coilId || index" class="material-card">
<div v-for="(item, index) in materialCoilList" :key="item.coilId || index" class="material-card"
:style="{ border: item.abnormalCount > 0 ? '1px solid red' : ' 1px solid #e4e7ed' }">
<div class="card-header">
<div class="header-left">
<el-tag type="info" size="small" class="coil-no-tag">{{ item.currentCoilNo }}</el-tag>
@@ -59,7 +60,7 @@
<span class="param-label">规格</span>
<span class="param-value">{{ item.rawMaterial.specification }}</span>
</div>
<div class="param-row" v-if="item.rawMaterial.material">
<div class="param-row" v-if="item.rawMaterial.material">
<span class="param-label">材质</span>
<span class="param-value">{{ item.rawMaterial.material }}</span>
</div>
@@ -167,6 +168,11 @@
<div class="card-footer">
<el-button type="primary" icon="el-icon-check" size="mini" @click="handlePickMaterial(item)"
:loading="item.picking" class="action-btn">领料</el-button>
<el-button type="danger" icon="el-icon-alarm-clock" :plain="item.abnormalCount == 0" size="mini"
@click="handleAddAbnormal(item)" :loading="item.cancelling" class="action-btn">
异常
<span v-if="item.abnormalCount > 0">({{ item.abnormalCount }})</span>
</el-button>
</div>
</div>
</div>
@@ -290,6 +296,40 @@
</div>
</el-col>
</el-row>
<el-dialog title="新增异常" :visible.sync="exceptionDialogVisible" width="400px">
<el-form ref="exceptionForm" :model="exceptionForm" label-width="80px">
<el-form-item label="位置" prop="position">
<el-radio-group v-model="exceptionForm.position">
<el-radio-button v-for="dict in dict.type.coil_abnormal_position" :key="dict.value" :label="dict.value">{{
dict.label }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="长度坐标" prop="lengthCoord">
<el-input v-model="exceptionForm.lengthCoord" placeholder="请输入长度坐标" />
</el-form-item>
<el-form-item label="缺陷代码" prop="defectCode">
<el-radio-group v-model="exceptionForm.defectCode">
<el-radio-button v-for="dict in dict.type.coil_abnormal_code" :key="dict.value" :label="dict.value">{{
dict.label }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="程度" prop="degree">
<el-radio-group v-model="exceptionForm.degree">
<el-radio-button v-for="dict in dict.type.coil_abnormal_degree" :key="dict.value" :label="dict.value">{{
dict.label }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input type="textarea" v-model="exceptionForm.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="info" @click="handleAbnormal">查看异常</el-button>
<el-button :loading="buttonLoading" type="primary" @click="confirmException"> </el-button>
<el-button @click="cancelException"> </el-button>
</div>
</el-dialog>
</div>
</template>
@@ -299,10 +339,11 @@ import { listPendingAction, startProcess, cancelAction, delPendingAction, addPen
import { parseTime } from '@/utils/klp'
import ProductInfo from '@/components/KLPService/Renderer/ProductInfo'
import RawMaterialInfo from '@/components/KLPService/Renderer/RawMaterialInfo'
import { addCoilAbnormal } from '@/api/wms/coilAbnormal'
export default {
name: 'DoPage',
dicts: ['action_type'],
dicts: ['action_type', 'coil_abnormal_code', 'coil_abnormal_position', 'coil_abnormal_degree'],
props: {
label: {
type: String,
@@ -342,6 +383,16 @@ export default {
currentCoilNo: null,
actionType: null, // 将在created中设置为酸连轧工序的actionType
actionStatus: null
},
exceptionDialogVisible: false,
exceptionForm: {
coilId: null,
position: null,
lengthCoord: null,
defectCode: null,
degree: null,
remark: null
}
}
},
@@ -603,6 +654,42 @@ export default {
}
return '—'
},
handleAddAbnormal(row) {
this.exceptionForm.coilId = row.coilId
this.exceptionDialogVisible = true
},
confirmException() {
addCoilAbnormal(this.exceptionForm).then(response => {
this.$message.success('异常记录添加成功')
this.cancelException();
// 重置表单
this.getMaterialCoil()
}).catch(error => {
console.error('异常记录添加失败:', error)
this.$message.error('异常记录添加失败: ' + (error.message || error))
})
},
handleAbnormal() {
this.$router.push({
path: '/quality/detail',
query: {
coilId: this.exceptionForm.coilId,
}
})
},
cancelException() {
// 重置表单
this.exceptionForm = {
coilId: null,
position: null,
lengthCoord: null,
defectCode: null,
degree: null,
remark: null
}
this.exceptionDialogVisible = false
},
}
}
</script>