|
|
|
@ -5,23 +5,23 @@
|
|
|
|
|
<el-form-item label="入库单号">
|
|
|
|
|
<el-input v-model="queryForm.instockCode" placeholder="输入调拨单号" clearable/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
|
<el-select v-model="queryForm.instockType" placeholder="请选择工单类型(1采购订单,2生产订单,3手工,4系统生成)" clearable >
|
|
|
|
|
<el-option v-for="dict in wms_instock_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="入库方式" prop="instockMethond">
|
|
|
|
|
<el-select v-model="queryForm.instockMethond" placeholder="请选择入库方式" clearable >
|
|
|
|
|
<el-option v-for="dict in instock_methond" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="审核状态" prop="auditStatus">
|
|
|
|
|
<el-select v-model="queryForm.auditStatus" placeholder="请选择审核状态" clearable >
|
|
|
|
|
<el-option v-for="dict in approve_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="仓库" prop="warehouseId">
|
|
|
|
|
<el-select v-model="queryForm.warehouseId" placeholder="请选择所属仓库">
|
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
|
<el-select v-model="queryForm.instockType" placeholder="请选择工单类型(1采购订单,2生产订单,3手工,4系统生成)" clearable >
|
|
|
|
|
<el-option v-for="dict in wms_instock_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="入库方式" prop="instockMethond">
|
|
|
|
|
<el-select v-model="queryForm.instockMethond" placeholder="请选择入库方式" clearable >
|
|
|
|
|
<el-option v-for="dict in instock_methond" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="审核状态" prop="auditStatus">
|
|
|
|
|
<el-select v-model="queryForm.auditStatus" placeholder="请选择审核状态" clearable >
|
|
|
|
|
<el-option v-for="dict in approve_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="仓库" prop="warehouseId">
|
|
|
|
|
<el-select v-model="queryForm.warehouseId" placeholder="请选择所属仓库">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in baseStoreList"
|
|
|
|
|
:key="item.warehouseId"
|
|
|
|
@ -29,7 +29,7 @@
|
|
|
|
|
:value="item.warehouseId"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button :loading="parentTableLoad" type="primary" @click="query">查询</el-button>
|
|
|
|
|
<el-button @click="reset">重置</el-button>
|
|
|
|
@ -143,8 +143,8 @@
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="操作" fixed="right" width="200">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button size="small" @click="childrenTableUpdate( scope.row)" v-if="auditStatusLoad">
|
|
|
|
|
打印
|
|
|
|
|
<el-button size="small" @click="childrenTableUpdate( scope.row)" v-if="auditStatusLoad">
|
|
|
|
|
打印
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
size="small"
|
|
|
|
@ -165,60 +165,60 @@
|
|
|
|
|
<el-card shadow="never">
|
|
|
|
|
<el-form :model="dialogForm" :inline="true" label-width="120px" :disabled="isView">
|
|
|
|
|
<el-form-item label="物料大类" prop="materialCategoryId">
|
|
|
|
|
<el-select v-model="dialogForm.materialCategoryId" placeholder="请选择物料大类" @change="setMaterialList">
|
|
|
|
|
<el-option v-for="item in mategoryOptions"
|
|
|
|
|
:key="item.materialCategoryId"
|
|
|
|
|
:label="item.materialCategoryName"
|
|
|
|
|
:value="item.materialCategoryId"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
|
<el-select v-model="dialogForm.instockType" placeholder="请选择工单类型(1采购订单,2生产订单,3手工,4系统生成)">
|
|
|
|
|
<el-option
|
|
|
|
|
<el-select v-model="dialogForm.materialCategoryId" placeholder="请选择物料大类" @change="setMaterialList">
|
|
|
|
|
<el-option v-for="item in mategoryOptions"
|
|
|
|
|
:key="item.materialCategoryId"
|
|
|
|
|
:label="item.materialCategoryName"
|
|
|
|
|
:value="item.materialCategoryId"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
|
<el-select v-model="dialogForm.instockType" placeholder="请选择工单类型(1采购订单,2生产订单,3手工,4系统生成)">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="dict in wms_instock_type"
|
|
|
|
|
:key="dict.value"
|
|
|
|
|
:label="dict.label"
|
|
|
|
|
:value="dict.value"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="订单编号" prop="orderNo">
|
|
|
|
|
<el-input v-model="dialogForm.orderNo" placeholder="请输入订单编号" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="采购订单" v-if="state.showPurchaseOrderSelect">
|
|
|
|
|
<el-select v-model="state.selectedPurchaseOrder" placeholder="请选择采购订单" value-key="poId" style="width: 200px">
|
|
|
|
|
<el-option v-for="item in state.purchaseOrders" :key="item.poId" :label="item.poNo" :value="item" />
|
|
|
|
|
</el-select>
|
|
|
|
|
<el-button type="primary" @click="handleAssociatePurchaseOrder" style="margin-left: 10px" :disabled="!state.selectedPurchaseOrder">
|
|
|
|
|
关联
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="生产订单" v-if="state.showProductionOrderSelect">
|
|
|
|
|
<el-select v-model="state.selectedProductionOrder" placeholder="请选择生产订单" @change="handleProductionOrderSelect" value-key="productOrderId">
|
|
|
|
|
<el-option v-for="item in state.productionOrders" :key="item.productOrderId" :label="item.orderCode" :value="item" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<!-- <el-form-item label="审核人" prop="auditBy">
|
|
|
|
|
<el-select v-model="dialogForm.auditBy" placeholder="请选择审核人">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in userList"
|
|
|
|
|
:key="item.userId"
|
|
|
|
|
:label="item.userName"
|
|
|
|
|
:value="item.userName"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
<el-form-item label="仓库ID" prop="warehouseId">
|
|
|
|
|
<el-select v-model="dialogForm.warehouseId" placeholder="请选择所属仓库">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in baseStoreList"
|
|
|
|
|
:key="item.warehouseId"
|
|
|
|
|
:label="item.warehouseName"
|
|
|
|
|
:value="item.warehouseId"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="订单编号" prop="orderNo">
|
|
|
|
|
<el-input v-model="dialogForm.orderNo" placeholder="请输入订单编号" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="采购订单" v-if="state.showPurchaseOrderSelect">
|
|
|
|
|
<el-select v-model="state.selectedPurchaseOrder" placeholder="请选择采购订单" value-key="poId" style="width: 200px">
|
|
|
|
|
<el-option v-for="item in state.purchaseOrders" :key="item.poId" :label="item.poNo" :value="item" />
|
|
|
|
|
</el-select>
|
|
|
|
|
<el-button type="primary" @click="handleAssociatePurchaseOrder" style="margin-left: 10px" :disabled="!state.selectedPurchaseOrder">
|
|
|
|
|
关联
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="生产订单" v-if="state.showProductionOrderSelect">
|
|
|
|
|
<el-select v-model="state.selectedProductionOrder" placeholder="请选择生产订单" @change="handleProductionOrderSelect" value-key="productOrderId">
|
|
|
|
|
<el-option v-for="item in state.productionOrders" :key="item.productOrderId" :label="item.orderCode" :value="item" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<!-- <el-form-item label="审核人" prop="auditBy">
|
|
|
|
|
<el-select v-model="dialogForm.auditBy" placeholder="请选择审核人">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in userList"
|
|
|
|
|
:key="item.userId"
|
|
|
|
|
:label="item.userName"
|
|
|
|
|
:value="item.userName"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
<el-form-item label="仓库ID" prop="warehouseId">
|
|
|
|
|
<el-select v-model="dialogForm.warehouseId" placeholder="请选择所属仓库">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in baseStoreList"
|
|
|
|
|
:key="item.warehouseId"
|
|
|
|
|
:label="item.warehouseName"
|
|
|
|
|
:value="item.warehouseId"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="margin-top: 8px" shadow="never">
|
|
|
|
@ -359,16 +359,16 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="操作" fixed="right" width="200">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button
|
|
|
|
|
size="small"
|
|
|
|
|
type="danger"
|
|
|
|
|
@click="tableUDelete(scope.row)"
|
|
|
|
|
>
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button
|
|
|
|
|
size="small"
|
|
|
|
|
type="danger"
|
|
|
|
|
@click="tableUDelete(scope.row)"
|
|
|
|
|
>
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<!-- <el-table-column label="已包数量" prop="printedNum">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.printedNum" placeholder="请输入已包数量" />
|
|
|
|
@ -418,20 +418,20 @@
|
|
|
|
|
<el-form :model="parentTableInfoForm" label-width="120px">
|
|
|
|
|
<el-form-item label="物料大类" prop="materialCategoryId">
|
|
|
|
|
<el-select v-model="parentTableInfoForm.materialCategoryId" placeholder="请选择物料大类" :disabled="true">
|
|
|
|
|
<el-option v-for="item in mategoryOptions"
|
|
|
|
|
:key="item.materialCategoryId"
|
|
|
|
|
:label="item.materialCategoryName"
|
|
|
|
|
:value="item.materialCategoryId"
|
|
|
|
|
/>
|
|
|
|
|
<el-option v-for="item in mategoryOptions"
|
|
|
|
|
:key="item.materialCategoryId"
|
|
|
|
|
:label="item.materialCategoryName"
|
|
|
|
|
:value="item.materialCategoryId"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
|
<el-select v-model="parentTableInfoForm.instockType" placeholder="请选择工单类型(1采购订单,2生产订单,3手工,4系统生成)">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="dict in wms_instock_type"
|
|
|
|
|
:key="dict.value"
|
|
|
|
|
:label="dict.label"
|
|
|
|
|
:value="dict.value"
|
|
|
|
|
v-for="dict in wms_instock_type"
|
|
|
|
|
:key="dict.value"
|
|
|
|
|
:label="dict.label"
|
|
|
|
|
:value="dict.value"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
@ -535,11 +535,11 @@
|
|
|
|
|
<el-form-item label="已包数量" prop="printedNum">
|
|
|
|
|
<el-input v-model="childrenTableInfoForm.printedNum" placeholder="" :disabled="true"/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="分包数量" prop="printNum">
|
|
|
|
|
<el-input v-model="childrenTableInfoForm.printNum" placeholder="请输入分包数量" />
|
|
|
|
|
<el-form-item label="分包数量" prop="splitPackageCount">
|
|
|
|
|
<el-input-number v-model="childrenTableInfoForm.splitPackageCount" :min="1" :max="remainingQty" placeholder="请输入分包数量" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="打印数量" prop="barcodeNum">
|
|
|
|
|
<el-input v-model="childrenTableInfoForm.barcodeNum" placeholder="请输入打印条码数量" />
|
|
|
|
|
<el-form-item label="打印数量" prop="printCopies" v-if="childrenTableInfoForm.splitPackageCount === 1 || !childrenTableInfoForm.splitPackageCount">
|
|
|
|
|
<el-input-number v-model="childrenTableInfoForm.printCopies" :min="1" :max="20" placeholder="请输入打印条码数量" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<template #footer>
|
|
|
|
@ -572,7 +572,7 @@
|
|
|
|
|
<script setup name="Linkage" lang="ts">
|
|
|
|
|
import { listInstockOrder, getInstockOrder, delInstockOrder, addInstockOrder, updateInstockOrder, approveInstockOrder } from '@/api/wms/instockOrder';
|
|
|
|
|
import type { InstockOrderForm } from '@/api/wms/instockOrder/types';
|
|
|
|
|
import {onMounted, reactive, watch} from 'vue'
|
|
|
|
|
import {onMounted, reactive, watch, computed} from 'vue'
|
|
|
|
|
import {ElMessage, ElMessageBox} from 'element-plus'
|
|
|
|
|
import {getBaseWarehouseList} from "@/api/wms/baseWarehouse";
|
|
|
|
|
import {UserVO} from "@/api/system/user/types";
|
|
|
|
@ -667,10 +667,37 @@ listUser().then(e => {
|
|
|
|
|
})
|
|
|
|
|
/** 提交按钮 */
|
|
|
|
|
const submitForm = async() => {
|
|
|
|
|
await updateInstockDetail(childrenTableInfoForm.value);
|
|
|
|
|
getChildrenTable({instockId: partntTableSelectCell.value.instockId});
|
|
|
|
|
childrenTableInfoVisible.value = false;
|
|
|
|
|
if (!childrenTableInfoForm.value.instockQty || !childrenTableInfoForm.value.printedNum) {
|
|
|
|
|
ElMessage.error('物料数据未加载完成,请重试')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
const split = Number(childrenTableInfoForm.value.splitPackageCount) || 1
|
|
|
|
|
const copies = Number(childrenTableInfoForm.value.printCopies) || 1
|
|
|
|
|
const remaining = remainingQty.value
|
|
|
|
|
|
|
|
|
|
if (split > remaining) {
|
|
|
|
|
ElMessage.error('分包数量不能超过剩余物料量')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (split > 1) {
|
|
|
|
|
if (remaining % split !== 0) {
|
|
|
|
|
ElMessage.error('剩余物料量无法平均分包,请调整分包数量')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
// 对于分包>1,设置barcodeNum=1(每个包打印1份)
|
|
|
|
|
childrenTableInfoForm.value.printCopies = 1
|
|
|
|
|
} else {
|
|
|
|
|
if (copies < 1) {
|
|
|
|
|
ElMessage.error('重复打印数量至少为1')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await updateInstockDetail(childrenTableInfoForm.value)
|
|
|
|
|
getChildrenTable({instockId: partntTableSelectCell.value.instockId})
|
|
|
|
|
childrenTableInfoVisible.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let mategoryOptions = ref([]);
|
|
|
|
|
const getMaterialCategorySelect = async () => {
|
|
|
|
@ -846,8 +873,8 @@ const dialogSubmit = () => {
|
|
|
|
|
|
|
|
|
|
addInstockOrder(dialogForm.value).then(e => {
|
|
|
|
|
addInstockDetail(dialogtable.value.map(item => {
|
|
|
|
|
return {...item, instockCode: e.data.instockCode,instockId: e.data.instockId, materialCategoryId: e.data.materialCategoryId}
|
|
|
|
|
}
|
|
|
|
|
return {...item, instockCode: e.data.instockCode,instockId: e.data.instockId, materialCategoryId: e.data.materialCategoryId}
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
).then(v => {
|
|
|
|
|
dialogVisible.value = false
|
|
|
|
@ -865,14 +892,14 @@ const parentTableApproveSubmit = () =>{
|
|
|
|
|
if(e.data==0){
|
|
|
|
|
ElMessage({
|
|
|
|
|
type: 'error',
|
|
|
|
|
message: '请通知对应负责人审批',
|
|
|
|
|
})
|
|
|
|
|
message: '请通知对应负责人审批',
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if(e.data!=0){
|
|
|
|
|
ElMessage({
|
|
|
|
|
type: 'success',
|
|
|
|
|
message: '审批完成',
|
|
|
|
|
})
|
|
|
|
|
message: '审批完成',
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
parentTableApproveVisible.value = false
|
|
|
|
@ -893,25 +920,27 @@ const parentTableInfoSubmit = () =>{
|
|
|
|
|
// 子表格修改
|
|
|
|
|
const childrenTableUpdate = async (e) => {
|
|
|
|
|
childrenTableInfoForm.value = (await getInstockDetail(e.instockDetailId)).data
|
|
|
|
|
childrenTableInfoForm.value.splitPackageCount = 1
|
|
|
|
|
childrenTableInfoForm.value.printCopies = 1
|
|
|
|
|
childrenTableInfoVisible.value = true
|
|
|
|
|
}
|
|
|
|
|
// 子表格数据新增删除
|
|
|
|
|
const tableUDelete = (row) => {
|
|
|
|
|
|
|
|
|
|
ElMessageBox.confirm(
|
|
|
|
|
'确定要删除这些数据吗?',
|
|
|
|
|
'Warning',
|
|
|
|
|
{
|
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
|
type: 'warning',
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
.then(async () => {
|
|
|
|
|
const index = dialogtable.value.indexOf(row);
|
|
|
|
|
console.log(index)
|
|
|
|
|
dialogtable.value.splice(index,1)
|
|
|
|
|
})
|
|
|
|
|
ElMessageBox.confirm(
|
|
|
|
|
'确定要删除这些数据吗?',
|
|
|
|
|
'Warning',
|
|
|
|
|
{
|
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
|
type: 'warning',
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
.then(async () => {
|
|
|
|
|
const index = dialogtable.value.indexOf(row);
|
|
|
|
|
console.log(index)
|
|
|
|
|
dialogtable.value.splice(index,1)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1072,6 +1101,12 @@ const validateQty = (row, val) => {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 确保 computed 定义在脚本开头
|
|
|
|
|
const remainingQty = computed(() => {
|
|
|
|
|
const instock = Number(childrenTableInfoForm.value.instockQty) || 0
|
|
|
|
|
const printed = Number(childrenTableInfoForm.value.printedNum) || 0
|
|
|
|
|
return Math.max(0, instock - printed) // 添加 Math.max 防护负值
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
<style>
|
|
|
|
|