feat(钢卷调拨): 新增调拨类型列和改判功能

添加调拨类型列显示和钢卷改判功能,包括改判弹窗和重贴标签操作
This commit is contained in:
2026-04-18 15:56:28 +08:00
parent 0822ca7cc8
commit 143764f7f8
2 changed files with 169 additions and 2 deletions

View File

@@ -160,12 +160,12 @@
</el-table-column> -->
<el-table-column v-if="showGrade" label="质量状态" align="center" prop="qualityStatus">
<template slot-scope="scope">
<!-- <template slot-scope="scope">
<el-select v-model="scope.row.qualityStatus" placeholder="请选择质量状态" @change="handleGradeChange(scope.row)">
<el-option v-for="item in dict.type.coil_quality_status" :key="item.value" :value="item.value"
:label="item.label" />
</el-select>
</template>
</template> -->
</el-table-column>
<el-table-column label="逻辑库位" align="center" prop="warehouseId" v-if="editWarehouse">
<template slot-scope="scope">
@@ -175,6 +175,9 @@
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
<el-table-column v-if="hasTransferType" label="调拨类型" align="center" prop="transferType" />
<el-table-column label="钢卷去向" align="center" prop="nextWarehouseId" v-if="editNext" width="150">
<template slot-scope="scope">
<el-select v-model="scope.row.nextWarehouseId" placeholder="钢卷去向" filterable
@@ -313,6 +316,13 @@
@click="handleRemoveFromWaybill(scope.row)">
移出发货单
</el-button>
<el-button v-if="showGrade" size="mini" type="text" icon="el-icon-edit" @click="handleJudge(scope.row)">
改判
</el-button>
<el-button size="mini" v-if="hasTransferType" type="text" icon="el-icon-close"
@click="handleReplaceLabel(scope.row)">
重贴标签
</el-button>
</template>
</el-table-column>
</KLPTable>
@@ -504,6 +514,70 @@
<process-flow v-if="showProcessFlow" ref="processFlow"></process-flow>
</div>
</DragResizeBox>
<!-- 钢卷改判弹窗 -->
<el-dialog title="钢卷改判" :visible.sync="judgeDialogVisible" width="800px" append-to-body>
<el-descriptions :column="3" border>
<el-descriptions-item label="入场钢卷号">{{ judgeForm.enterCoilNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="当前钢卷号">{{ judgeForm.currentCoilNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="厂家原料卷号">{{ judgeForm.supplierCoilNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="逻辑库位">{{ judgeForm.warehouseName || '-' }}</el-descriptions-item>
<el-descriptions-item label="实际库区">{{ judgeForm.actualWarehouseName || '-' }}</el-descriptions-item>
<el-descriptions-item label="班组">{{ judgeForm.team || '-' }}</el-descriptions-item>
<el-descriptions-item label="材料类型">{{ judgeForm.materialType || '-' }}</el-descriptions-item>
<el-descriptions-item label="产品/原料">{{ judgeForm.itemName || '-' }}</el-descriptions-item>
<el-descriptions-item label="规格">{{ judgeForm.specification || '-' }}</el-descriptions-item>
<el-descriptions-item label="材质">{{ judgeForm.material || '-' }}</el-descriptions-item>
<el-descriptions-item label="厂家">{{ judgeForm.manufacturer || '-' }}</el-descriptions-item>
<el-descriptions-item label="镀层质量">{{ judgeForm.zincLayer || '-' }}</el-descriptions-item>
<el-descriptions-item label="表面处理">{{ judgeForm.surfaceTreatmentDesc || '-'
}}</el-descriptions-item>
<el-descriptions-item label="质量状态">{{ judgeForm.qualityStatus || '-' }}</el-descriptions-item>
<el-descriptions-item label="切边要求">{{ judgeForm.trimmingRequirement || '-'
}}</el-descriptions-item>
<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="毛重">{{ judgeForm.grossWeight || '-' }} t</el-descriptions-item>
<el-descriptions-item label="净重">{{ judgeForm.netWeight || '-' }} t</el-descriptions-item>
<el-descriptions-item label="生产开始时间">{{ judgeForm.productionStartTime || '-'
}}</el-descriptions-item>
<el-descriptions-item label="生产结束时间">{{ judgeForm.productionEndTime || '-'
}}</el-descriptions-item>
<el-descriptions-item label="调制度">{{ judgeForm.temperGrade || '-' }}</el-descriptions-item>
<el-descriptions-item label="镀层种类">{{ judgeForm.coatingType || '-' }}</el-descriptions-item>
<el-descriptions-item label="钢卷表面处理">{{ judgeForm.coilSurfaceTreatment || '-' }}</el-descriptions-item>
<el-descriptions-item label="备注" :span="2">{{ judgeForm.remark || '-' }}</el-descriptions-item>
</el-descriptions>
<div style="margin-top: 20px; padding: 15px; background-color: #f5f7fa; border-radius: 4px;">
<el-form :model="judgeForm" label-width="120px">
<el-form-item label="修改质量状态">
<el-select v-model="judgeForm.qualityStatus" placeholder="请选择质量状态" style="width: 200px">
<el-option v-for="item in dict.type.coil_quality_status" :key="item.value" :value="item.value" :label="item.label" />
</el-select>
</el-form-item>
<el-form-item label="通知重贴标签">
<el-checkbox v-model="judgeForm.notifyReLabel">是否通知重贴标签</el-checkbox>
</el-form-item>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="judgeDialogVisible = false">取消</el-button>
<el-button :loading="buttonLoading" type="primary" @click="submitJudgeForm">确认</el-button>
</div>
</el-dialog>
</div>
</template>
@@ -675,6 +749,10 @@ export default {
type: Boolean,
default: false,
},
hasTransferType: {
type: Boolean,
default: false,
},
},
data() {
return {
@@ -851,6 +929,22 @@ export default {
shippedCount: 0,
unshippedCount: 0,
statistics: {},
// 钢卷改判弹窗
judgeDialogVisible: false,
judgeForm: {
coilId: undefined,
enterCoilNo: undefined,
currentCoilNo: undefined,
netWeight: undefined,
warehouseName: undefined,
actualWarehouseName: undefined,
qualityStatus: undefined,
itemName: undefined,
itemMaterial: undefined,
itemSpecification: undefined,
itemManufacturer: undefined,
notifyReLabel: false
},
};
},
computed: {
@@ -933,6 +1027,19 @@ export default {
})
// 打开一个弹窗列出查询到的所有单据明细
},
// 处理重贴标签
handleReplaceLabel(row) {
updateMaterialCoilSimple({
...row,
transferType: '',
}).then(res => {
this.$message({
message: '标签已重贴,记录移除',
type: 'success',
});
this.getList();
})
},
// 格式化毫秒值为xx天xx小时xx分钟
formatDuration(milliseconds) {
if (!milliseconds || milliseconds < 0) return '';
@@ -1413,6 +1520,39 @@ export default {
this.buttonLoading = false;
});
},
/** 改判按钮操作 */
handleJudge(row) {
// 填充改判表单数据
this.judgeForm = {
...row,
notifyReLabel: true
};
this.judgeDialogVisible = true;
},
/** 提交改判表单 */
submitJudgeForm() {
this.buttonLoading = true;
const submitData = {
...this.judgeForm,
// 如果通知重贴标签,则设置 transferType 为技术部改判
transferType: this.judgeForm.notifyReLabel ? '技术部改判' : null
};
updateMaterialCoilSimple(submitData).then(res => {
this.buttonLoading = false;
this.$message({
message: '改判成功',
type: 'success'
});
this.judgeDialogVisible = false;
this.getList();
}).catch(err => {
this.buttonLoading = false;
this.$message({
message: '改判失败',
type: 'error'
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const coilIds = row.coilId || this.ids;

View File

@@ -0,0 +1,27 @@
<template>
<BasePage :qrcode="qrcode" :querys="querys" :hideWarehouseQuery="hideWarehouseQuery"
:hideType="hideType" :showControl="showControl" :hasTransferType="hasTransferType" />
</template>
<script>
import BasePage from '../../panels/base.vue';
export default {
components: {
BasePage
},
data() {
return {
qrcode: false,
querys: {
hasTransferType: true,
// dataType: 1,
},
hideWarehouseQuery: true,
hasTransferType: true,
showControl: false,
hideType: false,
}
}
}
</script>