feat: 增加调拨单审批功能及界面优化
fix(调拨单): 修正审批状态校验逻辑 feat(调拨单): 添加审批API接口 refactor(调拨单明细): 重构表格组件支持不同状态操作 style(调拨单): 优化界面显示和操作按钮 perf(发货单): 自动设置发货时间为当前时间 chore: 删除无用调拨记录页面
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-table :data="tableData" style="width: 100%" border>
|
||||
<el-table :data="tableData" style="width: 100%" border v-loading="confirmLoading">
|
||||
<el-table-column prop="coilId" label="钢卷号">
|
||||
<template slot-scope="scope">
|
||||
<CoilNo :coil-no="scope.row.coil.enterCoilNo" :coil="scope.row.coil" />
|
||||
@@ -25,19 +25,19 @@
|
||||
|
||||
<el-table-column prop="materialTypeAfter" label="调拨后类型" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-if="!scope.row.isConfirmed" v-model="scope.row.materialTypeAfter"
|
||||
<el-select v-if="!scope.row.isConfirmed && canEdit" v-model="scope.row.materialTypeAfter"
|
||||
@change="handleMaterialChange(scope.row)" placeholder="请选择">
|
||||
<el-option label="原料" :value="1" />
|
||||
<el-option label="产品" :value="2" />
|
||||
</el-select>
|
||||
<div v-else slot-scope="scope">
|
||||
<div v-else>
|
||||
{{ scope.row.materialTypeAfter == '1' ? '原料' : '产品' }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="itemIdAfter" v-loading="materialLoading" label="调拨后物料" width="260">
|
||||
<template slot-scope="scope">
|
||||
<div v-loading="materialLoading" v-if="!scope.row.isConfirmed">
|
||||
<div v-loading="materialLoading" v-if="!scope.row.isConfirmed && canEdit">
|
||||
<RawMaterialSelect v-model="scope.row.itemIdAfter" v-if="scope.row.materialTypeAfter == '1'" />
|
||||
<ProductSelect v-model="scope.row.itemIdAfter" v-else-if="scope.row.materialTypeAfter == '2'" />
|
||||
</div>
|
||||
@@ -49,7 +49,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="warehouseIdAfter" label="调拨后库区" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-if="!scope.row.isConfirmed" v-model="scope.row.warehouseIdAfter" placeholder="请选择">
|
||||
<el-select v-if="!scope.row.isConfirmed && canEdit" v-model="scope.row.warehouseIdAfter" placeholder="请选择">
|
||||
<el-option v-for="item in warehouseList" :disabled="!item.isEnabled" :key="item.warehouseId"
|
||||
:label="item.warehouseName" :value="item.warehouseId" />
|
||||
</el-select>
|
||||
@@ -61,17 +61,25 @@
|
||||
|
||||
<el-table-column type="action" label="操作" width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-button icon="el-icon-check" size="mini" v-if="!scope.row.isConfirmed" @click="handleConfirm(scope.row)"
|
||||
:loading="buttonLoading">确认</el-button>
|
||||
<el-button icon="el-icon-close" size="mini" @click="handleCancel(scope.row)"
|
||||
:loading="buttonLoading">取消</el-button>
|
||||
<div v-if="orderStatus == 0">
|
||||
<el-button icon="el-icon-check" size="mini" v-if="!scope.row.isConfirmed" @click="handleUpdate(scope.row)"
|
||||
:loading="buttonLoading">保存</el-button>
|
||||
<el-button icon="el-icon-close" size="mini" @click="handleCancel(scope.row)"
|
||||
:loading="buttonLoading">删除</el-button>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-button icon="el-icon-check" size="mini" v-if="!scope.row.isConfirmed" @click="handleConfirm(scope.row)"
|
||||
:loading="buttonLoading" :disabled="orderStatus != '2'">执行</el-button>
|
||||
<!-- <el-button icon="el-icon-close" size="mini" @click="handleCancel(scope.row)"
|
||||
:loading="buttonLoading" :disabled="orderStatus !== '2'">取消</el-button> -->
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { matchOrCreateMaterial, confirmTransferOrderItem, cancelTransferOrderItem } from '@/api/wms/transferOrderItem'
|
||||
import { matchOrCreateMaterial, confirmTransferOrderItem, cancelTransferOrderItem, updateTransferOrderItem } from '@/api/wms/transferOrderItem'
|
||||
import ProductSelect from "@/components/KLPService/ProductSelect";
|
||||
import RawMaterialSelect from "@/components/KLPService/RawMaterialSelect";
|
||||
import { listWarehouse } from '@/api/wms/warehouse';
|
||||
@@ -84,6 +92,14 @@ export default {
|
||||
data: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
canEdit: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
orderStatus: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
components: {
|
||||
@@ -99,7 +115,8 @@ export default {
|
||||
tableData: [],
|
||||
materialLoading: false,
|
||||
warehouseList: [],
|
||||
buttonLoading: false
|
||||
buttonLoading: false,
|
||||
confirmLoading: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -111,8 +128,8 @@ export default {
|
||||
if (newVal !== oldVal) {
|
||||
// 预处理数据
|
||||
this.tableData = newVal.map(item => {
|
||||
const isConfirmed = this.isConfirmed(item);
|
||||
if (isConfirmed) {
|
||||
const isEmpty = this.isEmpty(item);
|
||||
if (isEmpty) {
|
||||
return {
|
||||
...item,
|
||||
oBefore: {
|
||||
@@ -131,7 +148,7 @@ export default {
|
||||
surfaceTreatmentDesc: item.surfaceTreatmentAfter,
|
||||
zincLayer: item.zincLayerAfter
|
||||
},
|
||||
isConfirmed: true
|
||||
isConfirmed: this.isConfirmed(item)
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
@@ -148,7 +165,7 @@ export default {
|
||||
itemIdAfter: item.itemIdBefore,
|
||||
warehouseIdAfter: item.warehouseIdBefore,
|
||||
materialTypeAfter: item.materialTypeBefore,
|
||||
isConfirmed: false
|
||||
isConfirmed: this.isConfirmed(item)
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -167,8 +184,23 @@ export default {
|
||||
// 是否是已调拨状态
|
||||
isConfirmed(item) {
|
||||
// 只有三个after字段有值,才认为是已调拨状态
|
||||
// return item && item.itemIdAfter && item.warehouseIdAfter && item.materialTypeAfter
|
||||
return item.isTransferred == 1
|
||||
},
|
||||
// isEmpty 是否为空
|
||||
isEmpty(item) {
|
||||
return item && item.itemIdAfter && item.warehouseIdAfter && item.materialTypeAfter
|
||||
},
|
||||
handleUpdate(row) {
|
||||
updateTransferOrderItem(row).then(res => {
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
// 刷新数据
|
||||
this.$emit('refreshData')
|
||||
})
|
||||
},
|
||||
// 确认调拨
|
||||
handleConfirm(item) {
|
||||
this.buttonLoading = true
|
||||
@@ -185,6 +217,35 @@ export default {
|
||||
this.buttonLoading = false
|
||||
})
|
||||
},
|
||||
handleConfirmAll() {
|
||||
const unconfirmedItems = this.tableData.filter(item => !item.isConfirmed && !item.isTransferred);
|
||||
if (unconfirmedItems.length === 0) {
|
||||
this.$message({ message: '没有可执行的调拨项', type: 'info' });
|
||||
return;
|
||||
}
|
||||
|
||||
this.buttonLoading = true;
|
||||
const promises = unconfirmedItems.map(item => confirmTransferOrderItem(item));
|
||||
this.confirmLoading = true;
|
||||
return Promise.all(promises).then(results => {
|
||||
const successCount = results.filter(res => res.code === 200).length;
|
||||
if (successCount > 0) {
|
||||
this.$message({
|
||||
message: `成功执行 ${successCount} 项调拨`,
|
||||
type: 'success'
|
||||
});
|
||||
this.$emit('refreshData');
|
||||
}
|
||||
}).catch(error => {
|
||||
this.$message({
|
||||
message: '执行调拨时发生错误',
|
||||
type: 'error'
|
||||
});
|
||||
}).finally(() => {
|
||||
this.buttonLoading = false;
|
||||
this.confirmLoading = false;
|
||||
});
|
||||
},
|
||||
// 取消调拨
|
||||
handleCancel(item) {
|
||||
this.$confirm('确认取消调拨吗?', '提示', {
|
||||
|
||||
Reference in New Issue
Block a user