feat(钢卷异常): 添加异常判级功能并优化界面

- 新增异常判级API接口和前端功能
- 优化表单提交按钮加载状态位置
- 简化产品类型列显示并增加宽度
- 重构异常详情界面布局和操作按钮
- 添加判级对话框及相关逻辑处理
This commit is contained in:
砂糖
2025-12-05 14:45:49 +08:00
parent 60bf543533
commit bdc8a92341
4 changed files with 82 additions and 100 deletions

View File

@@ -42,3 +42,12 @@ export function delCoilAbnormal(abnormalId) {
method: 'delete'
})
}
// 异常判级
export function judgeAbnormalLevel(params) {
return request({
url: '/wms/coilAbnormal/judge',
method: 'put',
params
})
}

View File

@@ -3,32 +3,20 @@
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="位置" prop="position">
<el-select v-model="queryParams.position" placeholder="请选择位置" clearable>
<el-option
v-for="dict in dict.type.coil_abnormal_position"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in dict.type.coil_abnormal_position" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="缺陷代码" prop="defectCode">
<el-select v-model="queryParams.defectCode" placeholder="请选择缺陷代码" clearable>
<el-option
v-for="dict in dict.type.coil_abnormal_code"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in dict.type.coil_abnormal_code" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="程度" prop="degree">
<el-select v-model="queryParams.degree" placeholder="请选择程度" clearable>
<el-option
v-for="dict in dict.type.coil_abnormal_degree"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in dict.type.coil_abnormal_degree" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
@@ -39,67 +27,46 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single"
@click="handleUpdate">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
@click="handleDelete">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="coilAbnormalList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键ID" align="center" prop="abnormalId" v-if="false"/>
<el-table-column label="钢卷ID" align="center" prop="coilId" />
<el-table-column label="主键ID" align="center" prop="abnormalId" v-if="false" />
<el-table-column label="位置" align="center" prop="position">
<template slot-scope="scope">
<dict-tag :options="dict.type.coil_abnormal_position" :value="scope.row.position"/>
<dict-tag :options="dict.type.coil_abnormal_position" :value="scope.row.position" />
</template>
</el-table-column>
<el-table-column label="长度坐标" align="center" prop="lengthCoord" />
<el-table-column label="缺陷代码" align="center" prop="defectCode">
<template slot-scope="scope">
<dict-tag :options="dict.type.coil_abnormal_code" :value="scope.row.defectCode"/>
<dict-tag :options="dict.type.coil_abnormal_code" :value="scope.row.defectCode" />
</template>
</el-table-column>
<el-table-column label="程度" align="center" prop="degree">
<template slot-scope="scope">
<dict-tag :options="dict.type.coil_abnormal_degree" :value="scope.row.degree"/>
<dict-tag :options="dict.type.coil_abnormal_degree" :value="scope.row.degree" />
</template>
</el-table-column>
<el-table-column label="判级" align="center" prop="judgeLevel">
<template slot-scope="scope">
<dict-tag :options="dict.type.coil_abnormal_level" :value="scope.row.judgeLevel" />
</template>
</el-table-column>
<el-table-column label="判级" align="center" prop="judgeLevel" />
<el-table-column label="判级人" align="center" prop="judgeBy" />
<el-table-column label="判级时间" align="center" prop="judgeTime" width="180">
<template slot-scope="scope">
@@ -108,29 +75,15 @@
</el-table-column>
<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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
<el-button v-if="scope.row.judgeLevel == undefined" size="mini" type="text" icon="el-icon-check" @click="handleJudge(scope.row)">判级</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改钢卷异常信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
@@ -140,11 +93,8 @@
</el-form-item>
<el-form-item label="位置" prop="position">
<el-radio-group v-model="form.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-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">
@@ -152,20 +102,14 @@
</el-form-item>
<el-form-item label="缺陷代码" prop="defectCode">
<el-radio-group v-model="form.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-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="form.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-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">
@@ -177,16 +121,32 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 异常判级对话框 -->
<el-dialog :title="title" :visible.sync="judgeOpen" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="判级" prop="judgeLevel">
<el-radio-group v-model="form.judgeLevel">
<el-radio-button v-for="dict in dict.type.coil_abnormal_level" :key="dict.value"
:label="dict.value">{{ dict.label }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitJudge"> </el-button>
<el-button @click="judgeOpen = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listCoilAbnormal, getCoilAbnormal, delCoilAbnormal, addCoilAbnormal, updateCoilAbnormal } from "@/api/wms/coilAbnormal";
import { listCoilAbnormal, getCoilAbnormal, delCoilAbnormal, addCoilAbnormal, updateCoilAbnormal, judgeAbnormalLevel } from "@/api/wms/coilAbnormal";
import CoilSelector from '@/components/CoilSelector'
export default {
name: "CoilAbnormal",
dicts: ['coil_abnormal_code', 'coil_abnormal_position', 'coil_abnormal_degree'],
dicts: ['coil_abnormal_code', 'coil_abnormal_position', 'coil_abnormal_degree', 'coil_abnormal_level'],
components: {
CoilSelector
},
@@ -228,7 +188,8 @@ export default {
form: {},
// 表单校验
rules: {
}
},
judgeOpen: false,
};
},
// created() {
@@ -294,7 +255,7 @@ export default {
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.abnormalId)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@@ -360,6 +321,24 @@ export default {
this.download('wms/coilAbnormal/export', {
...this.queryParams
}, `coilAbnormal_${new Date().getTime()}.xlsx`)
},
/** 异常判级按钮操作 */
handleJudge(row) {
this.reset();
this.form = row
this.judgeOpen = true;
this.title = "异常判级";
},
/** 提交异常判级按钮操作 */
submitJudge() {
this.buttonLoading = true;
judgeAbnormalLevel(this.form).then(response => {
this.$modal.msgSuccess("判级成功");
this.judgeOpen = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
};

View File

@@ -431,9 +431,9 @@ export default {
},
/** 提交按钮 */
submitForm() {
this.buttonLoading = true;
this.$refs['form'].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.actionId != null) {
updatePendingAction(this.form).then(response => {
this.$message.success('修改成功');

View File

@@ -85,17 +85,11 @@
<el-table-column label="逻辑库位" align="center" prop="warehouseName" v-if="!hideWarehouseQuery" />
<el-table-column label="实际库区" align="center" prop="actualWarehouseName" v-if="!hideWarehouseQuery" />
<!-- <el-table-column label="物料类型" align="center" prop="materialType" /> -->
<el-table-column label="产品类型" align="center">
<el-table-column label="产品类型" align="center" width="220">
<template slot-scope="scope">
<ProductInfo v-if="scope.row.itemType == 'product'" :product="scope.row.product">
<template slot-scope="{ product }">
{{ product.productName }}[{{ product.specification }}]
</template>
</ProductInfo>
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row.rawMaterial">
<template slot-scope="{ material }">
{{ material.rawMaterialName }}[{{ material.specification }}]
</template>
</RawMaterialInfo>
</template>
</el-table-column>