<template>
|
<!-- 添加、编辑 -->
|
<el-dialog v-model="dialogVisible" width="80%" @close="closeDialog">
|
<template #header>
|
<div style="color: #fff">
|
<span>{{ dialogType == 'add' ? '添加' : '编辑' }}</span>
|
</div>
|
</template>
|
|
<!-- <el-form :model="addForm" label-width="125px" ref="dialogRef" :rules="formRules"> -->
|
<el-form :model="addForm" ref="dialogRef" labelWidth="90">
|
<el-row>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="dialogType == 'add'">
|
<el-form-item label="订单类型:" prop="materialType">
|
<el-select v-model="addForm.materialType" placeholder="请选择订单类型" @change="changDdlx"
|
style="width: 100%">
|
<el-option v-for="item in statusEnums" :key="item.value" :label="item.title" :value="item.value" />
|
</el-select>
|
</el-form-item>
|
</el-col>
|
|
<!-- 编辑下拉读取所有单据类型 -->
|
<el-col :span="8" v-if="dialogType == 'edit'">
|
<el-form-item label="订单类型:" prop="materialType">
|
<el-select v-model="addForm.materialType" disabled placeholder="请选择订单类型" style="width: 100%">
|
<el-option v-for="item in outInTypeEnum" :key="item.value" :label="item.title" :value="item.value" />
|
</el-select>
|
</el-form-item>
|
</el-col>
|
|
<!-- 暂时注释 -->
|
<el-col :span="8" v-if="addForm.materialType == 5">
|
<el-form-item label="免费件类型:" prop="freeOrderType">
|
<el-select v-model="addForm.freeOrderType" placeholder="请选择免费件类型" style="width: 100%"
|
@change="changMfj" :disabled="dialogType == 'edit'">
|
<el-option v-for="item in statusEnumsMFj" :key="item.value" :label="item.title" :value="item.value" />
|
</el-select>
|
</el-form-item>
|
</el-col>
|
|
<el-col :span="8">
|
<el-form-item label="单号:" prop="purchaseNo">
|
<el-input v-model="addForm.purchaseNo" :disabled="dialogType == 'edit'" clearable placeholder="请输入单号" />
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="addForm.materialType != 22">
|
<el-form-item label="供应商代码:" prop="supplierCode" required>
|
<el-select v-model="addForm.supplierCode" filterable placeholder="请选择供应商代码" style="width: 100%;">
|
<el-option v-for="item in clientEnum" :key="item.code" :label="item.code" :value="item.code" />
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8" v-if="addForm.materialType != 22">
|
<el-form-item label="供应商名称:">
|
<el-input v-model="companyName" disabled />
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="备注:">
|
<el-input v-model="addForm.remark" clearable placeholder="请输入备注" />
|
</el-form-item>
|
</el-col>
|
|
<el-col :span="8">
|
<el-form-item label="预计到达时间:" prop="EstimatedDate">
|
<el-date-picker v-model="addForm.EstimatedDate" type="datetime" :disabled-date="disabledDate"
|
value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" placeholder="请选择预计到达时间"
|
style="width: 100%;" />
|
</el-form-item>
|
</el-col>
|
|
<!-- 给免费件用 -->
|
<template v-if="addForm.materialType == 5">
|
<!-- <el-col :span="8" v-if="isShowBomBtn">
|
<el-form-item label="DI号:" prop="dI_NO">
|
<el-input v-model="addForm.dI_NO" clearable placeholder="请输入DI号" />
|
</el-form-item>
|
</el-col> -->
|
|
<el-col :span="8" v-if="addForm.freeOrderType && !isShowBomBtn">
|
<el-form-item label="SJ NO.:">
|
<el-input v-model="addForm.sJ_NO" clearable placeholder="请输入SJ NO." />
|
</el-form-item>
|
</el-col>
|
|
<el-col :span="8" v-if="addForm.freeOrderType && !isShowBomBtn">
|
<el-form-item label="机床型号:" prop="machineToolTypeName">
|
<el-input v-model="addForm.machineToolTypeName" clearable placeholder="请输入机床型号" />
|
</el-form-item>
|
</el-col>
|
|
<el-col :span="8" v-if="addForm.freeOrderType && !isShowBomBtn">
|
<el-form-item label="机床序列号:">
|
<el-input v-model="addForm.machineToolNo" clearable placeholder="请输入机床序列号" />
|
</el-form-item>
|
</el-col>
|
|
</template>
|
|
</el-row>
|
</el-form>
|
<div class="msi-content" style="margin-top: 10px">
|
<div class="header" style="margin-bottom: 10px">
|
<div>
|
<el-button type="primary" icon="el-icon-plus" @click="addMaterialDialog">新增物料</el-button>
|
<!-- <el-button
|
type="primary"
|
icon="el-icon-plus"
|
@click="bomIssue"
|
v-if="isShowBomBtn">新增BOM</el-button> -->
|
|
<el-button type="primary" icon="el-icon-plus" @click="diwhIssue" v-if="isShowBomBtn">新增DI维护</el-button>
|
|
|
<el-button icon="el-icon-delete" plain :disabled="checkedDetails.length == 0"
|
@click="delCheckedDetails">删除选中行</el-button>
|
|
</div>
|
</div>
|
|
<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 label="物料编号" min-width="140" prop="materialCode" align="center" show-overflow-tooltip />
|
<el-table-column label="物料名称" min-width="140" prop="materialName" align="center" show-overflow-tooltip />
|
<!-- 免费件用 -->
|
<el-table-column v-if="isShowBomBtn" min-width="160" label="DI编号" prop="detailsDI_NO" align="center"
|
show-overflow-tooltip />
|
|
<!-- <el-table-column label="diRelationID" v-if="isShowBomBtn" prop="diRelationID" align="center" min-width="110" /> -->
|
|
|
<el-table-column label="BOM编号" v-if="isShowBomBtn" prop="boM_NO" align="center" min-width="110" />
|
|
<el-table-column label="机床型号" v-if="isShowBomBtn" prop="machineToolTypeName" align="center" min-width="110" />
|
<el-table-column label="机床号" v-if="isShowBomBtn" prop="machineToolNo" align="center" min-width="110" />
|
<!-- clientCode -->
|
<el-table-column label="客户编号" v-if="isShowBomBtn" prop="diCustomCode" align="center" min-width="110" />
|
<el-table-column label="客户中文名称" v-if="isShowBomBtn" prop="diCustomChinaName" align="center" min-width="110" />
|
|
|
|
|
<!-- <el-table-column v-if="isShowBomBtn" min-width="160" label="BOM编号" prop="boM_NO" align="center" show-overflow-tooltip />
|
|
<el-table-column
|
label="套数"
|
v-if="isShowBomBtn"
|
align="center"
|
show-overflow-tooltip
|
>
|
<template #default="scope">
|
<span v-if="scope.row.bomConverNumber">
|
{{ Number( scope.row.bomConverNumber).toFixed(3) }}
|
</span> -->
|
<!-- <span v-if="scope.row.dantaoNum">
|
{{ Number( (scope.row.deliveryQuantity )/ scope.row.dantaoNum).toFixed(3)}}
|
</span> -->
|
<!-- </template>
|
</el-table-column>
|
<el-table-column
|
label="单套数"
|
v-if="isShowBomBtn"
|
prop="dantaoNum"
|
:formatter="formatDecimalData"
|
align="center"
|
show-overflow-tooltip
|
>
|
<template #default="scope">
|
<span v-if="scope.row.boM_NO && scope.row.bomConverNumber">
|
{{ Number( (scope.row.deliveryQuantity ) / scope.row.bomConverNumber).toFixed(0)}}
|
</span>
|
</template>
|
</el-table-column> -->
|
|
<el-table-column label="行号" prop="ebelp" align="center" min-width="120">
|
<template #default="scope">
|
<el-input v-model.trim="scope.row.ebelp" clearable min-width="150" placeholder="请输入行号" />
|
</template>
|
</el-table-column>
|
<!-- :disabled="!!scope.row.boM_NO" -->
|
<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="warehousOrderDetails.length == 0" @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" :title="`${detailForm.PurchaseOrderId}订单详情`" 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.WareMaterialCode" clearable placeholder="请输入物料编号" />
|
</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">
|
<!-- <p style="margin-bottom: 10px">物料明细</p> -->
|
<el-table :data="drawerList" border striped :max-height="480">
|
<el-table-column fixed="left" label="序号" align="center" width="60" type="index" />
|
<el-table-column fixed="left" label="物料编号" prop="wareMaterialCode" align="center" min-width="140" show-overflow-tooltip />
|
<el-table-column label="物料名称" prop="name" align="center" min-width="140" show-overflow-tooltip />
|
<el-table-column label="数量" :formatter="formatDecimalData" prop="deliveryQuantity" align="right"
|
min-width="110" />
|
<el-table-column label="已收数" :formatter="formatDecimalData" prop="goodsQuantity" align="right"
|
min-width="110" />
|
<el-table-column label="缺货数" :formatter="formatDecimalData" prop="surplusQuantity" align="right"
|
min-width="110" />
|
<el-table-column label="已核销数" v-if="hexiao == 1" :formatter="formatDecimalData" prop="writeOffQuantity" align="right"
|
min-width="120" />
|
|
<!-- <el-table-column label="免费件出库需求数" v-if="titleAuthor !=2" :formatter="formatDecimalData" prop="hasCreateFreeOrderQuantity" min-width="140"
|
align="right" show-overflow-tooltip />
|
<el-table-column label="免费件发货数" v-if="titleAuthor !=2" :formatter="formatDecimalData" prop="hasCreateFreeOrderDeliveryQuantity" min-width="120"
|
align="right" show-overflow-tooltip /> -->
|
|
<el-table-column label="状态" prop="signStatus" min-width="110" align="center" show-overflow-tooltip>
|
<template #default="scope">
|
{{ scope.row.signStatus }}
|
<!-- <el-tag :type="getTypeStatus(scope.row.signStatus, scope.row.signStatus)">
|
{{ scope.row.signStatus }}</el-tag> -->
|
</template>
|
</el-table-column>
|
<el-table-column label="行号" prop="ebelp" align="center" min-width="110" show-overflow-tooltip />
|
<el-table-column label="SAP位置" prop="sap_Location" min-width="120" align="center" show-overflow-tooltip />
|
<el-table-column label="BOM编号" prop="boM_NO" v-if="titleAuthor != 2" min-width="120" align="center"
|
show-overflow-tooltip />
|
<el-table-column label="套数" prop="bomConverNumber" v-if="titleAuthor != 2" min-width="120" align="center"
|
show-overflow-tooltip />
|
<el-table-column label="DI编号" prop="detailsDI_NO" v-if="titleAuthor != 2" min-width="120" align="center"
|
show-overflow-tooltip />
|
<el-table-column label="机床序列号" prop="detailsMachineToolNo" v-if="titleAuthor != 2" min-width="120" align="center"
|
show-overflow-tooltip />
|
<el-table-column label="机床型号" prop="detailsMachineToolTypeName" v-if="titleAuthor != 2" min-width="120"
|
align="center" show-overflow-tooltip />
|
|
<el-table-column label="客户编号" v-if="titleAuthor != 2" prop="diCustomCode" min-width="110" align="center"
|
show-overflow-tooltip />
|
<el-table-column label="客户中文名称" v-if="titleAuthor != 2" prop="diCustomChinaName" min-width="110" align="center"
|
show-overflow-tooltip />
|
|
|
|
|
|
</el-table>
|
<Pagination :total="detailCount" v-model:page="detailForm.PageNo" v-model:limit="detailForm.PageSize"
|
@pagination="getDetail" style="margin-top: 20px; text-align: center"></Pagination>
|
|
<div>
|
|
|
</div>
|
</div>
|
</div>
|
</el-drawer>
|
|
<el-dialog v-model="outVisible2" title="SPA获取" width="20%" @close="closeOutDialog2">
|
<el-form :model="outerForm2" label-width="120px">
|
<el-row style="font-size: 16px">
|
<el-col :span="23">
|
<el-form-item label="单号:" required>
|
<el-input v-model="outerForm2.purchaseNo" clearable placeholder="请输入单号" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="outVisible2 = false">取消</el-button>
|
<el-button type="primary" @click="getSapOrderPO">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
|
</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 {
|
formatDecimalData,
|
} from "/@/utils/formate";
|
import { expandMore } from "/@/hooks/expandMore";
|
import cache from "/@/utils/cache";
|
import { pageWmsMaterial } from "/@/api/main/WmsBase/wmsMaterial";
|
import OpenDetails from '/@/components/openDetails/openDetails.vue';
|
const props = defineProps({
|
titleAuthor: {
|
type: Number,
|
required: true
|
},
|
hexiao: {
|
type: Number,
|
default: 1,
|
required: true
|
},
|
})
|
//控制订单类型 - 下拉菜单
|
const titleAuthor = computed(() => props.titleAuthor)
|
// 是否显示核销按钮
|
const hexiao = computed(() => props.hexiao)
|
const loading = ref(false);
|
|
// 登录用户id
|
// const LoginUserID = computed(() => store.state.login.userInfo.id || localCache.getCache("LoginUserID"))
|
|
// const EnumWriteOffState = computed(
|
// () => store.state.login.enums.enumWriteOffState
|
// );
|
|
let itemBtnArr = ['批量删除', '编辑', '新增'];
|
const boolEnum = ref([
|
{
|
title: "是",
|
value: true
|
},
|
{
|
title: "否",
|
value: false
|
}
|
]);
|
|
const { proxy }: any = getCurrentInstance(); // 访问实例上下文 proxy同时支持开发 线上环境
|
// form表单展开
|
|
const orderType = ref('');
|
const orderDoRuType = ref(); // 用于导入的变量
|
const itemBtn = ref(1);
|
// 控制bom物料权限
|
const isShowBomBtn = ref(0);
|
|
// 禁止之前的日期
|
const disabledDate = (time: Date) => {
|
return (time.getTime() + 3600 * 1000 * 24) < Date.now()
|
}
|
// 上传窗口
|
const uploadVisible = ref(false);
|
//打开导入窗口
|
const openUploadDialog = (param: any) => {
|
orderDoRuType.value = param;
|
uploadVisible.value = true;
|
};
|
//关闭窗口
|
const closeUploadDialog = () => {
|
getTabelData();
|
};
|
//sap获取
|
const getSapOrder = () => {
|
ElMessageBox.confirm("是否确认获取更新?", "提示", {
|
confirmButtonText: "确认",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
// getSapRkPurchase().then((res) => {
|
// if (res.code == 200) {
|
// ElMessage.success("已开始重新获取,请稍后查看结果!");
|
// } else {
|
// ElMessage.error(
|
// `sap获取失败${res.code}:${JSON.stringify(res.message)}`
|
// );
|
// }
|
// })
|
})
|
};
|
|
//------------sap获取PO单
|
const outVisible2 = ref(false);
|
const outerForm2 = ref({
|
purchaseNo: ""
|
});
|
const getSapOrderPO = (param?: number) => {
|
if (param && param == 1) {
|
outVisible2.value = true;
|
return;
|
}
|
if (outerForm2.value.purchaseNo == "") {
|
ElMessage.warning("请输入单号");
|
return;
|
}
|
// getSapPurchasePO({
|
// purchaseNo: outerForm2.value.purchaseNo
|
// })
|
// .then((res) => {
|
// if (res.code == 200) {
|
// ElMessage.success("SAP获取成功");
|
// outVisible2.value = false;
|
// } else {
|
// ElMessage.error(
|
// `sap获取失败${res.code}:${JSON.stringify(res.message)}`
|
// );
|
// }
|
// })
|
// .catch((err) => ElMessage.error(err));
|
};
|
//关闭出库窗口的回调
|
const closeOutDialog2 = () => {
|
outerForm2.value.purchaseNo = "";
|
};
|
|
//------------sap获取PO单
|
|
// --------------------PO单列表-----------------------------------
|
//查询
|
const formModel = ref({
|
WareMaterialCode: "",
|
WareMaterialName: "",
|
PurchaseNo: "",
|
CreatedUserName: "",
|
CreatedTimeBegin: "",
|
CreatedTimeEnd: "",
|
CreateDate: [],
|
IssueTimeBegin: "",
|
IssueTimeEnd: "",
|
IssueDate: [],
|
MaterialTypeStaus: "",
|
SourceBy: "",
|
WriteOffState: "",
|
signStatus: "",
|
status: '',
|
freeOrderType: "",
|
IsQueryAll: false, //是否显示全部数据
|
// LoginUserID: LoginUserID, //用户id
|
OrderMenuType: "",//判断是哪个菜单入库
|
Page: 1,
|
PageSize: 10,
|
poApprovalStatus:"",
|
keyCode:"",
|
IsDisable:''//是否作废
|
});
|
|
//入库单列表数据
|
let tableData = ref([]);
|
const tableRef = ref();
|
|
//列表的数据条数
|
const totalItems = ref<number>(0);
|
|
//缓存枚举
|
const enumList: any = cache.getCache('enumList');
|
console.log(enumList.inEnumOrderType)
|
|
// .inEnumOrderType
|
|
//获取PO单列表
|
const getTabelData = () => {
|
//判断创建时间是否有选择
|
if (formModel.value.CreateDate && formModel.value.CreateDate.length > 0) {
|
formModel.value.CreatedTimeBegin = formModel.value.CreateDate[0];
|
formModel.value.CreatedTimeEnd = '' //addDate(formModel.value.CreateDate[1], 1); //日期查询 结束时间 需要加一天
|
} else {
|
// 日历清空 再查询bug
|
if (formModel.value.CreatedTimeBegin || formModel.value.CreatedTimeEnd) {
|
formModel.value.CreatedTimeBegin = "";
|
formModel.value.CreatedTimeEnd = "";
|
}
|
}
|
//判断下发时间是否有选择
|
if (formModel.value.IssueDate && formModel.value.IssueDate.length > 0) {
|
formModel.value.IssueTimeBegin = formModel.value.IssueDate[0];
|
formModel.value.IssueTimeEnd = formModel.value.IssueDate[1];
|
} else {
|
// 日历清空 再查询bug
|
if (formModel.value.IssueTimeBegin || formModel.value.IssueTimeEnd) {
|
formModel.value.IssueTimeBegin = "";
|
formModel.value.IssueTimeEnd = "";
|
}
|
}
|
|
//其它入库入口
|
// if (titleAuthor.value == 1) { //免费入库单管理
|
// }
|
|
// if (titleAuthor.value == 2) { //订单入库管理
|
// }
|
|
// getPurchasePageForAllData(formModel.value)
|
// .then((res) => {
|
// if (res.code == 200) {
|
// const { data } = res;
|
// const result = data;
|
// result.rows.map(
|
// (item: { hasChildren: boolean }) => (item.hasChildren = true)
|
// );
|
// tableData.value = result.rows;
|
// totalItems.value = result.totalRows;
|
// orderType.value = formModel.value.MaterialTypeStaus;
|
// // 清除选中
|
// nextTick(() => {
|
// if (tableRef.value && typeof tableRef.value.clearSelection === 'function') {
|
// checkRows.value = [];
|
// tableRef.value.clearSelection();
|
// }
|
// })
|
// } else {
|
// ;
|
// }
|
// })
|
// .catch((err) => {
|
// console.log(err);
|
// ElMessage.error(JSON.stringify(err));
|
// });
|
};
|
getTabelData();
|
|
//重置搜索
|
const resetForm = () => {
|
formModel.value = {
|
WareMaterialCode: "",
|
WareMaterialName: "",
|
PurchaseNo: "",
|
CreatedUserName: "",
|
CreatedTimeBegin: "",
|
CreatedTimeEnd: "",
|
CreateDate: [],
|
IssueTimeBegin: "",
|
IssueTimeEnd: "",
|
IssueDate: [],
|
MaterialTypeStaus: "",
|
SourceBy: "",
|
WriteOffState: "",
|
signStatus: "",
|
status: '',
|
freeOrderType: "",
|
IsQueryAll: false, //是否显示全部数据
|
// LoginUserID: LoginUserID, //用户id
|
OrderMenuType: "",//判断是哪个菜单入库
|
Page: 1,
|
PageSize: 10,
|
poApprovalStatus:"",
|
keyCode:"",
|
IsDisable:''//是否作废
|
};
|
getTabelData();
|
};
|
// -----------------删除、导出操作--------------------------
|
//选中的行
|
const checkRows = ref<{ id: number }[]>([]);
|
// 选择
|
const handleSelectionChange = (val: any) => {
|
checkRows.value = val;
|
};
|
//导出PO单详情
|
const handExport = () => {
|
// rkExport(formModel.value)
|
// .then((res) => {
|
// const link = document.createElement("a"); //创建a标签
|
// let blob = new Blob([res], { type: "application/vnd.ms-excel" }); // response就是接口返回的文件流
|
// let objectUrl = URL.createObjectURL(blob);
|
// link.href = objectUrl;
|
// link.download = `入库管理导出${formatUtcToData(
|
// new Date().toString(),
|
// "YYYY-MM-DD hh:mm:ss"
|
// )}`; // 自定义文件名
|
// link.click(); // 下载文件
|
// URL.revokeObjectURL(objectUrl); // 释放内存
|
|
// }).catch((err) => ElMessage.error(JSON.stringify(err)));
|
|
|
//导出调用接口
|
// let entozh = entozhExcell
|
// const { PageNo, PageSize, ...rest } = formModel.value
|
// getPurchasePage({ Page: 1, PageSize: 1000000, ...rest }).then(res => {
|
// if(res.code==200){
|
// res.data.rows.forEach((item)=>{
|
// item.writeOffState = EnumWriteOffState.value.filter((v: any) => v.value == item.writeOffState)[0].title;
|
// item.sourceBy = sourceEnum.value.filter((v: any) => v.value == item.sourceBy)[0].title;
|
// })
|
// exportExcel(res.data.rows, entozh, "xlsx", `入库管理表${formatUtcToData(new Date().toString(), 'YYYY-MM-DD hh:mm:ss')}`);
|
// }
|
// })
|
// 后端导出-字段不全
|
// if (checkRows.value.length <= 0) {
|
// ElMessage.warning("请选择一个订单!");
|
// return
|
// }
|
// const arr = checkRows.value.reduce((curr, item) => {
|
// curr.push(item.purchaseNo);
|
// return curr;
|
// }, []);
|
// puchaseExport({ PurchaseNo: arr })
|
// .then((res) => {
|
// const link = document.createElement("a"); //创建a标签
|
// let blob = new Blob([res], { type: "application/vnd.ms-excel" }); // response就是接口返回的文件流
|
// let objectUrl = URL.createObjectURL(blob);
|
// link.href = objectUrl;
|
// link.download = `入库管理导出${formatUtcToData(
|
// new Date().toString(),
|
// "YYYY-MM-DD hh:mm:ss"
|
// )}`; // 自定义文件名
|
// link.click(); // 下载文件
|
// URL.revokeObjectURL(objectUrl); // 释放内存
|
// })
|
// .catch((err) => ElMessage.error(JSON.stringify(err)));
|
};
|
|
|
|
// -------------------获取PO单下物料详情-----------------------------------
|
//入库单下物料详情请求
|
const detailForm = ref({
|
WareMaterialCode: "",
|
PurchaseOrderId: "",
|
Page: 1,
|
PageSize: 10
|
});
|
|
// 物料详情抽屉
|
const drawerVisible = ref(false);
|
const drawerType = ref("drawerAll");
|
// const
|
//单号
|
const purchaseNo = ref("");
|
|
//打开抽屉
|
const openDrawer = (type: number, scope: any = {},entozhExcell?:any) => {
|
detailForm.value.PageNo = 1; //bug:点编辑-再点详情
|
detailForm.value.PageSize = 10; //bug:点编辑-再点详情
|
if(scope.purchaseNo){
|
title.value = `${scope.purchaseNo}`;
|
}
|
if(scope.orderNo){
|
title.value = `${scope.orderNo}`;
|
}
|
drawerType.value = "drawerAll";
|
//当前入库单号id
|
detailForm.value.PurchaseOrderId = scope.id;
|
//入库单
|
purchaseNo.value = scope.purchaseNo;
|
detailForm2.value.PurchaseNo = scope.purchaseNo;
|
//获取物料列表
|
getDetail();
|
drawerVisible.value = true;
|
|
// 根据状态转中文 保留3位小数
|
let scopetrans = JSON.parse(JSON.stringify(scope))
|
scopetrans.totalQuantity = Number(scopetrans.totalQuantity).toFixed(3)
|
scopetrans.deliveryQuantity = Number(scopetrans.deliveryQuantity).toFixed(3)
|
scopetrans.writeOffQuantity = Number(scopetrans.writeOffQuantity).toFixed(3)
|
scopetrans.goodsQuantity = Number(scopetrans.goodsQuantity).toFixed(3)
|
scopetrans.surplusQuantity = Number(scopetrans.surplusQuantity).toFixed(3)
|
let arrD2: string | any[] = []// sourceEnum.value.filter((v: any) => scopetrans.sourceBy == v.value)
|
if (arrD2.length > 0) {
|
scopetrans.sourceBy = arrD2[0].title
|
} else {
|
scopetrans.sourceBy = ''
|
}
|
let arrD: string | any[] = [] //EnumWriteOffState.value.filter((v: any) => scopetrans.writeOffState == v.value)
|
if (arrD.length > 0) {
|
scopetrans.writeOffState = arrD[0].title
|
} else {
|
scopetrans.writeOffState = ''
|
}
|
nextTick(() => {
|
proxy.$refs['propDetailRef'].openADialog(scopetrans, entozhExcell);
|
});
|
|
};
|
const detailCount2 = ref(0);
|
const detailForm2 = ref({
|
Page: 1,
|
PageSize: 10,
|
BatchNo: "",
|
PurchaseNo: "",
|
PurchaseNoAccurate: "",
|
WarematerialName: "",
|
WarematerialCode: "",
|
CreatedUserName: "",
|
ItemType: 1,
|
OrderType: "",
|
DateBegin: "",
|
DateEnd: "",
|
ReceiveDate: []
|
});
|
const drawerList2 = ref<DetailType[]>([]);
|
const openDrawer2 = async (param?: any) => {
|
if (!param) {
|
detailForm2.value.PageNo = 1;
|
detailForm2.value.PageSize = 10;
|
}
|
detailForm2.value.ItemType = 1;
|
if (detailForm2.value.PurchaseNo == '') {
|
drawerList2.value = [];
|
detailCount2.value = 0;
|
return
|
}
|
//获取物料列表
|
// detailForm2.value.PurchaseNoAccurate = detailForm2.value.PurchaseNo;
|
let { PurchaseNo, ...rest } = detailForm2.value;
|
|
|
|
loading.value = true;
|
|
var res = await pageWmsMaterial(Object.assign(
|
detailForm2.value
|
));
|
|
drawerList.value = res.data.result?.items ?? [];
|
//tableParams.value.total = res.data.result?.total;
|
detailCount.value = res.data.result?.total;
|
loading.value = false;
|
|
|
// getreceivingAndDeliverRecord({
|
// ...rest,
|
// 'PurchaseNoAccurate': PurchaseNo
|
// }).then((res: any) => {
|
// if (res.code == 200) {
|
// const { data } = res;
|
// const result = data;
|
// drawerList2.value = result.rows;
|
// detailCount2.value = result.totalRows;
|
// }
|
// });
|
};
|
|
//关闭抽屉
|
const handleDrawerClose = () => {
|
detailForm.value = {
|
WareMaterialCode: "",
|
PurchaseOrderId: "",
|
Page: 1,
|
PageSize: 10
|
};
|
deltailList.value = [];
|
detailCount.value = 0;
|
drawerList.value = [];
|
drawerList2.value = [];
|
detailCount2.value = 0;
|
drawerList2.value = [];
|
};
|
|
//物料详情类型
|
interface DetailType {
|
id: number;
|
barCode: string;
|
wareMaterialCode: string;
|
name: string;
|
signStatus: string;
|
category: string;
|
materialTypeName: string;
|
specificationModel: string;
|
long: number;
|
width: number;
|
high: number;
|
weight: number;
|
unit: string;
|
createdTime: string;
|
purchaseNo: string;
|
deliveryQuantity: number;
|
goodsQuantity: number;
|
surplusQuantity: number;
|
ebelp: string;
|
}
|
|
//入库单详情列表
|
const deltailList = ref<DetailType[]>([]);
|
//弹出层数据
|
const drawerList = ref<DetailType[]>([]);
|
|
//入库单详情列表数据条数
|
const detailCount = ref(0);
|
|
//弹出层标题
|
let title = ref("");
|
//获取入库单下物料详情
|
const getDetail = (callback?: any) => {
|
// getPurchaseDetailForAllData(detailForm.value)
|
// .then((res) => {
|
// if (res.code == 200) {
|
// const { data } = res;
|
// const result = data;
|
// deltailList.value = result.rows;
|
// drawerList.value = JSON.parse(JSON.stringify(deltailList.value));
|
// if (drawerType.value == "drawerGoodsQuantity") {
|
// drawerList.value = drawerList.value.filter(
|
// (x: DetailType) => x.goodsQuantity > 0
|
// );
|
// } else if (drawerType.value == "drawersurplusQuantity") {
|
// drawerList.value = drawerList.value.filter(
|
// (x: DetailType) => x.surplusQuantity > 0
|
// );
|
// }
|
// detailCount.value = result.totalRows;
|
// if (typeof callback === "function") {
|
// callback && callback();
|
// }
|
// } else {
|
// ElMessage.error(
|
// JSON.stringify(
|
// `获取入库单详情失败${res.code}:${JSON.stringify(res.message)}`
|
// )
|
// );
|
// }
|
// })
|
// .catch((err) => console.log(err));
|
|
|
detailForm2.value.WarematerialCode = detailForm.value.WareMaterialCode;
|
openDrawer2();
|
};
|
// ----------------新增、编辑-------------------------------
|
//窗口类型
|
const dialogType = ref("add");
|
|
const dialogVisible = ref(false);
|
|
//添加编辑表单ref
|
const dialogRef = ref();
|
|
//获取PO单
|
const getOrderNo = () => {
|
// getNoOrderNo()
|
// .then((res) => {
|
// if (res.code == 200) {
|
// addForm.value.purchaseNo = res.data;
|
// } else {
|
// ElMessage.error(
|
// `获取PO单${res?.code}:${JSON.stringify(res.message)}`
|
// );
|
// }
|
// })
|
// .catch((err) => ElMessage.error(JSON.stringify(err)));
|
};
|
|
//添加/编辑参数
|
let addForm = ref({
|
createdTime: "",
|
updatedTime: "",
|
createdUserName: "",
|
createdUserId: "",
|
purchaseNo: "",
|
purchaserUserId: 0,
|
basicExpressInfoCode: null,
|
materialType: "",//5
|
status: 0,
|
supplierCode: "",
|
supplierName: "",
|
remark: "",
|
deliveryType: 1,
|
EstimatedDate: "",
|
purchaseOrderDetails: [] as any[],
|
dI_NO: "",
|
sJ_NO: "",
|
machineToolTypeName: "",
|
machineToolNo: "",
|
freeOrderType: ""
|
});
|
|
// 特殊字符的验证
|
// 包含特殊字符返回true,不包含特殊字符返回false
|
const checkEspcial = (rule: any, value: any, callback: any) => {
|
if (!value) {
|
callback();
|
} else {
|
const reg = /[@$%*^:;:;~+=!!#^{}><.,,。]/g;
|
if (!reg.test(value.trim())) {
|
callback();
|
} else {
|
return callback(new Error("不能存在特殊符号"));
|
}
|
}
|
}
|
|
// 验证角色编号
|
var validatorCode = (rule: any, value: any, callback: any) => {
|
if (!value) {
|
callback();
|
} else {
|
const reg = /[\u4E00-\u9FA5]/g;
|
if (!reg.test(value)) {
|
callback();
|
} else {
|
return callback(new Error("单号不能存在汉字"));
|
}
|
}
|
};
|
|
//rules
|
const formRules = {
|
materialType: [
|
{ required: true, message: "订单类型不能为空", trigger: "blur" }
|
],
|
freeOrderType: [{ required: true, message: "免费件类型不能为空", trigger: "blur" }],
|
purchaseNo: [
|
{ required: true, message: "单号不能为空", trigger: "blur" },
|
{ validator: validatorCode, trigger: "blur" },
|
{ validator: checkEspcial, trigger: "blur" }
|
],
|
supplierCode: [
|
{ required: true, message: "供应商不能为空", trigger: "blur" }
|
],
|
EstimatedDate: [
|
{ required: true, message: "预计到达时间不能为空", trigger: "blur" }
|
],
|
dI_NO: [
|
{ required: true, message: "DI号不能为空", trigger: "blur" }
|
],
|
machineToolTypeName: [
|
{ required: true, message: "机床型号不能为空", trigger: "blur" }
|
]
|
};
|
//打开新增、编辑窗口
|
const openDialog = (type: number, scope: any = {}) => {
|
getClientList()
|
if (type == 1) {
|
dialogType.value = "add";
|
// getOrderNo();
|
} else {
|
if (scope.signStatus != '待收货') {
|
ElMessage.warning("只有待收货的订单才可编辑!");
|
return
|
}
|
addForm.value.purchaseNo = scope.purchaseNo;
|
addForm.value.materialType = Number(scope.deliveryType);
|
addForm.value.deliveryType = Number(scope.deliveryType);
|
// supplierName
|
let arr = clientEnum.value.filter((v: any) => v.name == scope.supplierName);
|
if (arr.length > 0) {
|
addForm.value.supplierCode = arr[0].code;
|
}
|
addForm.value.supplierName = scope.supplierName;
|
addForm.value.EstimatedDate = scope.estimatedDate;
|
|
addForm.value.remark = scope.remark;
|
dialogType.value = "edit";
|
detailForm.value.PurchaseOrderId = scope.id;
|
detailForm.value.materialType = Number(scope.deliveryType);
|
detailForm.value.PageSize = 1000;
|
//获取物料 - 回调函数替换定时器
|
getDetail(() => {
|
|
// 免费件用
|
addForm.value.freeOrderType = scope.freeOrderType;
|
// isShowBomBtn
|
addForm.value.dI_NO = scope.dI_NO;
|
addForm.value.sJ_NO = scope.sJ_NO;
|
addForm.value.machineToolTypeName = scope.machineToolTypeName;
|
addForm.value.machineToolNo = scope.machineToolNo;
|
|
deltailList.value.forEach((item) => {
|
// let dantaoNum1 = 0
|
// if(item.bomConverNumber && item.deliveryQuantity){
|
// dantaoNum1 = Number( (item.deliveryQuantity || 0 )/item.bomConverNumber).toFixed(3) || 0
|
// }
|
const obj = {
|
code: item.wareMaterialCode,
|
name: item.name,
|
specificationModel: item.specificationModel,
|
categoryName: item.category,
|
materialTypeIdName: item.materialTypeName,
|
weight: item.weight,
|
unit: item.unit,
|
long: item.long,
|
width: item.width,
|
high: item.high,
|
deliveryQuantity: item.deliveryQuantity,//数量
|
price: item.price,
|
barNo: item.barNo,
|
machine: item.machine,
|
ebelp: item.ebelp,
|
id: item.id,
|
remark: addForm.value.remark,
|
materialType: item.deliveryType,
|
deliveryType: item.deliveryType,
|
//免费件
|
bomConverNumber: item.bomConverNumber, //免费件 套数
|
boM_NO: item.boM_NO, //BOM编号
|
dI_NO: addForm.value.dI_NO,
|
sJ_NO: addForm.value.sJ_NO,
|
// dantaoNum:dantaoNum1, //免费件 套数
|
machineToolNo: item.detailsMachineToolNo || addForm.value.machineToolNo || '',
|
machineToolTypeName: item.detailsMachineToolTypeName || addForm.value.machineToolTypeName || '',
|
diCustomCode: item.diCustomCode || '',
|
diCustomChinaName: item.diCustomChinaName || '',
|
diRelationID: item.diRelationID || '',
|
detailsDI_NO: item.detailsDI_NO || '',
|
|
};
|
warehousOrderDetails.value.push(obj);
|
});
|
|
});
|
}
|
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 = () => {
|
addForm.value = {
|
createdTime: "",
|
updatedTime: "",
|
createdUserName: "",
|
createdUserId: "",
|
purchaseNo: "",
|
purchaserUserId: 0,
|
basicExpressInfoCode: null,
|
materialType: "",//5
|
status: 0,
|
supplierCode: "",
|
supplierName: "",
|
remark: "",
|
deliveryType: 1,
|
EstimatedDate: "",
|
purchaseOrderDetails: [] as any[],
|
dI_NO: "",
|
sJ_NO: "",
|
machineToolTypeName: "",
|
machineToolNo: "",
|
freeOrderType: ""
|
};
|
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 confirm = () => {
|
console.log("确认")
|
let idx = warehousOrderDetails.value.findIndex(
|
(v) => v.ebelp == "" || v.ebelp == undefined
|
);
|
if (idx > -1) {
|
ElMessage.warning("请输入行号");
|
return;
|
}
|
let isNext = "";
|
warehousOrderDetails.value.forEach((item) => {
|
const arr: any = warehousOrderDetails.value.filter(
|
(detail) => detail.ebelp == item.ebelp
|
);
|
if (arr.length > 1) {
|
isNext = `行号:${arr[0].ebelp}不能相同`;
|
return;
|
}
|
});
|
if (isNext != "") {
|
ElMessage.warning(isNext);
|
return;
|
}
|
|
let idx2 = warehousOrderDetails.value.findIndex(
|
(v) =>
|
v.deliveryQuantity == "" ||
|
v.deliveryQuantity == undefined ||
|
v.deliveryQuantity <= 0
|
);
|
if (idx2 > -1) {
|
ElMessage.warning("数量不合规范!");
|
return;
|
}
|
addForm.value.purchaseOrderDetails = [];
|
// addForm.value.createdUserId = store.state.login.userInfo.id;
|
// addForm.value.createdUserName = store.state.login.userInfo.name;
|
// addForm.value.createdTime = formatUtcToData(
|
// new Date().toString(),
|
// "YYYY-MM-DD hh:mm:ss"
|
// );
|
// addForm.value.updatedTime = formatUtcToData(
|
// new Date().toString(),
|
// "YYYY-MM-DD hh:mm:ss"
|
// );
|
warehousOrderDetails.value.forEach((item) => {
|
// if(item.dantaoNum){
|
// item.bomConverNumber = Number(item.deliveryQuantity/item.dantaoNum).toFixed(3) || 0;
|
// }else{
|
// item.bomConverNumber = ""
|
// }
|
const obj = {
|
// createdUserId: store.state.login.userInfo.id,
|
// createdUserName: store.state.login.userInfo.name,
|
// createdTime: formatUtcToData(
|
// new Date().toString(),
|
// "YYYY-MM-DD hh:mm:ss"
|
// ),
|
// updatedTime: formatUtcToData(
|
// new Date().toString(),
|
// "YYYY-MM-DD hh:mm:ss"
|
// ),
|
purchaseOrderId: 0,
|
warematerialCode: item.code,
|
barcode: item.barCode,
|
status: 0,
|
id: item.id || "",
|
deliveryQuantity: item.deliveryQuantity,
|
price: item.price,
|
barNo: item.barNo,
|
machine: item.machine,
|
remark: addForm.value.remark,
|
ebelp: item.ebelp,
|
materialType: item.deliveryType,
|
deliveryType: item.deliveryType,
|
// 给免费件用
|
bOM_NO: item.bomCode, //bom号
|
bomConverNumber: item.bomConverNumber, //套数
|
machineToolNo: item.machineToolNo || addForm.value.machineToolNo || '',
|
machineToolTypeName: item.machineToolTypeName || addForm.value.machineToolTypeName || '',
|
sJ_NO: addForm.value.sJ_NO || '',
|
dI_NO: item.dI_NO || addForm.value.dI_NO || '',
|
freeOrderType: addForm.value.freeOrderType || '',
|
boM_NO: item.boM_NO || '',
|
diRelationID: item.diRelationID || '',
|
detailsDI_NO: item.detailsDI_NO || '',
|
diCustomCode: item.diCustomCode || '',
|
diCustomChinaName: item.diCustomChinaName || '',
|
clientCode: item.diCustomCode || '',
|
clientChinaName: item.diCustomChinaName || '',
|
};
|
addForm.value.purchaseOrderDetails.push(obj);
|
});
|
|
dialogRef.value.validate((vali: any) => {
|
if (vali) {
|
//添加
|
if (dialogType.value == "add") {
|
// addPurchase(addForm.value)
|
// .then((res) => {
|
// if (res.code == 200) {
|
// ElMessage.success("添加成功");
|
// getTabelData();
|
// dialogVisible.value = false;
|
// } else {
|
// addForm.value.purchaseOrderDetails = [];
|
// ;
|
// }
|
// })
|
// .catch((err) => {
|
// addForm.value.purchaseOrderDetails = [];
|
// console.log(err);
|
// });
|
} else {
|
// updatePurchase(addForm.value)
|
// .then((res) => {
|
// if (res.code == 200) {
|
// ElMessage.success("编辑成功");
|
// getTabelData();
|
// dialogVisible.value = false;
|
// } else {
|
// addForm.value.purchaseOrderDetails = [];
|
// ;
|
// }
|
// })
|
// .catch((err) => {
|
// addForm.value.purchaseOrderDetails = [];
|
// console.log(err);
|
// });
|
}
|
} else {
|
ElMessage.warning("表单验证失败");
|
}
|
});
|
};
|
// -----------------添加物料操作-------------------------
|
//物料基础数据窗口
|
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;
|
|
|
// getMaterialInfoList(materialForm.value)
|
// .then((res) => {
|
// if (res.code == 200) {
|
// const { data } = res;
|
// const result = data;
|
// materialList.value = result.rows;
|
// materialTotal.value = result.totalRows;
|
// } else {
|
// ;
|
// }
|
// })
|
// .catch((err) => {
|
// console.log(err);
|
// ElMessage.error(JSON.stringify(err));
|
// });
|
};
|
|
//重置物料
|
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: { 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();
|
};
|
|
//打开窗口
|
const openAccountDialog = (param?: any) => {
|
if (checkRows.value.length != 1) {
|
ElMessage.warning("只能选择一个!");
|
return;
|
}
|
// PO单 STO 免费件
|
if (checkRows.value[0].deliveryType == 1 || checkRows.value[0].deliveryType == 22 || checkRows.value[0].deliveryType == 5) {
|
// MaterialType: 1,
|
console.log(checkRows.value[0].deliveryType)
|
} else {
|
ElMessage.warning("此单据类型不能用于核销!");
|
return;
|
}
|
|
proxy.$refs["propAddRef"].openADialog(param, checkRows.value);
|
};
|
|
|
//供应商列表枚举
|
const clientEnum = ref([]);
|
//获取供应商列表
|
const getClientList = () => {
|
// getSupplierList({ Page: 1, PageSize: 10000 })
|
// .then((res) => {
|
// if (res.code == 200) {
|
// clientEnum.value = res.data.rows;
|
// } else {
|
// ;
|
// }
|
// })
|
// .catch((err) => {
|
// ElMessage.error(err);
|
// });
|
};
|
getClientList()
|
// 公司名称
|
const companyName = ref('')
|
watch(() => addForm.value.supplierCode, (newVal) => {
|
let str = clientEnum.value.filter((v: any) => v.code == newVal)
|
if (str.length > 0) {
|
companyName.value = str[0].name;
|
addForm.value.supplierName = str[0].name;
|
} else {
|
companyName.value = '';
|
addForm.value.supplierName = '';
|
}
|
})
|
|
//打开窗口
|
const openHxRecordDialog = (param?: any) => {
|
if (param.writeOffQuantity <= 0) {
|
return
|
}
|
proxy.$refs["propHxRecordRef"].openDrawer2(param);
|
};
|
|
|
|
// 上传窗口
|
const uploadVisible2 = ref(false);
|
//打开导入窗口
|
const openUploadDialog2 = (param: any) => {
|
uploadVisible2.value = true;
|
};
|
//关闭窗口
|
const closeUploadDialog2 = () => {
|
getTabelData();
|
};
|
|
|
//BOM
|
// const bomIssue = () => {
|
// proxy.$refs["propAddRefBom"].openADialog(warehousOrderDetails.value,1);
|
// };
|
|
//BOM
|
const diwhIssue = () => {
|
if(!isShowBomBtn.value){
|
ElMessage.warning("免费件类型必须是PR2类型!");
|
return
|
}
|
proxy.$refs["propAddRefDiwh"].openADialog(warehousOrderDetails.value, 1);
|
};
|
|
|
//BOM
|
const confirmAddMaterialBom = (arrC: any) => {
|
// warehousOrderDetails.value = arrC;
|
warehousOrderDetails.value.push(...arrC);
|
};
|
|
|
// 监听免费件类型
|
// watch(
|
// () => addForm.value.freeOrderType,
|
// (newVal, oldVal) => {
|
// let strArr = enumBOMFreeOrderTypeList.value.filter((v: any) => v.value == newVal);
|
// if (strArr.length > 0) {
|
// addForm.value.sJ_NO = "";
|
// isShowBomBtn.value = 1; //显示PR2
|
// } else {
|
// isShowBomBtn.value = 0;
|
// addForm.value.dI_NO = "";
|
// }
|
// }
|
// );
|
|
|
|
// 切换订单类型 清除物料容器
|
const changMfj = () => {
|
warehousOrderDetails.value = []
|
}
|
const changDdlx = () => {
|
warehousOrderDetails.value = []
|
}
|
|
//作废
|
const handleBatchDeleteZf = (type?: any, param?: any) => {
|
const handleArr: number[] = [];
|
checkRows.value.forEach((item) => {
|
handleArr.push(item.id);
|
});
|
proxy.$refs['propZfRef'].openEditDialog('作废无单据入库单', handleArr);
|
};
|
// 暴露方法
|
defineExpose({ openDialog ,openDrawer});
|
</script>
|
<style lang="less" scoped>
|
.detailBoxWrap{
|
margin: 10px;
|
}
|
.msi-form{
|
margin-top: 10px;
|
}
|
.msi-form{
|
margin-bottom: 10px
|
}
|
</style>
|