feat(wms): 优化入库相关功能,页面不再调用入库主表和子表两个接口,而是调用一次接口,将入库单子表作为主表字段插入,更兼容新增的即入即出功能

- 为 baseMaterialInfo 表格添加质检要求和是否高价值物料字段
- 更新 instockOrderCopy 和 wmsPurchaseOrderCopy 中的物料选择逻辑
- 在 allocateOrder添加调拨原因字段
master^2
zangch@mesnac.com 2 days ago
parent 089bc6bc57
commit 0cf72dd9a6

@ -76,6 +76,11 @@ export interface AllocateOrderVO {
*/ */
inMethod: string; inMethod: string;
/**
*
*/
allocateReason: string;
} }
export interface AllocateOrderForm extends BaseEntity { export interface AllocateOrderForm extends BaseEntity {
@ -156,6 +161,11 @@ export interface AllocateOrderForm extends BaseEntity {
*/ */
inMethod?: string; inMethod?: string;
/**
*
*/
allocateReason?: string;
} }
export interface AllocateOrderQuery extends PageQuery { export interface AllocateOrderQuery extends PageQuery {
@ -237,6 +247,11 @@ export interface AllocateOrderQuery extends PageQuery {
*/ */
inMethod?: string; inMethod?: string;
/**
*
*/
allocateReason?: string;
/** /**
* *
*/ */

@ -293,6 +293,17 @@ export interface BaseMaterialInfoVO {
*/ */
materialCategoryName: string; materialCategoryName: string;
/**
* (0,1)
*/
inspectionRequest: string;
/**
* (0,1)
*/
isHighValue: string;
} }
export interface BaseMaterialInfoForm extends BaseEntity { export interface BaseMaterialInfoForm extends BaseEntity {
@ -550,6 +561,16 @@ export interface BaseMaterialInfoForm extends BaseEntity {
*/ */
materialCategoryName: string; materialCategoryName: string;
/**
* (0,1)
*/
inspectionRequest?: string;
/**
* (0,1)
*/
isHighValue?: string;
} }
export interface BaseMaterialInfoQuery extends PageQuery { export interface BaseMaterialInfoQuery extends PageQuery {
@ -790,6 +811,17 @@ export interface BaseMaterialInfoQuery extends PageQuery {
*/ */
saleType?: string; saleType?: string;
/**
* (0,1)
*/
inspectionRequest?: string;
/**
* (0,1)
*/
isHighValue?: string;
/** /**
* *
*/ */

@ -1,3 +1,5 @@
import { InstockDetailForm } from '@/api/wms/instockDetail/types';
export interface InstockOrderVO { export interface InstockOrderVO {
/** /**
* *
@ -116,6 +118,11 @@ export interface InstockOrderForm extends BaseEntity {
*/ */
instockMethond?: string; instockMethond?: string;
/**
* WmsInstockOrderBo.detailListBo
*/
detailListBo?: InstockDetailForm[];
} }
export interface InstockOrderQuery extends PageQuery { export interface InstockOrderQuery extends PageQuery {

@ -83,7 +83,16 @@
<span>{{ formatDayHourMinutes(scope.row.maxParkingTime) }}</span> <span>{{ formatDayHourMinutes(scope.row.maxParkingTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="质检要求" align="center" prop="inspectionRequest" v-if="columns[10].visible">
<template #default="scope">
<dict-tag :options="inspection_request" :value="scope.row.auditStatus"/>
</template>
</el-table-column>
<el-table-column label="是否高价值物料" align="center" prop="isHighValue" v-if="columns[9].visible">
<template #default="scope">
<dict-tag :options="is_high_value" :value="scope.row.isHighValue"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[8].visible"/> <el-table-column label="备注" align="center" prop="remark" v-if="columns[8].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
@ -198,6 +207,33 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="质检要求" prop="inspectionRequest">
<el-select v-model="form.inspectionRequest" placeholder="请选择质检要求">
<el-option
v-for="item in inspection_request"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否高价值" prop="isHighValue" >
<el-select v-model="form.isHighValue" placeholder="请选择是否高价值">
<el-option
v-for="item in is_high_value"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20"> <el-row :gutter="20">
@ -229,7 +265,11 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { apply_flag, inner_tube_flag, const { apply_flag, inner_tube_flag,
always_flag, mes_accessories_flag, always_flag, mes_accessories_flag,
auto_outstock_flag, mes_batch_flag, active_flag, sale_type, deleted_flag, tire_markings, auto_outstock_flag, mes_batch_flag, active_flag, sale_type, deleted_flag, tire_markings,
material_classfication, mes_low_value_consumable_flag } = toRefs<any>(proxy?.useDict('apply_flag', 'inner_tube_flag', 'always_flag', 'mes_accessories_flag', 'auto_outstock_flag', 'mes_batch_flag', 'active_flag', 'sale_type', 'deleted_flag', 'tire_markings', 'material_classfication', 'mes_low_value_consumable_flag')); material_classfication, mes_low_value_consumable_flag,
is_high_value,inspection_request
} = toRefs<any>(proxy?.useDict('apply_flag', 'inner_tube_flag', 'always_flag', 'mes_accessories_flag', 'auto_outstock_flag', 'mes_batch_flag', 'active_flag', 'sale_type', 'deleted_flag', 'tire_markings', 'material_classfication', 'mes_low_value_consumable_flag',
'is_high_value', 'inspection_request'
));
const baseMaterialInfoList = ref<BaseMaterialInfoVO[]>([]); const baseMaterialInfoList = ref<BaseMaterialInfoVO[]>([]);
const buttonLoading = ref(false); const buttonLoading = ref(false);
@ -266,8 +306,10 @@ const columns = ref<FieldOption[]>([
{ key: 5, label: `物料规格`, visible: true }, { key: 5, label: `物料规格`, visible: true },
{ key: 6, label: `最小停放时间`, visible: false }, { key: 6, label: `最小停放时间`, visible: false },
{ key: 7, label: `最大停放时间`, visible: false }, { key: 7, label: `最大停放时间`, visible: true },
{ key: 8, label: `备注`, visible: false }, { key: 8, label: `备注`, visible: false },
{ key: 9, label: `"是否高价值`, visible: true },
{ key: 10, label: `质检要求`, visible: true },
]); ]);
const initFormData: BaseMaterialInfoForm = { const initFormData: BaseMaterialInfoForm = {
@ -329,6 +371,9 @@ const initFormData: BaseMaterialInfoForm = {
maxParkingHours:0, maxParkingHours:0,
maxParkingMinutes:0, maxParkingMinutes:0,
isHighValue: undefined,
inspectionRequest: undefined,
} }
const data = reactive<PageData<BaseMaterialInfoForm, BaseMaterialInfoQuery>>({ const data = reactive<PageData<BaseMaterialInfoForm, BaseMaterialInfoQuery>>({
form: {...initFormData}, form: {...initFormData},
@ -384,6 +429,10 @@ const data = reactive<PageData<BaseMaterialInfoForm, BaseMaterialInfoQuery>>({
weightLowerLimit: undefined, weightLowerLimit: undefined,
innerTubeFlag: undefined, innerTubeFlag: undefined,
saleType: undefined, saleType: undefined,
isHighValue: undefined,
inspectionRequest: undefined,
params: { params: {
approveDate: undefined, approveDate: undefined,
} }

@ -6,7 +6,7 @@
<el-input v-model="queryForm.instockCode" placeholder="输入调拨单号" clearable/> <el-input v-model="queryForm.instockCode" placeholder="输入调拨单号" clearable/>
</el-form-item> </el-form-item>
<el-form-item label="工单类型" prop="instockType"> <el-form-item label="工单类型" prop="instockType">
<el-select v-model="queryForm.instockType" placeholder="请选择工单类型(1采购订单,2生产订单,3手工,4系统生成)" clearable > <el-select v-model="queryForm.instockType" placeholder="请选择工单类型" clearable >
<el-option v-for="dict in wms_instock_type" :key="dict.value" :label="dict.label" :value="dict.value"/> <el-option v-for="dict in wms_instock_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -426,7 +426,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="工单类型" prop="instockType"> <el-form-item label="工单类型" prop="instockType">
<el-select v-model="parentTableInfoForm.instockType" placeholder="请选择工单类型(1采购订单,2生产订单,3手工,4系统生成)"> <el-select v-model="parentTableInfoForm.instockType" placeholder="请选择工单类型">
<el-option <el-option
v-for="dict in wms_instock_type" v-for="dict in wms_instock_type"
:key="dict.value" :key="dict.value"
@ -448,7 +448,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="仓库ID" prop="warehouseId"> <el-form-item label="仓库" prop="warehouseId">
<el-select v-model="parentTableInfoForm.warehouseCode" placeholder="请选择所属仓库" :disabled="true"> <el-select v-model="parentTableInfoForm.warehouseCode" placeholder="请选择所属仓库" :disabled="true">
<el-option <el-option
v-for="item in baseStoreList" v-for="item in baseStoreList"
@ -577,7 +577,7 @@ import {ElMessage, ElMessageBox} from 'element-plus'
import {getBaseWarehouseList} from "@/api/wms/baseWarehouse"; import {getBaseWarehouseList} from "@/api/wms/baseWarehouse";
import {UserVO} from "@/api/system/user/types"; import {UserVO} from "@/api/system/user/types";
import {listUser} from "@/api/system/user"; import {listUser} from "@/api/system/user";
import { listInstockDetail, getInstockDetail, delInstockDetail, addInstockDetail, updateInstockDetail, getMaterialListVo } from '@/api/wms/instockDetail'; import { listInstockDetail, getInstockDetail, delInstockDetail, updateInstockDetail, addInstockDetail } from '@/api/wms/instockDetail';
import { InstockDetailVO, InstockDetailQuery, InstockDetailForm } from '@/api/wms/instockDetail/types'; import { InstockDetailVO, InstockDetailQuery, InstockDetailForm } from '@/api/wms/instockDetail/types';
import { import {
getMaterialList, getInstockMaterialList getMaterialList, getInstockMaterialList
@ -887,18 +887,35 @@ const addDialogTableCell = () => {
// //
const dialogSubmit = () => { const dialogSubmit = () => {
//
const detailList = (dialogtable.value || [])
.map((item: any) => ({
materialId: item.materialId,
materialCode: item.materialCode,
materialName: item.materialName,
materialSpe: item.materialSpec, // materialSpec -> materialSpe
unitName: item.materialUnit, // materialUnit -> unitName
instockQty: item.instockQty,
codeYesNo: item.codeYesNo || '0',
materialCategoryId: dialogForm.value.materialCategoryId
}))
.filter(d => d.materialId && d.materialCode && Number(d.instockQty) > 0);
addInstockOrder(dialogForm.value).then(e => { if (!detailList.length) {
addInstockDetail(dialogtable.value.map(item => { ElMessage.error('请添加至少一条入库明细且数量>0');
return {...item, instockCode: e.data.instockCode,instockId: e.data.instockId, materialCategoryId: e.data.materialCategoryId} return;
} }
)
).then(v => {
dialogVisible.value = false
getParentTable()
})
}) const payload: InstockOrderForm = {
...dialogForm.value,
detailListBo: detailList
};
addInstockOrder(payload).then(() => {
ElMessage.success('保存成功');
dialogVisible.value = false;
getParentTable();
});
} }
/** /**
* 入库单审批 * 入库单审批
@ -1017,8 +1034,8 @@ const submitMaterialForm = () => {
dialogtable.value[currentRowIndex.value].materialId = selectedMaterial.value.materialId; dialogtable.value[currentRowIndex.value].materialId = selectedMaterial.value.materialId;
dialogtable.value[currentRowIndex.value].materialName = selectedMaterial.value.materialName; dialogtable.value[currentRowIndex.value].materialName = selectedMaterial.value.materialName;
dialogtable.value[currentRowIndex.value].materialCode = selectedMaterial.value.materialCode; dialogtable.value[currentRowIndex.value].materialCode = selectedMaterial.value.materialCode;
dialogtable.value[currentRowIndex.value].materialUnit = selectedMaterial.value.materialUnit; dialogtable.value[currentRowIndex.value].unitName = selectedMaterial.value.materialUnit;
dialogtable.value[currentRowIndex.value].materialSpec = selectedMaterial.value.materialSpec; dialogtable.value[currentRowIndex.value].materialSpe = selectedMaterial.value.materialSpec;
// //
} }
} }

@ -853,8 +853,8 @@ const submitMaterialForm = () => {
dialogtable.value[currentRowIndex.value].materialId = selectedMaterial.value.materialId; dialogtable.value[currentRowIndex.value].materialId = selectedMaterial.value.materialId;
dialogtable.value[currentRowIndex.value].materialName = selectedMaterial.value.materialName; dialogtable.value[currentRowIndex.value].materialName = selectedMaterial.value.materialName;
dialogtable.value[currentRowIndex.value].materialCode = selectedMaterial.value.materialCode; dialogtable.value[currentRowIndex.value].materialCode = selectedMaterial.value.materialCode;
dialogtable.value[currentRowIndex.value].materialUnit = selectedMaterial.value.materialUnit; dialogtable.value[currentRowIndex.value].unitName = selectedMaterial.value.materialUnit;
dialogtable.value[currentRowIndex.value].materialSpec = selectedMaterial.value.materialSpec; dialogtable.value[currentRowIndex.value].materialSpe = selectedMaterial.value.materialSpec;
// //
} }
} }

Loading…
Cancel
Save