<template>
|
<!-- 开启复盘 -->
|
<el-dialog v-model="dialogVisible" width="80%" @close="closeDialog">
|
<template #header>
|
<div style="color: #fff">
|
<span>开启复盘</span>
|
</div>
|
</template>
|
<div class="msi-content" style="margin-top: 10px">
|
<el-table :data="warehousOrderDetails" border style="width: 100%" row-key="setRowKey" ref="detailRef"
|
@selection-change="detailsCheckChange" max-height="480">
|
<el-table-column align="center" width="60" type="selection" />
|
<el-table-column label="序号" align="center" width="60" type="index" />
|
<el-table-column prop="orderNo" label="盘点单号" show-overflow-tooltip="" min-width="130px" />
|
<el-table-column prop="areaCode" label="库区编号" show-overflow-tooltip="" />
|
<el-table-column prop="placeCode" label="库位编号" show-overflow-tooltip="" />
|
<el-table-column prop="snCode" label="跟踪码" show-overflow-tooltip="" />
|
<el-table-column prop="batch" label="批次" show-overflow-tooltip="" />
|
<el-table-column prop="materialCode" label="物料编号" show-overflow-tooltip="" />
|
<el-table-column prop="materialName" label="物料名称" show-overflow-tooltip="" />
|
<el-table-column prop="containerCode" label="容器编号" show-overflow-tooltip="" />
|
<el-table-column prop="checkStatus" label="盘点状态" show-overflow-tooltip="" >
|
<template #default="scope">
|
<el-tag :type="getTypeStatus(1, scope.row.checkStatusName)"> {{ scope.row.checkStatusName }} </el-tag>
|
<!-- <el-tag>{{ getEnumDesc(scope.row.checkStatus, getEnumCheckStatusData_Index)}}</el-tag> -->
|
</template>
|
</el-table-column>
|
<el-table-column prop="checkResult" label="盘点结果" show-overflow-tooltip="" >
|
<template #default="scope">
|
{{ scope.row.checkResultName }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="checkCount" label="盘点次数" show-overflow-tooltip="" />
|
<el-table-column prop="checkOperatorClassify" label="盘点分类" show-overflow-tooltip="" >
|
<template #default="scope">
|
{{ scope.row.checkOperatorClassifyName }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="createTime" label="创建时间" width="130" show-overflow-tooltip="" />
|
<el-table-column prop="updateTime" label="修改时间" width="130" show-overflow-tooltip="" />
|
<el-table-column prop="createUserName" label="创建人" show-overflow-tooltip="" />
|
<el-table-column prop="updateUserName" label="修改人" show-overflow-tooltip="" />
|
|
<!-- <el-table-column label="数量" align="center" min-width="180">
|
<template #default="scope">
|
<el-input-number :precision="3" min="0" v-model="scope.row.deliveryQuantity" size="small" />
|
</template>
|
</el-table-column> -->
|
</el-table>
|
</div>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="dialogVisible = false">取消</el-button>
|
<el-button type="primary" :disabled="load" @click="confirm">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
<!-- 添加物料 -->
|
<el-dialog v-model="addMaterialVisible" title="添加物料详情" width="60%" @close="closeMaterialDialog">
|
<template #header>
|
<div style="color: #fff">
|
<span>添加物料详情</span>
|
</div>
|
</template>
|
|
<div class="msi-form" style="padding-top: 0px">
|
<el-form :model="materialForm" >
|
<el-row>
|
<el-col :span="8">
|
<el-form-item label="物料编号">
|
<el-input v-model="materialForm.Code" placeholder="请输入物料编号" clearable></el-input>
|
</el-form-item>
|
</el-col>
|
|
<!-- <el-col :span="8">
|
<el-form-item label="物料大类:">
|
<el-input v-model="materialForm.MaterialTypeId" placeholder="请输入物料大类" clearable></el-input>
|
</el-form-item>
|
</el-col> -->
|
|
<el-col :span="8">
|
<el-form-item label-width="20px">
|
<el-button type="primary" icon="el-icon-search" @click="getMaterialList">查询</el-button>
|
<!-- <el-button icon="el-icon-refresh-right" @click="resetMaterialForm">重置</el-button> -->
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<div class="msi-content" style="padding-top: 0; margin-top: 10px">
|
<el-table :data="materialList" border style="width: 100%" row-key="id" ref="materialRef"
|
@selection-change="materialSelectionChange" :max-height="480">
|
<el-table-column align="center" width="60" type="selection" />
|
<el-table-column label="序号" align="center" width="60" type="index" />
|
<el-table-column label="物料编号" prop="materialCode" align="center" min-width="140" show-overflow-tooltip />
|
<el-table-column label="物料名称" prop="materialName" align="center" min-width="140" show-overflow-tooltip />
|
|
<!-- <el-table-column label="物料描述" prop="describe" align="center" min-width="110" show-overflow-tooltip />
|
<el-table-column label="规格型号" prop="specificationModel" align="center" min-width="110" show-overflow-tooltip /> -->
|
<!-- <el-table-column label="物料大类" prop="category" align="center" min-width="110" show-overflow-tooltip />
|
<el-table-column label="物料小类" prop="materialTypeId" align="center" min-width="110" show-overflow-tooltip /> -->
|
<!-- <el-table-column label="尺寸(mm)" align="center" min-width="110" show-overflow-tooltip>
|
<template #default="scope">
|
{{
|
`${scope.row.long ? scope.row.long : 0}*${scope.row.width ? scope.row.width : 0
|
}*${scope.row.high ? scope.row.high : 0}`
|
}}
|
</template>
|
</el-table-column> -->
|
<!-- <el-table-column label="重量(kg)" prop="weight" align="center" min-width="110" show-overflow-tooltip /> -->
|
<!-- <el-table-column label="单位" prop="unit" align="center" min-width="110" show-overflow-tooltip /> -->
|
</el-table>
|
<Pagination :total="materialTotal" v-model:page="materialForm.Page" v-model:limit="materialForm.PageSize"
|
@pagination="getMaterialList" style="margin-top: 20px; text-align: center"></Pagination>
|
</div>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="addMaterialVisible = false">取消</el-button>
|
<el-button type="primary" @click="confirmAddMaterial">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
<!-- 单详情 -->
|
<el-drawer v-model="drawerVisible" direction="rtl" size="80%"
|
@close="handleDrawerClose">
|
<template #title>
|
<div class="slot_title">
|
<div class="title_orderNo">{{ title }}</div>
|
<div>订单详情</div>
|
</div>
|
</template>
|
|
<div class="detailBoxWrap">
|
<!-- 详情组件 -->
|
<!-- <open-details ref="propDetailRef"></open-details> -->
|
<div class="msi-form">
|
<el-form :model="detailForm">
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="物料编号">
|
<el-input v-model="detailForm.MaterialCode" clearable placeholder="请输入物料编号" />
|
</el-form-item>
|
</el-col>
|
<!--
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="库区编号">
|
<el-input v-model="queryParamsWmsInventoryCheckOrderDetails.areaCode" clearable="" placeholder="请输入库区编号"/>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="库位编号">
|
<el-input v-model="queryParamsWmsInventoryCheckOrderDetails.placeCode" clearable="" placeholder="请输入库位编号"/>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="跟踪码">
|
<el-input v-model="queryParamsWmsInventoryCheckOrderDetails.sNCode" clearable="" placeholder="请输入跟踪码"/>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="批次">
|
<el-input v-model="queryParamsWmsInventoryCheckOrderDetails.batch" clearable="" placeholder="请输入批次"/>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="物料编号">
|
<el-input v-model="queryParamsWmsInventoryCheckOrderDetails.materialCode" clearable="" placeholder="请输入物料编号"/>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="物料名称">
|
<el-input v-model="queryParamsWmsInventoryCheckOrderDetails.materialName" clearable="" placeholder="请输入物料名称"/>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="容器编号">
|
<el-input v-model="queryParamsWmsInventoryCheckOrderDetails.containerCode" clearable="" placeholder="请输入容器编号"/>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="盘点状态">
|
<el-select clearable="" v-model="queryParamsWmsInventoryCheckOrderDetails.checkStatus" placeholder="请选择盘点状态">
|
<el-option v-for="(item,index) in getEnumCheckStatusData_Index" :key="index" :value="item.value" :label="`${item.describe}`" />
|
|
</el-select>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="盘点结果">
|
<el-select clearable="" v-model="queryParamsWmsInventoryCheckOrderDetails.checkResult" placeholder="请选择盘点结果">
|
<el-option v-for="(item,index) in getEnumCheckResultData_Index" :key="index" :value="item.value" :label="`${item.describe}`" />
|
|
</el-select>
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsInventoryCheckOrderDetails">
|
<el-form-item label="盘点分类">
|
<el-select clearable="" v-model="queryParamsWmsInventoryCheckOrderDetails.checkOperatorClassify" placeholder="请选择盘点分类">
|
<el-option v-for="(item,index) in getEnumCheckOperatorClassifyData_Index" :key="index" :value="item.value" :label="`${item.describe}`" />
|
|
</el-select>
|
|
</el-form-item>
|
</el-col>
|
-->
|
<el-col :span="2">
|
<el-form-item label-width="20px">
|
<el-button type="primary" icon="el-icon-search" @click="getDetail">查询</el-button>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<div class="msi-content">
|
<el-table :data="drawerList" border striped @expand-change="handleExpandChange" :row-key="getRowKeys" :expand-row-keys="expands">
|
|
<!-- 子表 -->
|
<el-table-column fixed="left" type="expand">
|
<template #default="scope">
|
<br />
|
<el-table :data="scope.row.children" border style="width: 95%;margin: 0 auto;"
|
default-expand-all min-height="200" row-key="materialCode">
|
<el-table-column label="序号" align="center" width="60" type="index" />
|
<el-table-column prop="orderNo" label="盘点单号" min-width="120px" show-overflow-tooltip="" />
|
<el-table-column prop="areaCode" label="库区编号" show-overflow-tooltip="" />
|
<el-table-column prop="placeCode" label="库位编号" show-overflow-tooltip="" />
|
<el-table-column prop="snCode" label="跟踪码" show-overflow-tooltip="" />
|
<el-table-column prop="batch" label="批次" show-overflow-tooltip="" />
|
<el-table-column prop="materialCode" label="物料编号" show-overflow-tooltip="" />
|
<el-table-column prop="materialName" label="物料名称" show-overflow-tooltip="" />
|
<el-table-column prop="containerCode" label="容器编号" show-overflow-tooltip="" />
|
<el-table-column prop="quantity" label="库存数量" show-overflow-tooltip="" />
|
<el-table-column prop="checkQuantity" label="盘点数量" show-overflow-tooltip="" />
|
<el-table-column prop="checkStatus" label="盘点状态" show-overflow-tooltip="" >
|
<template #default="scope">
|
<el-tag :type="getTypeStatus(1, scope.row.checkStatusName)"> {{ scope.row.checkStatusName }} </el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="checkResult" label="盘点结果" show-overflow-tooltip="" >
|
<template #default="scope">
|
{{ scope.row.checkResultName }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="checkOperatorClassify" label="盘点分类" show-overflow-tooltip="" >
|
<template #default="scope">
|
{{ scope.row.checkOperatorClassifyName }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="createTime" label="创建时间" width="130" show-overflow-tooltip="" />
|
<el-table-column prop="updateTime" label="修改时间" width="130" show-overflow-tooltip="" />
|
<el-table-column prop="createUserName" label="创建人" show-overflow-tooltip="" />
|
<el-table-column prop="updateUserName" label="修改人" show-overflow-tooltip="" />
|
|
</el-table>
|
<br />
|
</template>
|
</el-table-column>
|
<el-table-column fixed="left" label="序号" align="center" width="60" type="index" />
|
<el-table-column fixed="left" prop="orderNo" label="盘点单号" show-overflow-tooltip="" min-width="160px" />
|
<el-table-column prop="areaCode" label="库区编号" show-overflow-tooltip="" />
|
<el-table-column prop="placeCode" label="库位编号" show-overflow-tooltip="" />
|
<el-table-column prop="snCode" label="跟踪码" min-width="250px" show-overflow-tooltip="" />
|
<el-table-column prop="batch" label="批次" min-width="160px" show-overflow-tooltip="" />
|
<el-table-column prop="materialCode" label="物料编号" min-width="140px" show-overflow-tooltip="" />
|
<el-table-column prop="materialName" label="物料名称" min-width="140px" show-overflow-tooltip="" />
|
<el-table-column prop="containerCode" label="容器编号" show-overflow-tooltip="" />
|
<el-table-column prop="checkStatus" label="盘点状态" show-overflow-tooltip="" >
|
<template #default="scope">
|
<el-tag :type="getTypeStatus(1, scope.row.checkStatusName)"> {{ scope.row.checkStatusName }} </el-tag>
|
<!-- <el-tag>{{ getEnumDesc(scope.row.checkStatus, getEnumCheckStatusData_Index)}}</el-tag> -->
|
</template>
|
</el-table-column>
|
<el-table-column prop="checkResult" label="盘点结果" show-overflow-tooltip="" >
|
<template #default="scope">
|
{{ scope.row.checkResultName }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="checkCount" label="盘点次数" show-overflow-tooltip="" />
|
<el-table-column prop="checkOperatorClassify" label="盘点分类" show-overflow-tooltip="" >
|
<template #default="scope">
|
{{ scope.row.checkOperatorClassifyName }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="createTime" label="创建时间" width="130" show-overflow-tooltip="" />
|
<el-table-column prop="updateTime" label="修改时间" width="130" show-overflow-tooltip="" />
|
<el-table-column prop="createUserName" label="创建人" show-overflow-tooltip="" />
|
<el-table-column prop="updateUserName" label="修改人" show-overflow-tooltip="" />
|
</el-table>
|
<Pagination :total="detailCount" v-model:page="detailForm.page" v-model:limit="detailForm.PageSize"
|
@pagination="getDetail" style="margin-top: 20px; text-align: center"></Pagination>
|
<div>
|
</div>
|
</div>
|
</div>
|
</el-drawer>
|
|
|
</template>
|
<script lang="ts" setup>
|
import Pagination from "/@/components/Pagination/index.vue";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ref, nextTick, computed, getCurrentInstance, watch, defineExpose, defineProps } from "vue";
|
import { pageWmsMaterial } from "/@/api/main/WmsBase/wmsMaterial";
|
import OpenDetails from '/@/components/openDetails/openDetails.vue';
|
import {
|
getTypeStatus
|
} from "/@/utils/formate";
|
import { listWmsInventoryCheckOrderDetails, pageWmsInventoryCheckOrderDetails } from "/@/api/main/WmsInventory/wmsInventoryCheckOrderDetails";
|
import { pageWmsInventoryCheckRecord } from "/@/api/main/WmsInventory/wmsInventoryCheckRecord";
|
import { getCheckPlanOpen } from "/@/api/main/Check/checkOrder";
|
const emits = defineEmits(['getTabelData']);
|
const props = defineProps({
|
titleAuthor: {
|
type: Number,
|
required: true
|
},
|
hexiao: {
|
type: Number,
|
default: 1,
|
required: true
|
},
|
})
|
|
// 是否显示核销按钮
|
const hexiao = computed(() => props.hexiao)
|
const loading = ref(false);
|
|
const { proxy }: any = getCurrentInstance(); // 访问实例上下文 proxy同时支持开发 线上环境
|
//查询
|
const formModel = ref({
|
MaterialCode: "",
|
WareMaterialName: "",
|
});
|
|
//重置搜索
|
const resetForm = () => {
|
formModel.value = {
|
MaterialCode: "",
|
WareMaterialName: "",
|
};
|
};
|
// -----------------删除、导出操作--------------------------
|
//选中的行
|
const checkRows = ref<{ id: number }[]>([]);
|
// 选择
|
const handleSelectionChange = (val: any) => {
|
checkRows.value = val;
|
};
|
|
// -------------------获取PO单下物料详情-----------------------------------
|
//入库单下物料详情请求
|
const detailForm = ref({
|
MaterialCode: "",
|
OrderId: "",
|
page: 1,
|
PageSize: 10
|
});
|
let title = ref("");
|
|
// 物料详情抽屉
|
const drawerVisible = ref(false);
|
const drawerType = ref("drawerAll");
|
// const
|
//单号
|
const purchaseNo = ref("");
|
|
//打开抽屉
|
const openDrawer = (type: number, scope: any = {},entozhExcell?:any) => {
|
debugger
|
detailForm.value.page = 1; //bug:点编辑-再点详情
|
detailForm.value.PageSize = 10; //bug:点编辑-再点详情
|
if(scope.orderNo){
|
title.value = `${scope.orderNo}`;
|
}
|
drawerType.value = "drawerAll";
|
//当前入库单号id
|
detailForm.value.OrderId = scope.id;
|
//入库单
|
purchaseNo.value = scope.purchaseNo;
|
//获取物料列表
|
getDetail();
|
drawerVisible.value = true;
|
// 根据状态转中文 保留3位小数
|
let scopetrans = JSON.parse(JSON.stringify(scope))
|
// scopetrans.totalQuantity = Number(scopetrans.totalQuantity).toFixed(3)
|
scopetrans.isAudit = scopetrans.isAudit?"是":"否";
|
nextTick(() => {
|
proxy.$refs['propDetailRef'].openADialog(scopetrans, entozhExcell);
|
});
|
|
};
|
//入库单详情列表
|
const deltailList = ref<any[]>([]);
|
//弹出层数据
|
const drawerList = ref<any[]>([]);
|
|
//入库单详情列表数据条数
|
const detailCount = ref(0);
|
//关闭抽屉
|
const handleDrawerClose = () => {
|
detailForm.value = {
|
MaterialCode: "",
|
OrderId: "",
|
page: 1,
|
PageSize: 10
|
};
|
deltailList.value = [];
|
detailCount.value = 0;
|
drawerList.value = [];
|
};
|
|
|
//获取入库单下物料详情
|
const loadingWmsInventoryCheckOrderDetails = ref(false);
|
const disabled_btnWmsInventoryCheckOrderDetails = ref(false);
|
|
const getDetail = async (callback?: any) => {
|
loadingWmsInventoryCheckOrderDetails.value = true;
|
disabled_btnWmsInventoryCheckOrderDetails.value = true;
|
var res = await pageWmsInventoryCheckOrderDetails({
|
...detailForm.value
|
});
|
drawerList.value =[];
|
|
if(res.data.type=="success"){
|
setTimeout(() => {
|
drawerList.value = res.data.result?.items ?? [];
|
detailCount.value = res.data.result?.total;
|
|
}, (100));
|
}
|
loadingWmsInventoryCheckOrderDetails.value = false;
|
disabled_btnWmsInventoryCheckOrderDetails.value = false;
|
|
};
|
|
|
|
//明细-二级
|
const getRowKeys = (row:any) =>{
|
return row.id;
|
}
|
const expands = ref();
|
|
//明细-二级
|
const handleExpandChange = async (row: any, rows: any) => {
|
// debugger
|
if (row.children) {
|
return
|
}
|
loadingWmsInventoryCheckOrderDetails.value = true;
|
disabled_btnWmsInventoryCheckOrderDetails.value = true;
|
var {page,PageSize,...rest} = detailForm.value
|
var res = await pageWmsInventoryCheckRecord({
|
...rest,
|
page:1,
|
snCode:row.snCode,
|
PageSize:10000,
|
OrderNo:row.orderNo,
|
});
|
if(res.data.type=="success"){
|
row.children = res.data.result?.items ?? [];
|
// detailCount.value = res.data.result?.total;
|
}
|
loadingWmsInventoryCheckOrderDetails.value = false;
|
disabled_btnWmsInventoryCheckOrderDetails.value = false;
|
|
}
|
|
|
// ----------------新增、编辑-------------------------------
|
//窗口类型
|
const dialogType = ref("add");
|
const dialogVisible = ref(false);
|
//添加编辑表单ref
|
const dialogRef = ref();
|
//添加/编辑参数
|
let addForm = ref({
|
createdTime: "",
|
});
|
//rules
|
const formRules = {};
|
const orderId = ref("");
|
//打开新增、编辑窗口
|
const openDialog = async (type: number, scope: any = {}) => {
|
if (type == 1) {
|
dialogType.value = "add";
|
} else {
|
//开启复盘
|
dialogType.value = "edit";
|
if(!scope[0].id){
|
ElMessage.warning("ID传入错误");
|
return
|
}
|
orderId.value = scope[0].id;
|
var res = await listWmsInventoryCheckOrderDetails({
|
"orderId":scope[0].id || ""
|
});
|
if(res.data && res.data.result){
|
var arr = res.data.result.filter((v:any) => v.checkOperatorClassifyName=="初盘" && v.checkResultName!="盘平" )
|
warehousOrderDetails.value = arr ?? [];
|
}else{
|
warehousOrderDetails.value = [];
|
}
|
}
|
dialogVisible.value = true;
|
//清除选中项
|
nextTick(() => {
|
if(dialogRef.value){
|
dialogRef.value.clearValidate();
|
}
|
});
|
};
|
|
//物料详情的table ref
|
const detailRef = ref();
|
const setRowKey = (row: any) => {
|
return row.id + row.ebelp;
|
};
|
//关闭窗口
|
const closeDialog = () => {
|
load.value = false;
|
addForm.value = {
|
createdTime: "",
|
};
|
warehousOrderDetails.value = [];
|
checkedDetails.value = [];
|
deltailList.value = [];
|
detailCount.value = 0;
|
detailRef.value.clearSelection();
|
};
|
|
//添加编辑窗口物料列表
|
const warehousOrderDetails = ref<any[]>([]);
|
|
//物料详情列表选中的物料
|
const checkedDetails = ref<any[]>([]);
|
|
//物料详情列表中勾选事件
|
const detailsCheckChange = (val: any) => {
|
checkedDetails.value = val;
|
};
|
|
//删除选中的物料详情
|
const delCheckedDetails = () => {
|
ElMessageBox.confirm("是否确认删除?", "提示", {
|
confirmButtonText: "确认",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
let arr =[];
|
if(checkedDetails.value[0].diRelationID){
|
checkedDetails.value.forEach((item) => {
|
console.log(item)
|
let index = warehousOrderDetails.value.findIndex((detail) => detail.materialCode== item.materialCode && detail.diRelationID == item.diRelationID);
|
if(index> -1){
|
warehousOrderDetails.value.splice(index, 1);
|
}
|
});
|
}else{
|
checkedDetails.value.forEach((item) => {
|
let index = warehousOrderDetails.value.findIndex(
|
(detail) => detail.code == item.code && detail.ebelp == item.ebelp
|
);
|
warehousOrderDetails.value.splice(index, 1);
|
});
|
}
|
arr = warehousOrderDetails.value
|
warehousOrderDetails.value = [];
|
//bug 相同物料 不同Bom
|
nextTick(() => {
|
warehousOrderDetails.value = arr;
|
checkedDetails.value = [];
|
detailRef.value.clearSelection();
|
});
|
})
|
.catch(() => ElMessage.info("已取消删除"));
|
};
|
const load = ref(false);
|
const confirm = async () => {
|
if(checkedDetails.value.length<=0){
|
ElMessage.warning("请选择至少一个物料!");
|
return
|
}
|
const handleArr: number[] = [];
|
checkedDetails.value.forEach((item) => {
|
handleArr.push(item.id);
|
});
|
if(handleArr.length<=0){
|
ElMessage.warning("请选择至少一个物料!");
|
return
|
}
|
load.value=true;
|
let res = await getCheckPlanOpen({
|
DetailsId: handleArr,
|
checkOperatorClassify:2, //复盘
|
orderId: orderId.value
|
});
|
if (res.data.type == 'success') {
|
ElMessage.success("开启复盘成功");
|
dialogVisible.value = false;
|
emits("getTabelData");
|
}
|
load.value=false;
|
};
|
// -----------------添加物料操作-------------------------
|
//物料基础数据窗口
|
const addMaterialVisible = ref(false);
|
|
//物料基础数据列表
|
const materialList = ref([]);
|
|
//物料基础数据条数
|
const materialTotal = ref(0);
|
|
//物料基础数据form
|
const materialForm = ref({
|
MaterialTypeId: "",
|
Code: "",
|
// MaterialType: 1,
|
Page: 1,
|
PageSize: 10
|
});
|
|
|
//获取物料基础列表
|
const getMaterialList = async () => {
|
|
loading.value = true;
|
// var res = await pageWmsMaterial(Object.assign(queryParams.value, tableParams.value));
|
var res = await pageWmsMaterial(Object.assign(materialForm.value));
|
|
materialList.value = res.data.result?.items ?? [];
|
//tableParams.value.total = res.data.result?.total;
|
materialTotal.value = res.data.result?.total;
|
loading.value = false;
|
|
};
|
|
//重置物料
|
const resetMaterialForm = () => {
|
materialForm.value = {
|
MaterialTypeId: "",
|
Code: "",
|
Page: 1,
|
// MaterialType: 1,
|
PageSize: 10
|
};
|
getMaterialList();
|
};
|
|
//选中的基础物料数据
|
const checkedMaterial = ref<any[]>([]);
|
|
//物料基础数据勾选
|
const materialSelectionChange = (val: any) => {
|
checkedMaterial.value = val;
|
};
|
|
//打开新增物料窗口
|
const addMaterialDialog = () => {
|
// if ( addForm.value.freeOrderType && isShowBomBtn.value ) {
|
// ElMessage.warning("免费件类型是PR2,只能新增DI维护的物料!");
|
// return;
|
// }
|
getMaterialList();
|
addMaterialVisible.value = true;
|
};
|
|
//基础物料table的ref对象
|
const materialRef = ref();
|
|
//确认添加材料
|
const confirmAddMaterial = () => {
|
//物料列表没数据,直接添加
|
if (warehousOrderDetails.value.length == 0) {
|
|
// 自动给行号复值
|
checkedMaterial.value.forEach((item, index) => {
|
if (!item.ebelp) {
|
item.ebelp = index + 1 + warehousOrderDetails.value.length
|
}
|
})
|
|
warehousOrderDetails.value.push(...checkedMaterial.value);
|
} else {
|
for (let i = 0; i < checkedMaterial.value.length; i++) {
|
let idx = warehousOrderDetails.value.findIndex(
|
(item: {
|
ebelp: any; code: any
|
}) =>
|
item.code == checkedMaterial.value[i].code &&
|
item.ebelp == checkedMaterial.value[i].ebelp
|
);
|
if (idx > -1) {
|
return ElMessage.warning(
|
`物料编号${checkedMaterial.value[i].code},行号:${checkedMaterial.value[i].ebelp || ""
|
}在物料列表中已存在,请去除勾选`
|
);
|
}
|
}
|
|
// 自动给行号复值
|
checkedMaterial.value.forEach((item, index) => {
|
if (!item.ebelp) {
|
item.ebelp = index + 1 + warehousOrderDetails.value.length
|
}
|
})
|
warehousOrderDetails.value.push(...checkedMaterial.value);
|
}
|
|
addMaterialVisible.value = false;
|
};
|
|
//关闭新增物料窗口
|
const closeMaterialDialog = () => {
|
materialForm.value = {
|
MaterialTypeId: "",
|
Code: "",
|
Page: 1,
|
// MaterialType: 1,
|
PageSize: 10
|
};
|
materialList.value = [];
|
checkedMaterial.value = [];
|
materialRef.value.clearSelection();
|
};
|
|
|
// 暴露方法
|
defineExpose({ openDialog ,openDrawer});
|
</script>
|
<style lang="less" scoped>
|
.detailBoxWrap{
|
margin: 10px;
|
}
|
.msi-form{
|
margin-top: 10px;
|
}
|
.msi-form{
|
margin-bottom: 10px
|
}
|
|
.slot_title {
|
display: flex;
|
align-items: center;
|
|
// margin-left: 20px;
|
.title_orderNo {
|
font-size: 18px;
|
color: #F18201;
|
font-weight: bold;
|
margin-right: 5px;
|
}
|
}
|
</style>
|