feat(钢卷管理): 在多个页面添加业务目的选择功能

为钢卷管理中的校正、拆分、合并、录入等操作添加业务目的选择功能,使用字典类型coil_business_purpose提供选项
This commit is contained in:
砂糖
2026-04-08 17:55:30 +08:00
parent 7930991eb8
commit b232cbf14d
7 changed files with 52 additions and 72 deletions

View File

@@ -347,6 +347,12 @@
<el-input-number :controls="false" v-model="form.actualThickness" placeholder="请输入实测厚度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="业务目的" prop="businessPurpose">
<el-select v-model="form.businessPurpose" placeholder="请选择业务目的" style="width: 100%">
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
:label="item.label" />
</el-select>
</el-form-item>
<el-form-item label="调制度" prop="temperGrade">
<el-input v-model="form.temperGrade" placeholder="请输入调制度" />
</el-form-item>
@@ -422,6 +428,7 @@ export default {
RawMaterialSelect,
CoilTraceResult,
},
dicts: ['coil_business_purpose'],
data() {
return {
traceOpen: false,

View File

@@ -421,6 +421,12 @@
<el-input-number :controls="false" v-model="form.actualThickness" placeholder="请输入实测厚度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="业务目的" prop="businessPurpose">
<el-select v-model="form.businessPurpose" placeholder="业务目的" filterable>
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
:label="item.label" />
</el-select>
</el-form-item>
<el-form-item label="调制度" prop="temperGrade">
<el-input v-model="form.temperGrade" placeholder="请输入调制度" />
</el-form-item>
@@ -474,7 +480,7 @@ import { getCoilTagPrintType } from '@/views/wms/coil/js/coilPrint'
export default {
name: 'CorrentAllPage',
dicts: ['action_type', 'coil_quality_status'],
dicts: ['action_type', 'coil_quality_status', 'coil_business_purpose'],
components: {
LabelRender,
WarehouseSelect,

View File

@@ -222,6 +222,14 @@
</el-form-item>
</div>
<el-form-item label="业务目的" prop="businessPurpose" class="form-item-half">
<el-select v-model="targetCoil.businessPurpose" placeholder="请选择业务目的" style="width: 100%"
:disabled="readonly">
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
:label="item.label" />
</el-select>
</el-form-item>
<el-form-item label="钢卷表面处理" prop="coilSurfaceTreatment" class="form-item-half">
<MemoInput storageKey="surfaceTreatmentDesc" v-model="targetCoil.coilSurfaceTreatment"
placeholder="请输入钢卷表面处理" />
@@ -305,7 +313,7 @@ export default {
TimeInput,
AbnormalForm
},
dicts: ['coil_quality_status', 'coil_abnormal_position', 'coil_abnormal_code', 'coil_abnormal_degree'],
dicts: ['coil_quality_status', 'coil_abnormal_position', 'coil_abnormal_code', 'coil_abnormal_degree', 'coil_business_purpose'],
data() {
const currentCoilNoPrefix = generateCoilNoPrefix()
return {

View File

@@ -396,6 +396,12 @@
<el-input-number :controls="false" v-model="form.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="业务目的" prop="businessPurpose">
<el-select v-model="form.businessPurpose" placeholder="业务目的" filterable>
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
:label="item.label" />
</el-select>
</el-form-item>
<el-form-item label="调制度" prop="temperGrade">
<el-input v-model="form.temperGrade" placeholder="请输入调制度" />
</el-form-item>
@@ -1110,7 +1116,7 @@ export default {
handlePreviewLabel(row) {
this.labelRender.visible = true;
const itemName = row.itemName || '';
this.labelRender.type = row.itemType === 'product' ? '3' : '2';
this.labelRender.data = {
...row,

View File

@@ -173,6 +173,12 @@
<el-input-number :controls="false" v-model="splitForm.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" />
</el-form-item>
<el-form-item label="业务目的" prop="businessPurpose">
<el-select v-model="splitForm.businessPurpose" placeholder="业务目的" filterable>
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
:label="item.label" />
</el-select>
</el-form-item>
<el-form-item label="调制度" prop="temperGrade">
<el-input v-model="splitForm.temperGrade" placeholder="请输入调制度" />
</el-form-item>
@@ -340,7 +346,7 @@ export default {
ProductInfo,
RawMaterialInfo,
},
dicts: ['coil_quality_status', 'coil_abnormal_position', 'coil_abnormal_code', 'coil_abnormal_degree'],
dicts: ['coil_quality_status', 'coil_abnormal_position', 'coil_abnormal_code', 'coil_abnormal_degree', 'coil_business_purpose'],
data() {
const currentCoilNoPrefix = generateCoilNoPrefix()
return {

View File

@@ -215,6 +215,12 @@
<template slot="append"></template>
</el-input-number>
</el-form-item>
<el-form-item label="业务目的" prop="businessPurpose">
<el-select v-model="item.businessPurpose" placeholder="请选择业务目的" style="width: 100%">
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
:label="item.label" />
</el-select>
</el-form-item>
<el-form-item label="调制度" prop="temperGrade">
<el-input v-model="item.temperGrade" placeholder="请输入调制度" />
</el-form-item>
@@ -321,7 +327,7 @@ export default {
TimeInput,
AbnormalForm
},
dicts: ['coil_quality_status', 'coil_abnormal_position', 'coil_abnormal_code', 'coil_abnormal_degree'],
dicts: ['coil_quality_status', 'coil_abnormal_position', 'coil_abnormal_code', 'coil_abnormal_degree', 'coil_business_purpose'],
data() {
const currentCoilNoPrefix = generateCoilNoPrefix()
return {

View File

@@ -207,6 +207,13 @@
</el-input-number>
</el-form-item>
<el-form-item label="业务目的" prop="businessPurpose">
<el-select v-model="updateForm.businessPurpose" placeholder="请选择业务目的" style="width: 100%">
<el-option v-for="item in dict.type.coil_business_purpose" :key="item.value" :value="item.value"
:label="item.label" />
</el-select>
</el-form-item>
<el-form-item label="调制度" prop="temperGrade">
<el-input v-model="updateForm.temperGrade" placeholder="请输入调制度" />
</el-form-item>
@@ -341,7 +348,7 @@ export default {
TimeInput,
AbnormalForm
},
dicts: ['coil_quality_status', 'coil_abnormal_position', 'coil_abnormal_code', 'coil_abnormal_degree'],
dicts: ['coil_quality_status', 'coil_abnormal_position', 'coil_abnormal_code', 'coil_abnormal_degree', 'coil_business_purpose'],
data() {
return {
loading: false,
@@ -685,11 +692,6 @@ export default {
this.updateForm.productionDuration = data.productionDuration;
this.updateForm.formattedDuration = this.formatDuration(data.productionDuration);
}
// 不再预加载物品列表,改为实时搜索
// 加载变更历史
// this.loadHistory();
}
} catch (error) {
this.$message.error('加载钢卷信息失败');
@@ -767,67 +769,6 @@ export default {
}
},
// 已移除 loadAllItems改为实时搜索
// 已移除 loadItemList改为实时搜索
// 实时搜索物品(后端搜索)
async searchItems(query) {
if (!this.updateForm.itemType) {
this.$message.warning('请先选择材料类型');
return;
}
// 如果没有输入,清空列表
if (!query || query.trim() === '') {
if (this.updateForm.itemType === 'raw_material') {
this.rawMaterialList = [];
} else if (this.updateForm.itemType === 'product') {
this.productList = [];
}
return;
}
try {
this.itemSearchLoading = true;
const searchQuery = query.trim();
if (this.updateForm.itemType === 'raw_material') {
// 后端搜索原材料(支持名称或规格模糊搜索)
const response = await listRawMaterialWithBom({
pageNum: 1,
pageSize: 20,
rawMaterialName: searchQuery,
specification: searchQuery // 同时传入,后端会使用 OR 条件
});
if (response.code === 200) {
this.rawMaterialList = response.rows || [];
}
} else if (this.updateForm.itemType === 'product') {
// 后端搜索产品(支持名称或规格模糊搜索)
const response = await listProductWithBom({
pageNum: 1,
pageSize: 20,
productName: searchQuery,
specification: searchQuery // 同时传入,后端会使用 OR 条件
});
if (response.code === 200) {
this.productList = response.rows || [];
}
}
} catch (error) {
console.error('搜索物品失败', error);
this.$message.error('搜索失败,请重试');
} finally {
this.itemSearchLoading = false;
}
},
// 物品选择变化
handleItemChange(itemId) {
// 物品选择变化处理
},
// 加载变更历史
async loadHistory() {
if (!this.currentInfo.enterCoilNo) {